aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite
diff options
context:
space:
mode:
authorRong Xu <xur@google.com>2014-07-21 23:47:22 (GMT)
committerRong Xu <xur@google.com>2014-07-29 22:31:03 (GMT)
commit38a8aecfb882072900434499696b5c32a2274515 (patch)
tree2aac97f0ae24b03cd98c1a06e989c031c173f889 /gcc-4.9/gcc/testsuite
parentc231900e5dcc14d8296bd9f62b45997a49d4d5e7 (diff)
downloadtoolchain_gcc-38a8aecfb882072900434499696b5c32a2274515.zip
toolchain_gcc-38a8aecfb882072900434499696b5c32a2274515.tar.gz
toolchain_gcc-38a8aecfb882072900434499696b5c32a2274515.tar.bz2
[4.9] Switch gcc-4.9 to use google/gcc-4_9 branch.
This source drop uses svn version r212828 of google/gcc-4.9 branch. We also cherry-picked r213062, r213063 and r213064 to fix windows build issues. All gcc-4.9 patches before July 3rd are ported to google/gcc-4.9. The following prior commits has not been merged to google branch yet. (They are included in this commit). e7af147f979e657fe2df00808e5b4319b0e088c6, baf87df3cb2683649ba7e9872362a7e721117c23, and c231900e5dcc14d8296bd9f62b45997a49d4d5e7. Change-Id: I4bea3ea470387ff751c2be4cb0d4a12059b9299b
Diffstat (limited to 'gcc-4.9/gcc/testsuite')
-rw-r--r--gcc-4.9/gcc/testsuite/ChangeLog582
-rw-r--r--gcc-4.9/gcc/testsuite/ChangeLog-20133197
-rw-r--r--gcc-4.9/gcc/testsuite/ada/.gitignore2
-rw-r--r--gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr57541-2.c15
-rwxr-xr-xgcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr57541.c13
-rw-r--r--gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr58942.c8
-rw-r--r--gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr61191.c10
-rw-r--r--gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/CK/invalid_sync.cc9
-rw-r--r--gcc-4.9/gcc/testsuite/c-c++-common/gomp/pr59073.c12
-rw-r--r--gcc-4.9/gcc/testsuite/c-c++-common/gomp/pr60823-1.c19
-rw-r--r--gcc-4.9/gcc/testsuite/c-c++-common/gomp/pr60823-2.c44
-rw-r--r--gcc-4.9/gcc/testsuite/c-c++-common/gomp/pr60823-3.c32
-rw-r--r--gcc-4.9/gcc/testsuite/c-c++-common/gomp/pr61486-1.c13
-rw-r--r--gcc-4.9/gcc/testsuite/c-c++-common/gomp/pr61486-2.c458
-rw-r--r--gcc-4.9/gcc/testsuite/c-c++-common/torture/pr60971.c34
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-aggr1.C17
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-ptrmem2.C13
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-template7.C32
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/defaulted49.C15
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist84.C17
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist86.C18
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const3.C38
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template13.C20
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this18.C30
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/nsdmi-template10.C14
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/nsdmi-template11.C15
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/nsdmi-template12.C17
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/nsdmi-template13.C11
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/nsdmi-template9.C16
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/pr58155.C13
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/pr58781.C18
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/pr60249.C6
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/ref-qual15.C13
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/sfinae50.C41
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic158.C24
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic159.C14
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic160.C49
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp1y/pr59867.C52
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/debug/dwarf2/cdtor-1.C2
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/debug/dwarf2/dwarf4-nested.C55
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/debug/dwarf2/dwarf4-typedef.C2
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/debug/dwarf2/imported-decl-2.C32
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/debug/dwarf2/pr61433.C23
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/eh/spec3-static.C25
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/ext/complit14.C11
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/gcov/gcov-7.C28
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/guality/guality.exp3
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/init/copy7.C9
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-11.C4
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-25.C2
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-31.C23
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-9.C2
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60600.C4
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/ipa/pr61085.C33
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/ipa/pr61160-1.C31
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/ipa/pr61160-2.C43
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/ipa/pr61160-3.C37
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/ipa/pr61540.C38
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/opt/pr60849.C13
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/opt/pr60912.C18
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/opt/pr61456.C26
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/opt/pr61654.C27
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/opt/typeinfo1.C27
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/other/no-strict-enum-precision-1.C35
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/other/no-strict-enum-precision-2.C37
-rwxr-xr-xgcc-4.9/gcc/testsuite/g++.dg/other/no-strict-enum-precision-3.C21
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/other/sized-delete-1.C14
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/plugin/selfassign.c4
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/pr60969.C32
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/pr61094.C31
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/pr61289-2.c62
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/pr61289.C63
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/rtti/repo1.C1
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/template/conv14.C30
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/template/local-fn1.C8
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/template/pr61537.C23
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/template/ptrmem27.C22
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/template/ptrmem28.C10
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/thunk_section_name.C30
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/tls/thread_local9.C23
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/torture/pr60854.C13
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/torture/pr60895.C32
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_1.C45
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_2.C25
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_3.C25
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_4.C41
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_5.C41
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_6.C53
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_7.C55
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_8.C19
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_split_functions_1.C63
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/indir-call-prof-2_0.C35
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/indir-call-prof_0.C39
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/inline_mismatch_args_0.C36
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/lipo.exp60
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/partition1_0.C54
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/partition2_0.C16
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/partition3_0.C18
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/vcall1_0.C41
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/vcall1_1.C23
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/vcall1_2.C31
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/tree-prof/morefunc.C55
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/tree-prof/reorder.C48
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/tree-prof/reorder_class1.h11
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/tree-prof/reorder_class2.h12
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/tree-prof/tree-prof.exp4
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/tree-ssa/forwprop-switch.C24
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/tree-ssa/pr61009.C53
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/vect/pr60836.cc39
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/warn/Weff1.C5
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/warn/Wnull-conversion-1.C2
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/warn/Wnull-conversion-2.C58
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/warn/Wself-assign-1.C54
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/warn/Wself-assign-3.C35
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/warn/Wself-assign-4.C48
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/warn/Wself-assign-5.C38
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/warn/Wself-assign-non-pod-1.C54
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/warn/Wself-assign-non-pod-3.C35
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/warn/Wself-assign-non-pod-4.C48
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/warn/Wself-assign-non-pod-5.C38
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/warn/Wshadow-compatible-local-1.C63
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/warn/Wshadow-local-1.C35
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/warn/Wshadow-local-2.C63
-rw-r--r--gcc-4.9/gcc/testsuite/g++.old-deja/g++.benjamin/15309-1.C21
-rw-r--r--gcc-4.9/gcc/testsuite/g++.old-deja/g++.benjamin/15309-2.C10
-rw-r--r--gcc-4.9/gcc/testsuite/g++.old-deja/g++.ext/memconst.C2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr61684.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.c-torture/execute/20140425-1.c23
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr60960.c38
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr61306-1.c39
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr61306-2.c40
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr61306-3.c13
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr61673.c50
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr61725.c14
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/Wshadow-compatible-local-1.c36
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/Wshadow-local-1.c23
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/Wshadow-local-2.c49
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/Wshadow-local-3.c9
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/autopar/outer-1.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/autopar/outer-3.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/autopar/outer-4.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/autopar/outer-5.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/autopar/parallelization-1.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-1.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-1char.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-1short.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-2.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-2char.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-2short.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-3.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-6.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-7.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-8.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-9.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/debug/dwarf2/mlt1.c32
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/debug/dwarf2/mlt2.c31
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/fstack-protector-strong.c5
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/graphite/pr55022.c27
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/graphite/pr59817-1.c16
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/graphite/pr59817-2.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/graphite/pr60979.c37
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/guality/guality.exp3
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/lto/pr60720_0.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/lto/pr60720_1.c1
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/lto/pr60911_0.c21
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/lto/pr61526_0.c6
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/lto/pr61526_1.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/plugin/selfassign.c4
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/pr47793.c1
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/pr53265.c4
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/pr57233.c171
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/pr60844.c16
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/pr60866.c18
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/pr61045.c12
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/pr61053.c75
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/pr61060.c19
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/pr61158.c12
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/pr61583.c18
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/record-compilation-info-in-elf-1.c16
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/torture/pr56965-1.c32
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/torture/pr56965-2.c34
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/torture/pr57864.c37
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/torture/pr60891.c23
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/torture/pr60903.c22
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/torture/pr60930.c22
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/torture/pr61010.c8
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/torture/pr61383-1.c35
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/torture/pr61452.c31
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/torture/pr61681.c37
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indircall-1a.c1
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/inliner-1.c4
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/bb-reorg_0.c39
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/ic-misattribution-1_0.c19
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/ic-misattribution-1_1.c18
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/indir-call-prof-single_0.c43
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/indir-call-prof_0.c23
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/indir-call-prof_1.c23
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/inliner-1_0.c42
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/lipo.exp60
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/lipo_inline1_0.c29
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/lipo_inline1_1.c22
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/lipo_inline1_2.c6
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/pr34999_0.c45
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/pr45354_0.c43
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/pr47187_0.c23
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/stringop-1_0.c22
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/stringop-2_0.c20
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/tracer-1_0.c18
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/update-cunroll-2_0.c21
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/update-loopch_0.c20
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/update-tailcall_0.c20
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/val-prof-1_0.c22
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/val-prof-2_0.c32
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/val-prof-3_0.c32
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/val-prof-4_0.c32
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/val-prof-5_0.c17
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/val-prof-6_0.c20
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/val-prof-7_0.c26
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/wcoverage-mismatch_0.c20
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/merge_block.c21
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ivopt_1.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ivopt_2.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ivopt_4.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ivopts-lt.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/loop-16.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/predcom-1.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/predcom-4.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/predcom-5.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/prefetch-7.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/prefetch-8.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/prefetch-9.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/vrp93.c36
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/typeof-2.c28
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/unused-8b.c4
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/var-expand1.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/vect/pr60841.c183
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/vect/pr61680.c51
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/vect/vect-reduc-sad.c54
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/vect/vect-singleton_1.c38
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/vect/vect.exp25
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/wself-assign-1.c27
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/wself-assign-2.c24
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.misc-tests/help.exp2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/aapcs64/type-def.h7
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-13.c59
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-14.c35
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-15.c39
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/pr61325.c19
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/scalar_intrinsics.c26
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vector_intrinsics.c14
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlal_high_lane_s16.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlal_high_lane_s32.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlal_high_laneq_s16.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlal_high_laneq_s32.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlal_lane_s16.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlal_lane_s32.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlal_laneq_s16.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlal_laneq_s32.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlalh_lane_s16.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlals_lane_s32.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlsl_high_lane_s16.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlsl_high_lane_s32.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlsl_high_laneq_s16.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlsl_high_laneq_s32.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlsl_lane_s16.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlsl_lane_s32.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlsl_laneq_s32.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlslh_lane_s16.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlsls_lane_s32.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmulh_laneq_s16.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmulh_laneq_s32.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmulhh_lane_s16.c36
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmulhq_laneq_s16.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmulhq_laneq_s32.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmulhs_lane_s32.c34
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmull_high_lane_s16.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmull_high_lane_s32.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmull_high_laneq_s16.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmull_high_laneq_s32.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmull_lane_s16.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmull_lane_s32.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmull_laneq_s16.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmull_laneq_s32.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmullh_lane_s16.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmulls_lane_s32.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqrdmulh_laneq_s16.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqrdmulh_laneq_s32.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqrdmulhh_lane_s16.c35
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqrdmulhq_laneq_s16.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqrdmulhq_laneq_s32.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqrdmulhs_lane_s32.c35
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/alpha/pr61586.c10
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/arm/pr48252.c13
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/avr/pr60991.c21
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/avr/torture/pr61055.c88
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/avr/torture/pr61443.c134
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/avx-pr57233.c16
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-pr57233.c16
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddb-3.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddw-3.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpmullw-3.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsraw-3.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsrlw-3.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsubb-3.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsubw-3.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-pr57233.c16
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-andn-1a.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-andn-2a.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-bextr-1a.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-bextr-2a.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-blsi-1a.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-blsi-2a.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-blsmsk-1a.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-blsmsk-2a.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-blsr-1a.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-blsr-2a.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-tzcnt-1a.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-tzcnt-2a.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/bmi2-bzhi32-1a.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/bmi2-bzhi64-1a.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/bmi2-pdep32-1a.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/bmi2-pdep64-1a.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/bmi2-pext32-1a.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/bmi2-pext64-1a.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/cadd.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/clearcap.map3
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/clearcapv2.map7
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/i386.exp36
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-1.c23
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-2.c21
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-3.c21
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-4.c22
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-5.c22
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-6.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-7.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-8.c29
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-force-no-patching.c27
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-force-patching.c20
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-sibling-call.c26
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/pie-copyrelocs-1.c13
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/pie-copyrelocs-2.c13
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/pr50038.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/pr57233.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/pr60868.c10
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/pr60901.c17
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/pr60902.c32
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/pr60909-1.c11
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/pr60909-2.c11
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/pr61423.c38
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/pr61446.c14
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/pr61599-1.c13
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/pr61599-2.c13
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/recip-vec-sqrtf-avx.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/sse2-pr57233.c16
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/sse2-unaligned-mov.c20
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/sse4_1-roundss-1.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/sse4_1-roundss-2.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/sse4_1-roundss-3.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/vec-may_alias.c25
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/wmul-1.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/xop-pr57233.c16
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/powerpc/bcd-1.c27
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/powerpc/bcd-2.c44
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/powerpc/bcd-3.c103
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/powerpc/dfp-builtin-1.c88
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/powerpc/dfp-builtin-2.c88
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/powerpc/extend-divide-1.c34
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/powerpc/extend-divide-2.c34
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/powerpc/htm-ttest.c14
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/powerpc/pack01.c91
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/powerpc/pack02.c96
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/powerpc/pack03.c88
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/powerpc/pr60735.c11
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/powerpc/tfmode_off.c1
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/powerpc/ti_math1.c20
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/powerpc/ti_math2.c73
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/s390/htm-nofloat-2.c55
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/x86_64/abi/avx/abi-avx.exp16
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp16
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/x86_64/abi/callabi/leaf-2.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/allocatable_function_8.f9059
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/arrayio_14.f9018
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/arrayio_15.f9011
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/arrayio_16.f9013
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/associate_16.f9023
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/associate_17.f9012
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/class_array_15.f033
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/cray_pointers_10.f9018
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/default_format_denormal_2.f904
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/finalize_25.f9055
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/gomp/affinity-1.f9019
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/gomp/allocatable_components_1.f9010
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/gomp/appendix-a/a.31.3.f902
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/gomp/associate1.f9083
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/gomp/declare-simd-1.f909
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/gomp/depend-1.f9013
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/gomp/intentin1.f9016
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/gomp/omp_do_concurrent.f9013
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/gomp/openmp-simd-1.f90137
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/gomp/openmp-simd-2.f9028
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/gomp/openmp-simd-3.f9028
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/gomp/proc_ptr_2.f9014
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/gomp/reduction1.f9068
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/gomp/reduction3.f908
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/gomp/target1.f90520
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/gomp/target2.f9074
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/gomp/target3.f9012
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/gomp/udr1.f9041
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/gomp/udr2.f9053
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/gomp/udr3.f9075
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/gomp/udr4.f9074
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/gomp/udr5.f9059
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/gomp/udr6.f90205
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/gomp/udr7.f9090
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/gomp/udr8.f90351
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/graphite/pr59817.f14
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/guality/guality.exp3
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/list_read_13.f13
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/nint_2.f903
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/oldstyle_5.f8
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/openmp-define-3.f902
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/round_4.f901
-rw-r--r--gcc-4.9/gcc/testsuite/gnat.dg/aliasing1.adb2
-rw-r--r--gcc-4.9/gcc/testsuite/gnat.dg/enum3.adb23
-rw-r--r--gcc-4.9/gcc/testsuite/gnat.dg/opt38.adb9
-rw-r--r--gcc-4.9/gcc/testsuite/gnat.dg/opt38_pkg.adb33
-rw-r--r--gcc-4.9/gcc/testsuite/gnat.dg/opt38_pkg.ads5
-rw-r--r--gcc-4.9/gcc/testsuite/gnat.dg/opt39.adb31
-rw-r--r--gcc-4.9/gcc/testsuite/gnat.dg/overflow_fixed.adb19
-rw-r--r--gcc-4.9/gcc/testsuite/lib/asan-dg.exp6
-rw-r--r--gcc-4.9/gcc/testsuite/lib/clearcap.exp58
-rw-r--r--gcc-4.9/gcc/testsuite/lib/gcov.exp2
-rw-r--r--gcc-4.9/gcc/testsuite/lib/profopt.exp76
-rw-r--r--gcc-4.9/gcc/testsuite/lib/target-supports-dg.exp19
-rw-r--r--gcc-4.9/gcc/testsuite/lib/target-supports.exp53
-rw-r--r--gcc-4.9/gcc/testsuite/lib/target-supports.exp.orig5791
-rw-r--r--gcc-4.9/gcc/testsuite/lib/ubsan-dg.exp6
437 files changed, 14951 insertions, 6234 deletions
diff --git a/gcc-4.9/gcc/testsuite/ChangeLog b/gcc-4.9/gcc/testsuite/ChangeLog
index 1047030..20212cd 100644
--- a/gcc-4.9/gcc/testsuite/ChangeLog
+++ b/gcc-4.9/gcc/testsuite/ChangeLog
@@ -1,3 +1,585 @@
+2014-07-10 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/opt39.adb: New test.
+
+2014-07-09 Edward Smith-Rowland <3dw4rd@verizon.net>
+
+ PR c++/58155 - -Wliteral-suffix warns about tokens which are skipped
+ g++.dg/cpp0x/pr58155.C: New.
+
+2014-07-09 Alan Lawrence <alan.lawrence@arm.com>
+
+ Backport r211369 from trunk.
+ 2014-06-09 Alan Lawrence <alan.lawrence@arm.com>
+
+ PR target/61062
+ * gcc.target/arm/pr48252.c (main): Expect same result as endian-neutral.
+
+2014-07-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/61673
+ * gcc.c-torture/execute/pr61673.c: New test.
+
+2014-07-08 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/61680
+ * gcc.dg/vect/pr61680.c: New testcase.
+
+ PR tree-optimization/61681
+ * gcc.dg/torture/pr61681.c: New testcase.
+
+2014-07-08 Alan Lawrence <alan.lawrence@arm.com>
+
+ Backport r211502 from mainline.
+ 2014-06-10 Alan Lawrence <alan.lawrence@arm.com>
+
+ PR target/59843
+ * gcc.dg/vect/vect-singleton_1.c: New file.
+
+2014-07-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/61725
+ * gcc.dg/tree-ssa/vrp93.c: New test.
+ * gcc.c-torture/execute/pr61725.c: New test.
+
+2014-07-07 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/61459
+ PR fortran/58883
+ * gfortran.dg/allocatable_function_8.f90 : New test
+
+2014-07-07 Dominique d'Humieres <dominiq@lps.ens.fr>
+ Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/41936
+ * gfortran.dg/class_array_15.f03: Check memory leaks.
+
+2014-07-06 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ Backport from mainline.
+ PR libgfortran/61640
+ * gfortran.dg/arrayio_16.f90: New test.
+
+2014-07-04 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/61654
+ * g++.dg/opt/pr61654.C: New test.
+
+ PR tree-optimization/61684
+ * gcc.c-torture/compile/pr61684.c: New test.
+
+ PR c++/61382
+ Backport from mainline
+ 2014-06-05 Andreas Schwab <schwab@suse.de>
+
+ * g++.dg/cpp0x/initlist86.C (main): Initialize i.
+
+2014-07-02 Jakub Jelinek <jakub@redhat.com>
+ Fritz Reese <Reese-Fritz@zai.com>
+
+ * gfortran.dg/oldstyle_5.f: New test.
+
+2014-07-01 Paul Pluzhnikov <ppluzhnikov@google.com>
+
+ PR c++/58753
+ PR c++/58930
+ PR c++/58704
+
+ Backported from mainline
+ 2014-05-20 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * g++.dg/cpp0x/nsdmi-template11.C: New.
+ * g++.dg/cpp0x/nsdmi-template12.C: Likewise.
+ * g++.dg/cpp0x/nsdmi-template13.C: Likewise.
+
+2014-06-28 Edward Smith-Rowland <3dw4rd@verizon.net>
+
+ PR c++/58781
+ PR c++/60249
+ PR c++/59867
+ * testsuite/g++.dg/cpp0x/pr58781.C: New.
+ * testsuite/g++.dg/cpp0x/pr60249.C: New.
+ * testsuite/g++.dg/cpp1y/pr59867.C: New.
+
+2014-06-30 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ * gfortran.dg/round_4.f90: Skip for powerpc*-*-linux* since the
+ test requires greater precision than the current PowerPC long
+ double implementation supports.
+
+2014-06-30 Jakub Jelinek <jakub@redhat.com>
+
+ Backported from mainline
+ 2014-06-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/57233
+ PR tree-optimization/61299
+ * gcc.dg/pr57233.c: New test.
+ * gcc.target/i386/pr57233.c: New test.
+ * gcc.target/i386/sse2-pr57233.c: New test.
+ * gcc.target/i386/avx-pr57233.c: New test.
+ * gcc.target/i386/avx2-pr57233.c: New test.
+ * gcc.target/i386/avx512f-pr57233.c: New test.
+ * gcc.target/i386/xop-pr57233.c: New test.
+
+ 2014-06-24 Jakub Jelinek <jakub@redhat.com>
+
+ * gfortran.dg/gomp/udr2.f90 (f7, f9): Add !$omp parallel with
+ reduction clause.
+ * gfortran.dg/gomp/udr4.f90 (f4): Likewise.
+ Remove Label is never defined expected error.
+ * gfortran.dg/gomp/udr8.f90: New test.
+
+ 2014-06-18 Jakub Jelinek <jakub@redhat.com>
+
+ * gfortran.dg/gomp/declare-simd-1.f90: New test.
+ * gfortran.dg/gomp/depend-1.f90: New test.
+ * gfortran.dg/gomp/target1.f90: New test.
+ * gfortran.dg/gomp/target2.f90: New test.
+ * gfortran.dg/gomp/target3.f90: New test.
+ * gfortran.dg/gomp/udr4.f90: Adjust expected diagnostics.
+ * gfortran.dg/openmp-define-3.f90: Expect _OPENMP 201307 instead of
+ 201107.
+
+ 2014-06-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR fortran/60928
+ * gfortran.dg/gomp/allocatable_components_1.f90: Remove dg-error
+ directives.
+ * gfortran.dg/gomp/associate1.f90: New test.
+ * gfortran.dg/gomp/intentin1.f90: New test.
+ * gfortran.dg/gomp/openmp-simd-1.f90: New test.
+ * gfortran.dg/gomp/openmp-simd-2.f90: New test.
+ * gfortran.dg/gomp/openmp-simd-3.f90: New test.
+ * gfortran.dg/gomp/proc_ptr_2.f90: New test.
+
+ 2014-06-09 Jakub Jelinek <jakub@redhat.com>
+
+ * gfortran.dg/gomp/udr6.f90 (f1, f2, f3): Use complex(kind=8)
+ instead of complex(kind=16).
+
+ 2014-06-06 Jakub Jelinek <jakub@redhat.com>
+
+ * gfortran.dg/gomp/allocatable_components_1.f90: Adjust for
+ reduction clause diagnostic changes.
+ * gfortran.dg/gomp/appendix-a/a.31.3.f90: Likewise.
+ * gfortran.dg/gomp/reduction1.f90: Likewise.
+ * gfortran.dg/gomp/reduction3.f90: Likewise.
+ * gfortran.dg/gomp/udr1.f90: New test.
+ * gfortran.dg/gomp/udr2.f90: New test.
+ * gfortran.dg/gomp/udr3.f90: New test.
+ * gfortran.dg/gomp/udr4.f90: New test.
+ * gfortran.dg/gomp/udr5.f90: New test.
+ * gfortran.dg/gomp/udr6.f90: New test.
+ * gfortran.dg/gomp/udr7.f90: New test.
+
+ 2014-05-12 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/60127
+ * gfortran.dg/gomp/omp_do_concurrent.f90: New.
+
+ 2014-05-11 Jakub Jelinek <jakub@redhat.com>
+
+ * gfortran.dg/gomp/affinity-1.f90: New test.
+
+2014-06-30 Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+ * gcc.dg/typeof-2.c: New testcase.
+
+2014-06-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ * gcc.target/aarch64/vqdmulhh_lane_s16.c: New test.
+ * gcc.target/aarch64/vqdmulhs_lane_s32.c: Likewise.
+ * gcc.target/aarch64/vqrdmulhh_lane_s16.c: Likewise.
+ * gcc.target/aarch64/vqrdmulhs_lane_s32.c: Likewise.
+ * gcc.target/aarch64/vqdmlal_high_lane_s16.c: New test.
+ * gcc.target/aarch64/vqdmlal_high_lane_s32.c: Likewise.
+ * gcc.target/aarch64/vqdmlal_high_laneq_s16.c: Likewise.
+ * gcc.target/aarch64/vqdmlal_high_laneq_s32.c: Likewise.
+ * gcc.target/aarch64/vqdmlal_lane_s16.c: Likewise.
+ * gcc.target/aarch64/vqdmlal_lane_s32.c: Likewise.
+ * gcc.target/aarch64/vqdmlal_laneq_s16.c: Likewise.
+ * gcc.target/aarch64/vqdmlal_laneq_s32.c: Likewise.
+ * gcc.target/aarch64/vqdmlalh_lane_s16.c: Likewise.
+ * gcc.target/aarch64/vqdmlals_lane_s32.c: Likewise.
+ * gcc.target/aarch64/vqdmlsl_high_lane_s16.c: Likewise.
+ * gcc.target/aarch64/vqdmlsl_high_lane_s32.c: Likewise.
+ * gcc.target/aarch64/vqdmlsl_high_laneq_s16.c: Likewise.
+ * gcc.target/aarch64/vqdmlsl_high_laneq_s32.c: Likewise.
+ * gcc.target/aarch64/vqdmlsl_lane_s16.c: Likewise.
+ * gcc.target/aarch64/vqdmlsl_lane_s32.c: Likewise.
+ * gcc.target/aarch64/vqdmlsl_laneq_s32.c: Likewise.
+ * gcc.target/aarch64/vqdmlslh_lane_s16.c: Likewise.
+ * gcc.target/aarch64/vqdmlsls_lane_s32.c: Likewise.
+ * gcc.target/aarch64/vqdmulh_laneq_s16.c: Likewise.
+ * gcc.target/aarch64/vqdmulh_laneq_s32.c: Likewise.
+ * gcc.target/aarch64/vqdmulhq_laneq_s16.c: Likewise.
+ * gcc.target/aarch64/vqdmulhq_laneq_s32.c: Likewise.
+ * gcc.target/aarch64/vqdmull_high_lane_s16.c: Likewise.
+ * gcc.target/aarch64/vqdmull_high_lane_s32.c: Likewise.
+ * gcc.target/aarch64/vqdmull_high_laneq_s16.c: Likewise.
+ * gcc.target/aarch64/vqdmull_high_laneq_s32.c: Likewise.
+ * gcc.target/aarch64/vqdmull_lane_s16.c: Likewise.
+ * gcc.target/aarch64/vqdmull_lane_s32.c: Likewise.
+ * gcc.target/aarch64/vqdmull_laneq_s16.c: Likewise.
+ * gcc.target/aarch64/vqdmull_laneq_s32.c: Likewise.
+ * gcc.target/aarch64/vqdmullh_lane_s16.c: Likewise.
+ * gcc.target/aarch64/vqdmulls_lane_s32.c: Likewise.
+ * gcc.target/aarch64/vqrdmulh_laneq_s16.c: Likewise.
+ * gcc.target/aarch64/vqrdmulh_laneq_s32.c: Likewise.
+ * gcc.target/aarch64/vqrdmulhq_laneq_s16.c: Likewise.
+ * gcc.target/aarch64/vqrdmulhq_laneq_s32.c: Likewise.
+ * gcc.target/aarch64/vector_intrinsics.c: Simplify arm_neon.h include.
+ (test_vqdmlal_high_lane_s16): Fix parameter type.
+ (test_vqdmlal_high_lane_s32): Likewise.
+ (test_vqdmull_high_lane_s16): Likewise.
+ (test_vqdmull_high_lane_s32): Likewise.
+ (test_vqdmlsl_high_lane_s32): Likewise.
+ (test_vqdmlsl_high_lane_s16): Likewise.
+ * gcc.target/aarch64/scalar_intrinsics.c (test_vqdmlalh_lane_s16):
+ Fix argument type.
+ (test_vqdmlals_lane_s32): Likewise.
+ (test_vqdmlslh_lane_s16): Likewise.
+ (test_vqdmlsls_lane_s32): Likewise.
+ (test_vqdmulhh_lane_s16): Likewise.
+ (test_vqdmulhs_lane_s32): Likewise.
+ (test_vqdmullh_lane_s16): Likewise.
+ (test_vqdmulls_lane_s32): Likewise.
+ (test_vqrdmulhh_lane_s16): Likewise.
+ (test_vqrdmulhs_lane_s32): Likewise.
+
+2014-06-30 Igor Zamyatin <igor.zamyatin@intel.com>
+
+ PR middle-end/57541
+ * c-c++-common/cilk-plus/AN/pr57541.c: New case added.
+ * c-c++-common/cilk-plus/AN/pr57541-2.c: New test.
+
+2014-06-30 Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ Backport from mainline
+ 2014-06-11 Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ PR tree-optimization/61306
+ * gcc.c-torture/execute/pr61306-1.c: New test.
+ * gcc.c-torture/execute/pr61306-2.c: Likewise.
+ * gcc.c-torture/execute/pr61306-3.c: Likewise.
+
+2014-06-27 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ Backport from mainline.
+ PR libgfortran/61499
+ * gfortran.dg/arrayio_15.f90: New test.
+
+2014-06-27 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ * gfortran.dg/nint_2.f90: Don't XFAIL for powerpc64le-*-linux*.
+
+2014-06-27 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/61614
+ * g++.dg/ext/complit14.C: New.
+
+2014-06-27 Martin Jambor <mjambor@suse.cz>
+
+ PR ipa/61160
+ * g++.dg/ipa/pr61160-2.C: New test.
+ * g++.dg/ipa/pr61160-3.C: Likewise.
+
+2014-06-27 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline
+ 2014-06-26 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/61586
+ * gcc.target/alpha/pr61586.c: New test.
+
+2014-06-26 Adam Butcher <adam@jessamine.co.uk>
+
+ PR c++/61537
+ * g++.dg/template/pr61537.C: New testcase.
+
+2014-06-26 Martin Jambor <mjambor@suse.cz>
+
+ * g++.dg/ipa/pr60600.C: Fix typo.
+ * g++.dg/ipa/devirt-25.C: Likewise.
+ * g++.dg/ipa/pr61540.C: Likewise.
+
+2014-06-26 Martin Jambor <mjambor@suse.cz>
+
+ * g++.dg/ipa/pr61540.C: Remove dumping test.
+
+2014-06-25 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ * gfortran.dg/default_format_denormal_2.f90: Remove xfail for
+ powerpc*-*-linux*.
+
+2014-06-24 Cong Hou <congh@google.com>
+
+ * gcc.dg/vect/vect-reduc-sad.c: New.
+ * lib/target-supports.exp (check_effective_target_vect_usad_char): New.
+
+2014-06-23 Alan Modra <amodra@gmail.com>
+
+ * gcc.dg/pr61583.c: New.
+
+2014-06-20 Martin Jambor <mjambor@suse.cz>
+
+ PR ipa/61540
+ * g++.dg/ipa/pr61540.C: New test.
+
+2014-06-17 Yufeng Zhang <yufeng.zhang@arm.com>
+
+ PR target/61483
+ * gcc.target/aarch64/aapcs64/type-def.h (struct hfa_fx2_t): New type.
+ * gcc.target/aarch64/aapcs64/va_arg-13.c: New test.
+ * gcc.target/aarch64/aapcs64/va_arg-14.c: Ditto.
+ * gcc.target/aarch64/aapcs64/va_arg-15.c: Ditto.
+
+2014-06-17 Richard Biener <rguenther@suse.de>
+
+ PR lto/61012
+ * gcc.dg/lto/pr61526_0.c: New testcase.
+ * gcc.dg/lto/pr61526_1.c: Likewise.
+
+2014-06-17 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline
+ 2014-06-06 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/61423
+ * gcc.target/i386/pr61423.c: New test.
+
+2014-06-15 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
+
+ Backport from trunk.
+ PR fortran/45187
+ * gfortran.dg/cray_pointers_10.f90: New file.
+
+2014-06-13 Peter Bergner <bergner@vnet.ibm.com>
+
+ Backport from mainline
+
+ 2014-06-13 Peter Bergner <bergner@vnet.ibm.com>
+ PR target/61415
+ * lib/target-supports.exp (check_effective_target_longdouble128): New.
+ * gcc.target/powerpc/pack02.c: Use it.
+ * gcc.target/powerpc/tfmode_off.c: Likewise.
+
+2014-06-13 Jeff Law <law@redhat.com>
+
+ Backports from mainline:
+
+ 2014-06-13 Ilya Enkovich <ilya.enkovich@intel.com>
+
+ PR rtl-optimization/61094
+ PR rtl-optimization/61446
+ * gcc.target/i386/pr61446.c : New.
+
+ 2014-06-02 Jeff Law <law@redhat.com>
+
+ PR rtl-optimization/61094
+ * g++.dg/pr61094: New test.
+
+2014-06-12 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/61486
+ * c-c++-common/gomp/pr61486-1.c: New test.
+ * c-c++-common/gomp/pr61486-2.c: New test.
+
+2014-06-12 Jeff Law <law@redhat.com>
+
+ Backports from mainline:
+ 2014-06-05 Jeff Law <law@redhat.com>
+
+ PR tree-optimization/61289
+ * g++.dg/pr61289.C: New test.
+ * g++.dg/pr61289-2.C: New test.
+
+2014-06-12 Georg-Johann Lay <avr@gjlay.de>
+
+ Backport from 2014-06-12 trunk r211491
+
+ PR target/61443
+ * gcc.target/avr/torture/pr61443.c: New test.
+
+2014-06-11 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/61452
+ * gcc.dg/torture/pr61452.c: New testcase.
+
+2014-06-11 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/61456
+ * g++.dg/opt/pr61456.C: New testcase.
+
+2014-06-09 Paul Thomas <pault@gcc.gnu.org>
+
+ Backport from trunk.
+ PR fortran/61406
+ * gfortran.dg/associate_17.f90 : New test
+
+2014-06-07 Jerry DeLisle <jvdelisle@gcc.gnu>
+
+ Backport from trunk.
+ PR libfortran/61173
+ * gfortran.dg/arrayio_14.f90: New test.
+
+2014-06-07 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/opt38.adb: New test.
+ * gnat.dg/opt38_pkg.ad[sb]: New helper.
+
+2014-06-04 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/61383
+ * gcc.dg/torture/pr61383-1.c: New testcase.
+
+2014-06-04 Igor Zamyatin <igor.zamyatin@intel.com>
+
+ PR c/58942
+ * c-c++-common/cilk-plus/AN/pr58942.c: Check for correct handling of
+ the case with a pointer.
+
+2014-06-04 Marek Polacek <polacek@redhat.com>
+
+ Backport from mainline
+ 2014-05-08 Marek Polacek <polacek@redhat.com>
+
+ PR c/61053
+ * gcc.dg/pr61053.c: New test.
+
+2014-06-03 Martin Jambor <mjambor@suse.cz>
+
+ PR ipa/61160
+ * g++.dg/ipa/pr61160-1.C: New test.
+
+2014-06-03 Andrey Belevantsev <abel@ispras.ru>
+
+ Backport from mainline
+ 2014-05-14 Andrey Belevantsev <abel@ispras.ru>
+
+ PR rtl-optimization/60866
+ * gcc.dg/pr60866.c: New test.
+
+2014-06-03 Andrey Belevantsev <abel@ispras.ru>
+
+ Backport from mainline
+ 2014-05-14 Andrey Belevantsev <abel@ispras.ru>
+
+ PR rtl-optimization/60901
+ * gcc.target/i386/pr60901.c: New test.
+
+2014-06-01 Uros Bizjak <ubizjak@gmail.com>
+
+ * g++.dg/pr60969.C (dg-do compile): Change ilp32 target to ia32.
+
+2014-05-29 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR rtl-optimization/61325
+ * gcc.target/aarch64/pr61325.c: New.
+
+2014-05-29 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/60834
+ Backport from mainline
+ * gfortran.dg/associate_16.f90: New test.
+
+2014-05-28 Eric Botcazou <ebotcazou@adacore.com>
+
+ Backport from mainline
+ 2014-05-27 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/overflow_fixed.adb: New test.
+
+2014-05-28 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2014-05-28 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/61045
+ * gcc.dg/pr61045.c: New testcase.
+
+ 2014-05-05 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/61010
+ * gcc.dg/torture/pr61010.c: New testcase.
+
+ 2014-04-28 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/60979
+ * gcc.dg/graphite/pr60979.c: New testcase.
+
+2014-05-28 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * lib/clearcap.exp: New file.
+ * gcc.dg/vect/vect.exp: Load clearcap.exp.
+ Remove clearcap_ldflags handling.
+ Call clearcap-init, clearcap-finish.
+ * gcc.target/i386/i386.exp: Likewise.
+ * gcc.target/i386/clearcap.map: Move to ../config/sol2-clearcap.map.
+ * gcc.target/i386/clearcapv2.map: Move to
+ ../config/sol2-clearcapv2.map.
+ * gcc.target/x86_64/abi/avx/abi-avx.exp: Likewise.
+ * gcc.target/x86_64/abi/avx512f/abi-avx512f.exp: Likewise.
+
+2014-05-27 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/aliasing1.adb (dg-final): Robustify pattern matching.
+
+2014-05-26 Uros Bizjak <ubizjak@gmail.com>
+
+ * c-c++-common/cilk-plus/AN/pr61191.c: Fix dg-error directives.
+
+2014-05-26 Igor Zamyatin <igor.zamyatin@intel.com>
+
+ PR c/61191
+ * c-c++-common/cilk-plus/AN/pr61191.c: Check for correct handling of
+ the case with syntax error.
+
+2014-05-22 Peter Bergner <bergner@vnet.ibm.com>
+
+ * gcc.target/powerpc/htm-ttest.c: New test.
+
+2014-05-21 Igor Zamyatin <igor.zamyatin@intel.com>
+
+ PR c++/60189
+ * c-c++-common/cilk-plus/CK/invalid_sync.cc: New test.
+
+2014-05-18 Jan Hubicka <hubicka@ucw.cz>
+
+ PR middle-end/58094
+ * g++.dg/ipa/devirt-11.C: Be lax about number of devirtualizations.
+
+2014-05-18 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/enum3.adb: New test.
+
+2014-04-16 Jan Hubicka <hubicka@ucw.cz>
+
+ PR ipa/60854
+ * g++.dg/torture/pr60854.C: New testcase.
+
+2014-05-17 Uros Bizjak <ubizjak@gmail.com>
+
+ * g++.dg/pr60969.C: Compile for all ilp32 x86 targets.
+ (dg-options): Add -mfpmath=387.
+ (dg-final): Check that no MMX registers are used.
+
+2014-05-16 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR rtl-optimization/60969
+ * g++.dg/pr60969.C: New.
+
+2014-05-15 Martin Jambor <mjambor@suse.cz>
+
+ PR ipa/61085
+ * g++.dg/ipa/pr61085.C: New test.
+
+2014-05-15 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/61158
+ * gcc.dg/pr61158.c: New test.
+
2014-05-14 Matthias Klose <doko@ubuntu.com>
PR driver/61106
diff --git a/gcc-4.9/gcc/testsuite/ChangeLog-2013 b/gcc-4.9/gcc/testsuite/ChangeLog-2013
index 0d840b1..84fff70 100644
--- a/gcc-4.9/gcc/testsuite/ChangeLog-2013
+++ b/gcc-4.9/gcc/testsuite/ChangeLog-2013
@@ -1,3 +1,3200 @@
+2013-11-04 Marek Polacek <polacek@redhat.com>
+
+ Backport from mainline
+ 2013-11-04 Marek Polacek <polacek@redhat.com>
+
+ PR c++/58979
+ * g++.dg/diagnostic/pr58979.C: New test.
+
+2013-11-03 H.J. Lu <hongjiu.lu@intel.com>
+
+ Backport from mainline
+ 2013-10-12 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/58690
+ * gcc.target/i386/pr58690.c: New test
+
+2013-11-02 Janus Weil <janus@gcc.gnu.org>
+
+ Backport from mainline
+ 2013-09-23 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/58355
+ * gfortran.dg/extends_15.f90: New.
+
+2013-10-29 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline
+ 2013-08-08 Richard Sandiford <rdsandiford@googlemail.com>
+
+ PR rtl-optimization/58079
+ * gcc.dg/torture/pr58079.c: New test.
+
+2013-10-28 Tom de Vries <tom@codesourcery.com>
+
+ * gcc.target/arm/require-pic-register-loc.c: New test.
+
+2013-10-26 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline
+ 2013-10-22 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/58779
+ * gcc.target/i386/pr30315.c: Remove MINUSCC, DECCC, MINUSCCONLY
+ and MINUSCCZEXT defines. Update scan-assembler dg directive.
+ * gcc.dg/torture/pr58779.c: New test.
+
+2013-10-25 Richard Henderson <rth@redhat.com>
+
+ PR rtl/58542
+ * gcc.dg/atomic-store-6.c: New.
+
+2013-10-25 Tom de Vries <tom@codesourcery.com>
+
+ PR c++/58282
+ * g++.dg/tm/noexcept-6.C: New test.
+
+2013-10-25 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc.c-torture/execute/pr58831.c: New test.
+
+2013-10-23 Tom de Vries <tom@codesourcery.com>
+
+ PR tree-optimization/58805
+ * gcc.dg/pr58805.c: New test.
+
+2013-10-23 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/torture/pr58830.c: New testcase.
+
+ Backport from mainline
+ 2013-06-24 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/57488
+ * gcc.dg/torture/pr57488.c: New testcase.
+
+2013-10-19 Oleg Endo <olegendo@gcc.gnu.org>
+
+ * gcc.target/sh/pr54089-3.c: Fix test for load of constant 31.
+
+2013-10-17 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/58596
+ * g++.dg/cpp0x/lambda/lambda-nsdmi5.C: New
+
+2013-10-16 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/58633
+ * g++.dg/cpp0x/decltype57.C: New.
+ * g++.dg/cpp0x/enum18.C: Revert r174385 changes.
+
+2013-10-16 Release Manager
+
+ * GCC 4.8.2 released.
+
+2013-10-14 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * gcc.dg/torture/pr58670.c (ASM_STR) [__i386__ || __x86_64__]: Use
+ btsl.
+
+2013-10-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/58670
+ * gcc.dg/torture/pr58670.c: New test.
+
+2013-10-09 Jakub Jelinek <jakub@redhat.com>
+
+ Backport from mainline
+ 2013-09-26 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/58539
+ * gcc.dg/torture/pr58539.c: New testcase.
+
+2013-10-08 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/58568
+ * g++.dg/cpp0x/lambda/lambda-ice10.C: New.
+ * g++.old-deja/g++.mike/misc9.C: Adjust.
+
+2013-10-08 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ * gcc.target/s390/htm-nofloat-2.c: Add -mzarch to asm options.
+
+2013-10-07 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ * gcc.target/s390/htm-nofloat-2.c: New testcase.
+
+2013-10-07 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ Backport from mainline
+ 2013-06-27 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ * gcc.target/s390/htm-1.c: New file.
+ * gcc.target/s390/htm-nofloat-1.c: New file.
+ * gcc.target/s390/htm-xl-intrin-1.c: New file.
+
+2013-10-04 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/57697
+ PR fortran/58469
+ * gfortran.dg/defined_assignment_8.f90: New.
+ * gfortran.dg/defined_assignment_9.f90: New.
+ * gfortran.dg/defined_assignment_10.f90: New.
+ * gfortran.dg/defined_assignment_11.f90: New.
+
+2013-10-04 Marcus Shawcroft <marcus.shawcroft@arm.com>
+
+ Backport from mainline.
+
+ PR target/58460
+ * gcc.target/aarch64/pr58460.c: New file.
+
+2013-10-02 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/58535
+ * g++.dg/parse/crash62.C: New.
+
+2013-10-01 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/58574
+ * gcc.c-torture/execute/pr58574.c: New test.
+
+2013-09-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/58564
+ * gcc.c-torture/execute/pr58564.c: New test.
+
+2013-09-24 Cong Hou <congh@google.com>
+
+ Backport from mainline:
+ 2013-09-24 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/58513
+ * g++.dg/vect/pr58513.cc: New testcase.
+
+2013-09-23 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/opt28.ad[sb]: New test.
+ * gnat.dg/opt28_pkg.ads: New helper.
+
+2013-09-23 Alan Modra <amodra@gmail.com>
+
+ * gcc.target/powerpc/pr58330.c: New.
+
+2013-09-20 Cong Hou <congh@google.com>
+
+ Backport from mainline:
+ 2013-09-13 Cong Hou <congh@google.com>
+
+ * gcc.dg/vect/vect-reduc-dot-s16c.c: Add a test case with dot product
+ on two arrays with short and int types. This should not be recognized
+ as a dot product pattern.
+
+2013-09-18 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/58457
+ * g++.dg/parse/using4.C: New.
+
+2013-09-18 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/array_bounds_test2.adb: New test.
+
+2013-09-18 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/in_out_parameter4.adb: New test.
+
+2013-09-17 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ PR tree-optimization/58088
+ * gcc.c-torture/compile/pr58088.c: New test.
+
+2013-09-13 Christian Bruel <christian.bruel@st.com>
+
+ PR target/58314
+ * gcc.target/sh/torture/pr58314.c: New test.
+
+2013-09-11 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/58377
+ * g++.dg/uninit-pred-4.C: New testcase.
+
+2013-09-11 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/58385
+ * gcc.c-torture/execute/pr58385.c: New test.
+
+2013-09-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/58365
+ * gcc.c-torture/execute/pr58365.c: New test.
+
+2013-09-09 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/58325
+ * g++.dg/warn/Wunused-var-21.C: New test.
+
+ PR tree-optimization/58364
+ * gcc.c-torture/execute/pr58364.c: New test.
+
+2013-09-09 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ PR target/57735
+ * g++.dg/ext/pr57735.C: New test.
+
+2013-09-09 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2013-08-27 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/57521
+ * gcc.dg/torture/pr57521.c: New testcase.
+
+2013-09-09 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2013-09-03 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/57656
+ * gcc.dg/torture/pr57656.c: New testcase.
+
+2013-09-09 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2013-08-29 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/57685
+ * gcc.dg/torture/pr57685.c: New testcase.
+
+2013-09-09 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2013-08-30 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/58223
+ * gcc.dg/torture/pr58223.c: New testcase.
+ * gcc.dg/tree-ssa/ldist-16.c: Flip expected behavior.
+
+2013-09-03 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2013-08-29 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/58246
+ * gcc.dg/torture/pr58246.c: New testcase.
+
+2013-09-03 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2013-08-30 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/58228
+ * gcc.dg/torture/pr58228.c: New testcase.
+
+2013-09-03 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2013-08-30 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/58010
+ * gcc.dg/pr58010.c: New testcase.
+
+2013-08-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/58277
+ * gcc.c-torture/execute/pr58277-1.c: New test.
+ * gcc.c-torture/execute/pr58277-2.c: New test.
+
+2013-08-29 Jakub Jelinek <jakub@redhat.com>
+
+ Backported from mainline
+ 2013-07-22 Georg-Johann Lay <avr@gjlay.de>
+
+ PR testsuite/52641
+ * gcc.dg/torture/pr57381.c: Add dg-require-effective-target int32plus.
+
+ 2013-05-27 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/57417
+ * gcc.dg/torture/pr57417.c: New testcase.
+
+ PR tree-optimization/57396
+ * gfortran.fortran-torture/execute/pr57396.f90: New testcase.
+
+ PR tree-optimization/57343
+ * gcc.dg/torture/pr57343.c: New testcase.
+
+ 2013-05-23 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/57381
+ * gcc.dg/torture/pr57381.c: New testcase.
+
+2013-08-28 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/58257
+ * c-c++-common/gomp/pr58257.c: New test.
+
+2013-08-28 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2013-06-24 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/56977
+ * gcc.dg/pr56977.c: New testcase.
+
+2013-08-24 Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/57798
+ * gfortran.dg/inline_sum_5.f90: New.
+
+2013-08-24 Janus Weil <janus@gcc.gnu.org>
+
+ Backport from trunk:
+ 2013-08-22 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/58185
+ * gfortran.dg/select_type_34.f90: New.
+
+2013-08-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/58218
+ * gcc.target/i386/pr58218.c: New test.
+
+ PR tree-optimization/58209
+ * gcc.c-torture/execute/pr58209.c: New test.
+
+2013-08-20 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/58190
+ * g++.dg/pr57878.C: Use __SIZE_TYPE__.
+
+2013-08-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/58006
+ * g++.dg/opt/pr58006.C: New test.
+
+2013-08-16 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/58164
+ * gcc.c-torture/compile/pr58164.c: New test.
+
+ PR tree-optimization/58165
+ * g++.dg/opt/pr58165.C: New test.
+
+2013-08-14 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/58145
+ * gcc.dg/pr58145-1.c: New test.
+ * gcc.dg/pr58145-2.c: New test.
+
+2013-08-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR sanitizer/56417
+ * gcc.dg/asan/pr56417.c: New test.
+
+2013-08-13 Vladimir Makarov <vmakarov@redhat.com>
+
+ Backport from mainline
+ 2013-06-06 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR rtl-optimization/57459
+ * gcc.target/i386/pr57459.c: New test.
+
+2013-08-13 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/loop_optimization16.adb: New test.
+ * gnat.dg/loop_optimization16_pkg.ad[sb]: New helper.
+
+2013-08-13 Marek Polacek <polacek@redhat.com>
+
+ PR tree-optimization/57980
+ * gcc.dg/pr57980.c: New test.
+
+2013-08-13 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline
+ 2013-08-12 Perez Read <netfirewall@gmail.com>
+
+ PR target/58132
+ * gcc.target/i386/movabs-1.c: New test.
+
+2013-08-11 Janus Weil <janus@gcc.gnu.org>
+
+ Backport from trunk:
+ 2013-08-09 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/58058
+ * gfortran.dg/transfer_intrinsic_6.f90: New.
+
+2013-08-09 Zhenqiang Chen <zhenqiang.chen@linaro.org>
+
+ Backport from mainline:
+ 2013-08-09 Zhenqiang Chen <zhenqiang.chen@linaro.org>
+
+ * gcc.target/arm/lp1189445.c: New testcase.
+
+2013-08-06 Martin Jambor <mjambor@suse.cz>
+ Bernd Edlinger <bernd.edlinger@hotmail.de>
+
+ * gcc.dg/torture/pr58041.c (foo): Accept z by reference.
+ (a): Fix constructor.
+
+2013-08-06 Martin Jambor <mjambor@suse.cz>
+
+ PR middle-end/58041
+ * gcc.dg/torture/pr58041.c: New test.
+ * gcc.target/arm/pr58041.c: Likewise.
+
+2013-07-28 Tobias Burnus <burnus@net-b.de>
+
+ Backport from mainline
+ 2013-05-28 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/57435
+ * gfortran.dg/use_29.f90: New.
+
+2013-07-25 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/57981
+ * g++.dg/cpp0x/pr57981.C: New.
+
+2013-07-25 Terry Guo <terry.guo@arm.com>
+
+ Backport from mainline:
+ 2013-07-25 Terry Guo <terry.guo@arm.com>
+
+ * gcc.target/arm/thumb1-Os-mult.c: New test case.
+
+2013-07-19 Wei Mi <wmi@google.com>
+
+ Backport from mainline:
+ 2013-07-18 Wei Mi <wmi@google.com>
+
+ PR rtl-optimization/57878
+ * g++.dg/pr57878.C: New test.
+
+2013-07-19 Georg-Johann Lay <avr@gjlay.de>
+
+ Backport from 2013-07-19 trunk r201051.
+
+ PR target/57516
+ * gcc.target/avr/torture/builtins-4-roundfx.c (test2hr, test2k):
+ Adjust to corrected rounding.
+
+2013-07-19 Kirill Yukhin <kirill.yukhin@intel.com>
+
+ * gcc.target/i386/bmi-1.c: Extend with new instrinsics.
+ Fix scan patterns.
+ * gcc.target/i386/bmi-2.c: Ditto.
+ * gcc.target/i386/bmi-bextr-4.c: New.
+ * gcc.target/i386/bmi-bextr-5.c: Ditto.
+
+2013-07-16 Iain Sandoe <iain@codesourcery.com>
+
+ PR target/55656
+ PR target/55657
+ * obj-c++.dg/cxx-ivars-3.mm: Use NSObject instead of Object.
+ * obj-c++.dg/strings/const-cfstring-5.mm: Likewise.
+ * obj-c++.dg/torture/strings/const-str-10.mm: Likewise.
+ * obj-c++.dg/torture/strings/const-str-9.mm: Likewise.
+ * objc.dg/image-info.m: Likewise.
+ * objc.dg/symtab-1.m: Likewise.
+ * objc.dg/torture/strings/const-str-10.m: Likewise.
+ * objc.dg/torture/strings/const-str-11.m: Likewise.
+ * objc.dg/torture/strings/const-str-9.m: Likewise.
+ * objc.dg/zero-link-1.m: Likewise.
+ * objc.dg/zero-link-2.m: Likewise.
+ * objc.dg/no-extra-load.m: Avoid Foundation.h.
+ * objc.dg/objc-foreach-4.m: Likewise.
+ * objc.dg/objc-foreach-5.m: Likewise.
+ * obj-c++.dg/proto-lossage-7.mm: Use NSObject instead of Object
+ (for Darwin).
+ * obj-c++.dg/strings/const-str-12.mm: Likewise.
+ * obj-c++.dg/syntax-error-1.mm: Likewise.
+ * objc.dg/method-6.m: Likewise.
+ * objc.dg/pr23214.m: Likewise.
+ * objc.dg/proto-lossage-7.m: Likewise.
+ * objc.dg/strings/const-str-12b.m: Likewise.
+ * objc.dg/zero-link-3.m: Likewise.
+ * obj-c++.dg/method-12.mm: Skip on Darwin versions without 'Object'.
+ * objc.dg/encode-7-next-64bit.m: Use NSObject instead of Object,
+ adjust headers, interfaces and encoded types to reflect current system
+ versions. Add FIXME and outputs from current system compiler for
+ reference.
+
+2013-07-10 Janis Johnson <janisjo@codesourcery.com>
+
+ * gcc.target/powerpc/20020118-1.c: Force 128-bit stack alignment
+ for EABI targets.
+ * gcc.c-torture/execute/nest-align-1.x: New.
+
+2013-07-08 Janis Johnson <janisjo@codesourcery.com>
+
+ * gcc.target/powerpc/tfmode_off.c: Skip for EABI targets.
+
+ * gcc.target/powerpc/ppc-spe64-1.c: Update expected error message.
+
+ * gcc.target/powerpc/pr47197.c: Require powerpc_altivec_ok.
+
+2013-07-08 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/57785
+ * gfortran.dg/dot_product_2.f90: New.
+
+2013-07-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/57829
+ * gcc.c-torture/execute/pr57829.c: New test.
+
+2013-07-05 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/57645
+ * g++.dg/cpp0x/noexcept21.C: New.
+
+2013-07-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/57777
+ * gcc.target/i386/pr57777.c: New test.
+
+ PR c++/57771
+ * g++.dg/template/arg9.C: New test.
+
+2013-06-28 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/57736
+ * gcc.target/i386/pr57736.c: New test.
+
+2013-06-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/57623
+ * gcc.target/i386/bmi-bextr-3.c: New test.
+
+ PR target/57623
+ * gcc.target/i386/bmi2-bzhi-1.c: New test.
+
+2013-06-24 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/57358
+ * gcc.dg/ipa/pr57358.c: New test.
+
+2013-06-24 Alan Modra <amodra@gmail.com>
+
+ * gcc.target/powerpc/altivec-consts.c: Correct for little-endian.
+ Add scan-assembler-not "lvx".
+ * gcc.target/powerpc/le-altivec-consts.c: New.
+
+2013-06-21 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline
+ 2013-06-20 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/57655
+ * gcc.target/i386/pr57655.c: New test.
+
+2013-06-21 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/53211
+ * g++.dg/cpp0x/decltype55.C: New.
+
+2013-06-20 Wei Mi <wmi@google.com>
+
+ Backport from mainline
+ 2013-06-19 Wei Mi <wmi@google.com>
+
+ PR rtl-optimization/57518
+ * testsuite/gcc.dg/pr57518.c: New test.
+
+2013-06-11 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/57508
+ * gfortran.dg/defined_assignment_7.f90: New.
+
+2013-06-10 Oleg Endo <olegendo@gcc.gnu.org>
+
+ Backport from mainline
+ 2013-05-20 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/56547
+ * gcc.target/sh/pr56547-1.c: New.
+ * gcc.target/sh/pr56547-2.c: New.
+
+2013-06-09 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/57568
+ * gcc.c-torture/execute/pr57568.c: New test.
+
+2013-06-04 Tobias Burnus <burnus@net-b.de>
+
+ Backport from mainline
+ 2013-05-22 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/57364
+ * gfortran.dg/defined_assignment_6.f90: New.
+
+2013-05-31 Janus Weil <janus@gcc.gnu.org>
+ Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/57217
+ * gfortran.dg/typebound_override_4.f90: New.
+
+2013-05-31 Release Manager
+
+ * GCC 4.8.1 released.
+
+2013-05-26 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/specs/last_bit.ads: New test.
+
+2013-05-24 Greta Yorsh <Greta.Yorsh@arm.com>
+
+ Backport from mainline
+ 2013-05-02 Greta Yorsh <Greta.Yorsh@arm.com>
+
+ PR target/56732
+ * gcc.target/arm/pr56732-1.c: New test.
+
+2013-05-24 Alexander Ivchenko <alexander.ivchenko@intel.com>
+
+ PR tree-ssa/57385
+ * gcc.dg/tree-ssa/pr57385.c: New test.
+
+2013-05-23 Martin Jambor <mjambor@suse.cz>
+
+ PR middle-end/57347
+ * gcc.dg/ipa/pr57347.c: New test.
+
+2013-05-23 Richard Biener <rguenther@suse.de>
+
+ PR rtl-optimization/57341
+ * gcc.dg/torture/pr57341.c: New testcase.
+
+2013-05-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/57344
+ * gcc.c-torture/execute/pr57344-1.c: New test.
+ * gcc.c-torture/execute/pr57344-2.c: New test.
+ * gcc.c-torture/execute/pr57344-3.c: New test.
+ * gcc.c-torture/execute/pr57344-4.c: New test.
+
+2013-05-22 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2013-05-21 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/57330
+ * gcc.dg/torture/pr57330.c: New testcase.
+
+ 2013-05-21 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/57303
+ * gcc.dg/torture/pr57303.c: New testcase.
+
+2013-05-21 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/57321
+ * gcc.c-torture/execute/pr57321.c: New test.
+
+2013-05-17 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/57281
+ PR rtl-optimization/57300
+ * gcc.dg/pr57300.c: New test.
+ * gcc.c-torture/execute/pr57281.c: New test.
+
+2013-05-16 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/56782 - Regression with empty pack expansions
+ * g++.dg/cpp0x/variadic142.C: New test file.
+
+2013-05-14 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/57274
+ * c-c++-common/Wsequence-point-1.c: New test.
+
+ PR middle-end/57251
+ * gcc.dg/torture/pr57251.c: New test.
+
+2013-05-13 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/57264
+ * gcc.target/i386/pr57264.c: New test.
+
+2013-05-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/57230
+ * gcc.dg/strlenopt-23.c: New test.
+
+2013-05-10 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/57214
+ * gcc.dg/torture/pr57214.c: New testcase.
+
+2013-05-09 Martin Jambor <mjambor@suse.cz>
+
+ PR middle-end/56988
+ * gcc.dg/ipa/pr56988.c: New test.
+
+2013-05-08 Marc Glisse <marc.glisse@inria.fr>
+
+ * c-c++-common/vector-scalar-2.c: New testcase.
+
+2013-05-07 Tobias Burnus <burnus@net-b.de>
+
+ Backport from mainline
+ 2013-05-02 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/57142
+ * gfortran.dg/size_kind_2.f90: New.
+ * gfortran.dg/size_kind_3.f90: New.
+
+2013-05-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/57149
+ * gcc.dg/pr57149.c: New test.
+
+ PR debug/57184
+ * gcc.dg/pr57184.c: New test.
+
+2013-05-07 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2013-05-06 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/57185
+ * gcc.dg/autopar/pr57185.c: New testcase.
+
+ 2013-04-19 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/57000
+ * gcc.dg/tree-ssa/reassoc-27.c: New testcase.
+
+2013-05-07 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/specs/array3.ads: New test.
+
+2013-05-06 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ Backport from trunk
+ 2013-05-03 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ PR target/57150
+ * gcc.target/powerpc/pr57150.c: New file.
+
+2013-05-06 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline
+ 2013-05-06 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/57106
+ * gcc.target/i386/pr57106.c: New test.
+
+2013-05-06 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/57183
+ * g++.dg/cpp0x/auto38.C: New.
+
+2013-05-04 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/56205
+ * gcc.dg/tree-ssa/stdarg-6.c: Add cleanup-tree-dump "stdarg".
+
+2013-05-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/57130
+ * gcc.c-torture/execute/pr57130.c: New test.
+
+2013-05-03 Marek Polacek <polacek@redhat.com>
+
+ Backport from mainline
+ 2013-04-25 Marek Polacek <polacek@redhat.com>
+
+ PR tree-optimization/57066
+ * gcc.dg/torture/builtin-logb-1.c: Adjust testcase.
+
+2013-05-02 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/57131
+ * gcc.c-torture/execute/pr57131.c: New test.
+
+2013-05-02 Vladimir Makarov <vmakarov@redhat.com>
+
+ Backport from mainline
+ PR target/57091
+ * gcc.target/i386/pr57091.c: New test.
+
+2013-05-02 Vladimir Makarov <vmakarov@redhat.com>
+
+ Backport from mainline
+ 2013-04-29 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR target/57097
+ * gcc.target/i386/pr57097.c: New test.
+
+2013-05-02 Vladimir Makarov <vmakarov@redhat.com>
+
+ Backport from mainline
+ 2013-04-24 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR rtl-optimizations/57046
+ * gcc.target/i386/pr57046.c: New test.
+
+2013-05-02 Vladimir Makarov <vmakarov@redhat.com>
+
+ Backport from mainline
+ 2013-04-22 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR target/57018
+ * gcc.target/i386/pr57018.c: New test.
+
+2013-05-02 Vladimir Makarov <vmakarov@redhat.com>
+
+ Backport from mainline
+ 2013-04-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/56999
+ * g++.dg/opt/pr56999.C: New test.
+
+2013-05-02 Vladimir Makarov <vmakarov@redhat.com>
+
+ Backport from mainline
+ 2013-04-19 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR rtl-optimization/56847
+ * gcc.dg/pr56847.c: New test.
+
+2013-05-02 Ian Bolton <ian.bolton@arm.com>
+
+ Backport from mainline (fix to botched commit)
+ 2013-04-04 Tejas Belagod <tejas.belagod@arm.com>
+
+ * gcc.target/aarch64/inc/asm-adder-clobber-lr.c: Remove duplication.
+ * gcc.target/aarch64/inc/asm-adder-no-clobber-lr.c: Likewise.
+ * gcc.target/aarch64/test-framepointer-1.c: Likewise.
+ * gcc.target/aarch64/test-framepointer-2.c: Likewise.
+ * gcc.target/aarch64/test-framepointer-3.c: Likewise.
+ * gcc.target/aarch64/test-framepointer-4.c: Likewise.
+ * gcc.target/aarch64/test-framepointer-5.c: Likewise.
+ * gcc.target/aarch64/test-framepointer-6.c: Likewise.
+ * gcc.target/aarch64/test-framepointer-7.c: Likewise.
+ * gcc.target/aarch64/test-framepointer-8.c: Likewise.
+
+ Backport from mainline
+ 2013-03-28 Ian Bolton <ian.bolton@arm.com>
+
+ * gcc.target/aarch64/inc/asm-adder-clobber-lr.c: New test.
+ * gcc.target/aarch64/inc/asm-adder-no-clobber-lr.c: Likewise.
+ * gcc.target/aarch64/test-framepointer-1.c: Likewise.
+ * gcc.target/aarch64/test-framepointer-2.c: Likewise.
+ * gcc.target/aarch64/test-framepointer-3.c: Likewise.
+ * gcc.target/aarch64/test-framepointer-4.c: Likewise.
+ * gcc.target/aarch64/test-framepointer-5.c: Likewise.
+ * gcc.target/aarch64/test-framepointer-6.c: Likewise.
+ * gcc.target/aarch64/test-framepointer-7.c: Likewise.
+ * gcc.target/aarch64/test-framepointer-8.c: Likewise.
+
+2013-05-01 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/57092
+ * g++.dg/cpp0x/decltype53.C: New.
+
+2013-04-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/57104
+ * gcc.dg/pr57104.c: New test.
+
+2013-04-30 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline
+ 2013-04-29 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/44578
+ * gcc.target/i386/pr44578.c: New test.
+
+ Backport from mainline
+ 2013-04-29 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/57098
+ * gcc.target/i386/pr57098.c: New test.
+
+2013-04-29 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/56450
+ * g++.dg/cpp0x/decltype52.C: New.
+
+2013-04-29 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/57103
+ * gcc.dg/autopar/pr57103.c: New testcase.
+
+2013-04-29 Christian Bruel <christian.bruel@st.com>
+
+ PR target/57108
+ * gcc.target/sh/pr57108.c: New test.
+
+2013-04-29 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/57083
+ * gcc.dg/torture/pr57083.c: New test.
+
+2013-04-28 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ Backport from trunk:
+
+ PR fortran/51825
+ * gfortran.dg/namelist_77.f90: New test.
+ * gfortran.dg/namelist_78.f90: New test.
+
+2013-04-28 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR fortran/56786
+ * gfortran.dg/namelist_81.f90: New test.
+
+2013-04-27 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ Backport from trunk:
+
+ PR fortran/52512
+ * gfortran.dg/namelist_79.f90: New test.
+
+2013-04-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/56866
+ * gcc.c-torture/execute/pr56866.c: New test.
+ * gcc.target/i386/pr56866.c: New test.
+
+2013-04-26 Janus Weil <janus@gcc.gnu.org>
+
+ Backports from trunk:
+
+ PR fortran/56968
+ * gfortran.dg/proc_ptr_41.f90: New.
+
+ PR fortran/56814
+ * gfortran.dg/proc_ptr_42.f90: New.
+
+ PR fortran/53685
+ PR fortran/57022
+ * gfortran.dg/transfer_check_4.f90: New.
+
+2013-04-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/57003
+ * gcc.target/i386/pr57003.c: New test.
+
+2013-04-25 Ian Bolton <ian.bolton@arm.com>
+
+ Backported from mainline.
+ 2013-03-22 Ian Bolton <ian.bolton@arm.com>
+
+ * gcc.target/aarch64/movk.c: New test.
+
+2013-04-24 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/56970
+ * g++.dg/cpp0x/sfinae45.C: New.
+
+2013-04-23 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ Backported from mainline.
+ PR rtl-optimization/56605
+ * gcc.target/powerpc/pr56605.c: New.
+
+2013-04-22 Marek Polacek <polacek@redhat.com>
+
+ Backport from mainline
+ 2013-04-22 Marek Polacek <polacek@redhat.com>
+
+ PR sanitizer/56990
+ * gcc.dg/pr56990.c: New test.
+
+2013-04-22 Thomas Koenig <tkoenig@gcc.gnu.org>
+ Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/56872
+ * gfortran.dg/array_constructor_45.f90: New test.
+ * gfortran.dg/array_constructor_46.f90: New test.
+ * gfortran.dg/array_constructor_47.f90: New test.
+ * gfortran.dg/array_constructor_40.f90: Adjust number of
+ while loops.
+
+2013-04-18 Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/56816
+ * gfortran.dg/select_type_33.f03: New test.
+
+2013-04-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/56984
+ * gcc.c-torture/compile/pr56984.c: New test.
+
+ PR rtl-optimization/56992
+ * gcc.dg/pr56992.c: New test.
+
+2013-04-16 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline
+ 2013-04-16 Uros Bizjak <ubizjak@gmail.com>
+
+ * g++.dg/ipa/devirt-c-7.C: Require nonpic effective target.
+ * gcc.c-torture/execute/pr33992.x: Remove.
+ * gcc.c-torture/execute/pr33992.c (foo): Declare as static.
+ * gcc.dg/uninit-pred-5_a.c (foo): Ditto.
+ * gcc.dg/uninit-pred-5_b.c (foo): Ditto.
+
+ Backport from mainline
+ 2013-03-27 Alexander Ivchenko <alexander.ivchenko@intel.com>
+
+ * g++.dg/ipa/ivinline-1.C: Add target nonpic.
+ * g++.dg/ipa/ivinline-2.C: Likewise.
+ * g++.dg/ipa/ivinline-3.C: Likewise.
+ * g++.dg/ipa/ivinline-4.C: Likewise.
+ * g++.dg/ipa/ivinline-5.C: Likewise.
+ * g++.dg/ipa/ivinline-7.C: Likewise.
+ * g++.dg/ipa/ivinline-8.C: Likewise.
+ * g++.dg/ipa/ivinline-9.C: Likewise.
+ * g++.dg/cpp0x/noexcept03.C: Likewise.
+ * gcc.dg/const-1.c: Likewise.
+ * gcc.dg/ipa/pure-const-1.c: Likewise.
+ * gcc.dg/noreturn-8.c: Likewise.
+ * gcc.target/i386/mmx-1.c: Likewise.
+ * gcc.dg/tree-ssa/ipa-split-5.c: Likewise.
+ * gcc.dg/tree-ssa/loadpre6.c: Likewise.
+ * gcc.c-torture/execute/pr33992.x: New file.
+
+2013-04-15 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/56962
+ * gcc.c-torture/execute/pr56962.c: New test.
+
+2013-04-15 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc.dg/pr56890-1.c: New test.
+ * gcc.dg/pr56890-2.c: Likewise.
+
+2013-04-12 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR target/56903
+ * gcc.target/i386/pr56903.c: New test.
+
+2013-04-12 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/56918
+ PR tree-optimization/56920
+ * gcc.dg/vect/pr56918.c: New test.
+ * gcc.dg/vect/pr56920.c: New test.
+
+2013-04-11 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/56895
+ * g++.dg/template/arrow4.C: New test.
+
+2013-04-11 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/56913
+ * g++.dg/cpp0x/sfinae44.C: New.
+
+2013-04-11 James Greenhalgh <james.greenhalgh@arm.com>
+
+ Backported from mainline.
+ 2013-04-11 James Greenhalgh <james.greenhalgh@arm.com>
+
+ * gcc.target/aarch64/vect-fcm.x: Add check for zero forms of
+ inverse operands.
+ * gcc.target/aarch64/vect-fcm-eq-d.c: Check that new zero form
+ loop is vectorized.
+ * gcc.target/aarch64/vect-fcm-eq-f.c: Likewise.
+ * gcc.target/aarch64/vect-fcm-ge-d.c: Check that new zero form
+ loop is vectorized and that the correct instruction is generated.
+ * gcc.target/aarch64/vect-fcm-ge-f.c: Likewise.
+ * gcc.target/aarch64/vect-fcm-gt-d.c: Likewise.
+ * gcc.target/aarch64/vect-fcm-gt-f.c: Likewise.
+
+2013-04-11 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/56899
+ * gcc.c-torture/execute/pr56899.c: New test.
+
+2013-04-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/56895
+ * g++.dg/template/arrow3.C: New test.
+
+ Backported from mainline
+ 2013-04-09 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/56883
+ * c-c++-common/gomp/pr56883.c: New test.
+
+2013-04-08 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/56782
+ Backport from trunk.
+ * gfortran.dg/array_constructor_44.f90: New test.
+
+2013-04-08 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc.c-torture/execute/pr56837.c: New test.
+
+2013-04-04 Marek Polacek <polacek@redhat.com>
+
+ Backport from mainline:
+ 2013-04-04 Marek Polacek <polacek@redhat.com>
+
+ PR tree-optimization/48186
+ * gcc.dg/pr48186.c: New test.
+
+2013-04-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ Backport from mainline:
+ 2013-03-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ PR target/56720
+ * gcc.target/arm/neon-vcond-gt.c: New test.
+ * gcc.target/arm/neon-vcond-ltgt.c: Likewise.
+ * gcc.target/arm/neon-vcond-unordered.c: Likewise.
+
+2013-04-04 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/56837
+ * g++.dg/torture/pr56837.C: New testcase.
+
+2013-04-03 Marek Polacek <polacek@redhat.com>
+
+ Backport from mainline:
+ 2013-04-03 Marek Polacek <polacek@redhat.com>
+
+ PR sanitizer/55702
+ * gcc.dg/pr55702.c: New test.
+
+2013-04-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/56819
+ * g++.dg/debug/pr56819.C: New test.
+
+2013-04-03 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/56817
+ * g++.dg/torture/pr56817.C: New testcase.
+
+2013-04-03 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/55964
+ * gcc.dg/torture/pr55964-2.c: New testcase.
+
+2013-04-03 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/56501
+ * gcc.dg/torture/pr56501.c: New testcase.
+
+2013-04-03 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/56407
+ * gcc.dg/torture/pr56407.c: New testcase.
+
+2013-04-02 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/56745
+ * gcc.c-torture/compile/pr56745.c: New test.
+
+2013-04-02 Tobias Burnus <burnus@net-b.de>
+
+ Backport from mainline:
+ 2013-03-28 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/56735
+ * gfortran.dg/namelist_80.f90: New.
+
+2013-04-02 Tobias Burnus <burnus@net-b.de>
+
+ Backport from mainline:
+ 2013-03-29 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/56737
+ * testsuite/gfortran.dg/fmt_cache_3.f90: New.
+
+2013-04-02 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/56768
+ * g++.dg/torture/pr56768.C: New testcase.
+
+2013-04-01 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/55951
+ * g++.dg/ext/desig5.C: New.
+
+2013-03-29 Kirill Yukhin <kirill.yukhin@intel.com>
+
+ * gcc.target/i386/avx2-vbroadcastsi128-1.c: Fix intrinsic name.
+ * gcc.target/i386/avx2-vbroadcastsi128-1.c: Ditto.
+
+2013-03-28 Tejas Belagod <tejas.belagod@arm.com>
+
+ PR middle-end/56694
+ * g++.dg/torture/pr56694.C: Fix test case to build on bare-metal
+ targets.
+
+2013-03-25 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/56722
+ * g++.dg/cpp0x/range-for23.C: New.
+
+2013-03-25 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/56694
+ * g++.dg/torture/pr56694.C: New testcase.
+
+2013-03-25 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ Backport from mainline:
+ 2013-03-20 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ PR fortran/54932
+ * gfortran.dg/do_1.f90: Don't xfail.
+
+2013-03-24 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/56696
+ * gfortran.dg/eof_5.f90: New.
+
+2013-03-22 Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+ * gcc.c-torture/execute/builtins/builtins.exp: Sort targets
+ alphabetically.
+
+2013-03-22 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/56582
+ * g++.dg/cpp0x/constexpr-array5.C: New.
+
+2013-03-22 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/56560
+ * gcc.target/i386/pr56560.c: New file.
+
+2013-03-22 Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+ PR testsuite/55994
+ * gcc.c-torture/execute/builtins/builtins.exp: Add
+ -Wl,--allow-multiple-definition for RTEMS targets.
+
+2013-03-22 Jakub Jelinek <jakub@redhat.com>
+
+ Backported from mainline
+ 2013-03-16 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/56607
+ * g++.dg/warn/Wdiv-by-zero-2.C: New test.
+ * c-c++-common/pr56607.c: New test.
+
+2013-03-22 Release Manager
+
+ * GCC 4.8.0 released.
+
+2013-03-20 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/56661
+ * gcc.dg/torture/pr56661.c: New testcase.
+
+2013-03-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/56635
+ * g++.dg/torture/pr56635.C: New test.
+
+2013-03-15 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/56615
+ * gfortran.dg/transfer_intrinsic_5.f90: New.
+
+2013-03-15 Kai Tietz <ktietz@redhat.com>
+
+ * gcc.target/i386/movti.c: Don't test for x64 mingw.
+ * gcc.target/i386/pr20020-1.c: Likewise.
+ * gcc.target/i386/pr20020-2.c: Likewise.
+ * gcc.target/i386/pr20020-3.c: Likewise.
+ * gcc.target/i386/pr53425-1.c: Likewise.
+ * gcc.target/i386/pr53425-2.c: Likewise.
+ * gcc.target/i386/pr55093.c: Likewise.
+ * gcc.target/i386/pr53907.c: Adjust test for LLP64 targets.
+
+2013-03-15 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/56307
+ * gcc.dg/tree-ssa/pr55579.c: Add -fvar-tracking-assignments to
+ dg-options. Remove 32-bit hppa*-*-hpux* xfail.
+
+2013-03-14 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/53265
+ * gcc.dg/graphite/scop-3.c (toto): Increase array size to avoid
+ undefined behavior.
+ * gcc.dg/graphite/id-6.c (test): Likewise.
+ * gcc.dg/graphite/pr35356-2.c: Adjust regexp patterns to only look for
+ MIN_EXPR and MAX_EXPR in GIMPLE stmts.
+
+ PR tree-optimization/53265
+ * gcc.dg/pr53265.c: New test.
+ * gcc.dg/torture/pr49518.c: Add -Wno-aggressive-loop-optimizations
+ to dg-options.
+ * g++.dg/opt/longbranch2.C (EBCOTLut): Double sizes of a2 and a3
+ arrays.
+ * gcc.dg/tree-ssa/cunroll-10.c (main): Rename to foo. Add argument
+ n, use it as high bound instead of 4.
+
+2013-03-13 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/49880
+ * gcc.target/sh/pr49880-1.c: New.
+ * gcc.target/sh/pr49880-2.c: New.
+ * gcc.target/sh/pr49880-3.c: New.
+ * gcc.target/sh/pr49880-4.c: New.
+ * gcc.target/sh/pr49880-5.c: New.
+
+2013-03-13 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * g++.dg/cpp0x/alias-decl-32.C: Remove redundant bits.
+
+2013-03-13 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/56608
+ * gcc.dg/vect/fast-math-bb-slp-call-3.c: New testcase.
+
+2013-03-13 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/56611
+ * g++.dg/cpp0x/alias-decl-32.C: New.
+
+2013-03-11 Jan Hubicka <jh@suse.cz>
+
+ PR middle-end/56571
+ * gcc.c-torture/compile/pr56571.c: New testcase.
+
+2013-03-11 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * gcc.dg/tree-ssa/vector-4.c: Add comment regarding xfail.
+ * gcc.dg/tree-ssa/pr55579.c: Likewise.
+
+2013-03-11 Dominique d'Humieres <dominiq@lps.ens.fr>
+
+ * gcc.dg/inline_3.c: Remove target and dg-excess-errors.
+ * gcc.dg/inline_4.c: Likewise.
+ * gcc.dg/unroll_2.c: Likewise.
+ * gcc.dg/unroll_3.c: Likewise.
+ * gcc.dg/unroll_4.c: Likewise.
+
+2013-03-10 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ PR testsuite/54119
+ * gcc.dg/tree-ssa/vector-4.c: xfail on 32-bit hppa*-*-*.
+
+ PR debug/56307
+ * gcc.dg/tree-ssa/pr55579.c: xfail 32-bit hppa*-*-hpux*.
+
+2013-03-11 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/40797
+ * gcc.c-torture/compile/pr40797.c: New.
+
+2013-03-10 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * gcc.dg/pr44194-1.c: Skip compilation on hppa*64*-*-*.
+
+2013-03-10 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/56575
+ * gfortran.dg/class_56.f90: New test.
+
+2013-03-09 Richard Sandiford <rdsandiford@googlemail.com>
+
+ PR middle-end/56524
+ * gcc.target/mips/pr56524.c: New test.
+
+2013-03-08 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/56565
+ * g++.dg/cpp0x/lambda/lambda-nsdmi2.C: New.
+
+2013-03-08 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/51412
+ * g++.dg/cpp0x/lambda/lambda-err3.C: New.
+
+2013-03-08 Marek Polacek <polacek@redhat.com>
+
+ PR tree-optimization/56478
+ * gcc.dg/torture/pr56478.c: New test.
+
+2013-03-08 Kai Tietz <ktietz@redhat.com>
+
+ * gcc.c-torture/execute/builtins/builtins.exp: Add for mingw
+ targets linker option --allow-multiple-definition.
+
+ * gcc.dg/pr14092-1.c: Mark intptr_t typedef to use extension.
+ * gcc.dg/pr24683.c: Avoid warning about casting constant string.
+ * gcc.dg/pr52549.c: Add LLP64 case.
+ * gcc.dg/pr53701.c: Use for uintptr_t typedef __UINTPTR_TYPE__.
+ * gcc.dg/pr56510.c: Adjust for LLP64 targets.
+ * gcc.dg/torture/pr51071-2.c: Likewise.
+ * gcc.dg/tree-ssa/vrp72.c: Likewise.
+ * gcc.dg/tree-ssa/vrp73.c: Likewise.
+ * gcc.dg/tree-ssa/vrp75.c: Likewise.
+ * gcc.dg/torture/pr53922.c: Skip test for mingw-targets.
+ * gcc.dg/weak/weak-1.c: Likewise.
+ * gcc.dg/weak/weak-2.c: Likewise.
+ * gcc.dg/weak/weak-3.c: Likewise.
+ * gcc.dg/weak/weak-4.c: Likewise.
+ * gcc.dg/weak/weak-5.c: Likewise.
+ * gcc.dg/weak/weak-15.c: Likewise.
+ * gcc.dg/weak/weak-16.c: Likewise.
+
+ * c-c++-common/pr54486.c: Skip test for mingw-targets.
+
+2013-03-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/56559
+ * gcc.dg/tree-ssa/reassoc-26.c: New test.
+
+2013-03-07 Andreas Schwab <schwab@suse.de>
+
+ * gcc.dg/pr31490.c: Fix last change.
+
+2013-03-06 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/56534
+ * g++.dg/template/crash115.C: New.
+
+2013-03-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/56539
+ * gcc.c-torture/compile/pr56539.c: New test.
+
+2013-03-06 Kai Tietz <ktietz@redhat.com>
+
+ * gcc.dg/lto/20090914-2_0.c: Skip for mingw and cygwin targets.
+ * gcc.dg/lto/20091013-1_1.c: Set x64-mingw as xfail.
+ * gcc.dg/lto/20091013-1_2.c: Likewise.
+ * gcc.dg/pr31490.c: Adjust for LLP64 targets.
+
+2013-03-06 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/specs/aggr6.ads: New test.
+
+2013-03-06 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/loop_optimization15.ad[sb]: New test.
+
+2013-03-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/56548
+ * gcc.dg/pr56548.c: New test.
+
+2013-03-06 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ PR debug/53363
+ * g++.dg/debug/dwarf2/thunk1.C: Skip on darwin.
+
+2013-03-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/56543
+ * g++.dg/template/typename20.C: New test.
+
+2013-03-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/56510
+ * gcc.dg/pr56510.c: New test.
+
+ PR rtl-optimization/56484
+ * gcc.c-torture/compile/pr56484.c: New test.
+
+2013-03-05 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/56530
+ * g++.dg/warn/Wsign-conversion-2.C: New.
+
+2013-03-05 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/56270
+ * gcc.dg/vect/slp-38.c: New testcase.
+
+2013-03-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/56494
+ * gcc.dg/pr56494.c: New test.
+
+2013-01-04 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc.dg/pr56424.c: New test.
+
+2013-03-04 Georg-Johann Lay <avr@gjlay.de>
+
+ * gcc.dg/pr55153.c: Add dg-require-effective-target scheduling.
+ * gcc.dg/pr56228.c <avr>: Skip.
+
+2013-03-04 Georg-Johann Lay <avr@gjlay.de>
+
+ PR testsuite/52641
+ PR tree-optimization/52631
+ * gcc.dg/tree-ssa/pr52631.c: Fix 16-bit int.
+
+2013-03-03 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.dg/vect/vect-82_64.c: Skip on AIX.
+ * gcc.dg/vect/vect-83_64.c: Same.
+
+2013-03-03 Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/56477
+ * gfortran.dg/pointer_check_13.f90: New test.
+
+2013-03-03 Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/54730
+ * gfortran.dg/array_constructor_42.f90: New test.
+
+2013-03-02 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/52688
+ * g++.dg/template/static33.C: New.
+ * g++.dg/template/static34.C: Likewise.
+
+ PR c++/10291
+ * g++.dg/template/static35.C: New.
+
+2013-03-01 Steve Ellcey <sellcey@mips.com>
+
+ * gcc.dg/pr56396.c: Require pic support.
+
+2013-03-01 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/55481
+ * gcc.dg/torture/pr56488.c: New testcase.
+
+2013-02-28 Konstantin Serebryany <konstantin.s.serebryany@gmail.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ PR sanitizer/56454
+ * g++.dg/asan/default-options-1.C (__asan_default_options): Use
+ no_sanitize_address attribute rather than no_address_safety_analysis.
+ * g++.dg/asan/sanitizer_test_utils.h
+ (ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS): Likewise.
+ * c-c++-common/asan/attrib-1.c: Test no_sanitize_address attribute
+ in addition to no_address_safety_analysis.
+
+2013-02-28 Jason Merrill <jason@redhat.com>
+
+ PR c++/56481
+ * g++.dg/cpp0x/constexpr-and.C: New.
+
+2013-02-28 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/56294
+ * g++.dg/debug/pr56294.C: New test.
+
+2013-02-28 Marcus Shawcroft <marcus.shawcroft@arm.com>
+
+ * g++.old-deja/g++.pt/ptrmem6.C(main): Add xfail aarch64*-*-*.
+
+2013-02-27 Marek Polacek <polacek@redhat.com>
+
+ PR rtl-optimization/56466
+ * gcc.dg/pr56466.c: New test.
+
+2013-02-28 Naveen H.S <Naveen.Hurugalawadi@caviumnetworks.com>
+
+ * gcc.dg/tree-ssa/slsr-1.c: Allow widening multiplications.
+ * gcc.dg/tree-ssa/slsr-2.c: Likewise.
+ * gcc.dg/tree-ssa/slsr-3.c: Likewise.
+
+2013-02-27 Andrey Belevantsev <abel@ispras.ru>
+
+ PR middle-end/45472
+ * gcc.dg/pr45472.c: New test.
+
+2013-02-26 Marek Polacek <polacek@redhat.com>
+
+ PR tree-optimization/56426
+ * gcc.dg/pr56436.c: New test.
+
+2013-02-26 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/56448
+ * gcc.c-torture/compile/pr56448.c: New test.
+
+ PR tree-optimization/56443
+ * gcc.dg/torture/pr56443.c: New test.
+
+2013-02-25 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/56175
+ * gcc.dg/tree-ssa/forwprop-24.c: New testcase.
+
+2013-02-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/56403
+ * g++.dg/torture/pr56403.C: New test.
+
+2013-02-25 Catherine Moore <clm@codesourcery.com>
+
+ Revert:
+ 2013-02-24 Catherine Moore <clm@codesourcery.com>
+ Richard Sandiford <rdsandiford@googlemail.com>
+
+ * gcc.target/mips/mips.exp: Add microMIPS support.
+ * gcc.target/mips/umips-movep-2.c: New test.
+ * gcc.target/mips/umips-lwp-2.c: New test.
+ * gcc.target/mips/umips-swp-5.c: New test.
+ * gcc.target/mips/umips-constraints-1.c: New test.
+ * gcc.target/mips/umips-lwp-3.c: New test.
+ * gcc.target/mips/umips-swp-6.c: New test.
+ * gcc.target/mips/umips-constraints-2.c: New test.
+ * gcc.target/mips/umips-save-restore-1.c: New test.
+ * gcc.target/mips/umips-lwp-4.c: New test.
+ * gcc.target/mips/umips-swp-7.c: New test.
+ * gcc.target/mips/umips-save-restore-2.c: New test.
+ * gcc.target/mips/umips-lwp-swp-volatile.c: New test.
+ * gcc.target/mips/umips-lwp-5.c: New test.
+ * gcc.target/mips/umips-save-restore-3.c: New test.
+ * gcc.target/mips/umips-lwp-6.c: New test.
+ * gcc.target/mips/umips-swp-1.c: New test.
+ * gcc.target/mips/umips-lwp-7.c: New test.
+ * gcc.target/mips/umips-swp-2.c: New test.
+ * gcc.target/mips/umips-lwp-8.c: New test.
+ * gcc.target/mips/umips-swp-3.c: New test.
+ * gcc.target/mips/umips-movep-1.c: New test.
+ * gcc.target/mips/umips-lwp-1.c: New test.
+ * gcc.target/mips/umips-swp-4.c: New test.
+
+2013-02-24 Catherine Moore <clm@codesourcery.com>
+ Richard Sandiford <rdsandiford@googlemail.com>
+
+ * gcc.target/mips/mips.exp: Add microMIPS support.
+ * gcc.target/mips/umips-movep-2.c: New test.
+ * gcc.target/mips/umips-lwp-2.c: New test.
+ * gcc.target/mips/umips-swp-5.c: New test.
+ * gcc.target/mips/umips-constraints-1.c: New test.
+ * gcc.target/mips/umips-lwp-3.c: New test.
+ * gcc.target/mips/umips-swp-6.c: New test.
+ * gcc.target/mips/umips-constraints-2.c: New test.
+ * gcc.target/mips/umips-save-restore-1.c: New test.
+ * gcc.target/mips/umips-lwp-4.c: New test.
+ * gcc.target/mips/umips-swp-7.c: New test.
+ * gcc.target/mips/umips-save-restore-2.c: New test.
+ * gcc.target/mips/umips-lwp-swp-volatile.c: New test.
+ * gcc.target/mips/umips-lwp-5.c: New test.
+ * gcc.target/mips/umips-save-restore-3.c: New test.
+ * gcc.target/mips/umips-lwp-6.c: New test.
+ * gcc.target/mips/umips-swp-1.c: New test.
+ * gcc.target/mips/umips-lwp-7.c: New test.
+ * gcc.target/mips/umips-swp-2.c: New test.
+ * gcc.target/mips/umips-lwp-8.c: New test.
+ * gcc.target/mips/umips-swp-3.c: New test.
+ * gcc.target/mips/umips-movep-1.c: New test.
+ * gcc.target/mips/umips-lwp-1.c: New test.
+ * gcc.target/mips/umips-swp-4.c: New test.
+
+2013-02-22 Jakub Jelinek <jakub@redhat.com>
+
+ PR sanitizer/56393
+ * lib/asan-dg.exp (asan_link_flags): Add
+ -B${gccpath}/libsanitizer/asan/ to flags.
+
+2013-02-21 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/56420
+ * gcc.dg/torture/pr56420.c: New test.
+
+2013-02-20 Aldy Hernandez <aldyh@redhat.com>
+
+ PR middle-end/56108
+ * gcc.dg/tm/memopt-1.c: Declare functions transaction_safe.
+
+2013-02-21 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/56310
+ * g++.dg/ipa/pr56310.C: New test.
+
+2013-02-21 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/56385
+ * gfortran.dg/proc_ptr_comp_37.f90: New.
+
+2013-02-21 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/56415
+ Revert
+ 2013-02-11 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/56273
+ * g++.dg/warn/Warray-bounds-6.C: New testcase.
+ * gcc.dg/tree-ssa/pr21559.c: Adjust.
+ * gcc.dg/tree-ssa/vrp17.c: Likewise.
+ * gcc.dg/tree-ssa/vrp18.c: Likewise.
+ * gcc.dg/tree-ssa/vrp23.c: Likewise.
+ * gcc.dg/tree-ssa/vrp24.c: Likewise.
+
+2013-02-21 Marek Polacek <polacek@redhat.com>
+
+ PR tree-optimization/56398
+ * g++.dg/torture/pr56398.C: New test.
+
+2013-02-21 Jakub Jelinek <jakub@redhat.com>
+
+ PR inline-asm/56405
+ * gcc.c-torture/compile/pr56405.c: New test.
+
+2013-02-20 Jan Hubicka <jh@suse.cz>
+
+ PR tree-optimization/56265
+ * testsuite/g++.dg/ipa/devirt-11.C: New testcase.
+
+2013-02-20 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/tree-ssa/forwprop-8.c: Adjust.
+
+2013-02-20 Richard Biener <rguenther@suse.de>
+ Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/56396
+ * gcc.dg/pr56396.c: New testcase.
+
+2013-02-20 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/56373
+ * g++.dg/cpp0x/Wzero-as-null-pointer-constant-2.C: New.
+
+2013-02-19 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/56384
+ * gcc.dg/torture/pr56384.c: New testcase.
+
+2013-02-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/56350
+ * gcc.dg/pr56350.c: New test.
+
+ PR tree-optimization/56381
+ * g++.dg/opt/pr56381.C: New test.
+
+2013-02-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR pch/54117
+ * lib/dg-pch.exp (pch-init, pch-finish,
+ check_effective_target_pch_supported_debug): New procs.
+ (dg-flags-pch): If $pch_unsupported, make tests UNSUPPORTED.
+ Likewise if $pch_unsupported_debug and $flags include -g.
+ Skip FAILs about missing *.gch file if $pch_unsupported_debug
+ and dg-require-effective-target pch_unsupported_debug.
+ * g++.dg/pch/pch.exp: Call pch-init and pch-finish.
+ * objc.dg/pch/pch.exp: Likewise.
+ * gcc.dg/pch/pch.exp: Likewise.
+ * gcc.dg/pch/valid-1.c: Add dg-require-effective-target
+ pch_unsupported_debug.
+ * gcc.dg/pch/valid-1.hs: Likewise.
+ * gcc.dg/pch/valid-1b.c: Likewise.
+ * gcc.dg/pch/valid-1b.hs: Likewise.
+
+2013-02-18 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/56366
+ * gcc.dg/torture/pr56366.c: New testcase.
+
+2013-02-18 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/56349
+ * gcc.dg/torture/pr56349.c: New testcase.
+
+2013-02-18 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/56321
+ * gcc.dg/torture/pr56321.c: New testcase.
+
+2013-02-16 Edgar E. Iglesias <edgar.iglesias@gmail.com>
+
+ * gcc.dg/20020312-2.c: Define MicroBlaze PIC register
+
+2013-02-16 Jakub Jelinek <jakub@redhat.com>
+ Dodji Seketeli <dodji@redhat.com>
+
+ PR asan/56330
+ * c-c++-common/asan/no-redundant-instrumentation-4.c: New test file.
+ * c-c++-common/asan/no-redundant-instrumentation-5.c: Likewise.
+ * c-c++-common/asan/no-redundant-instrumentation-6.c: Likewise.
+ * c-c++-common/asan/no-redundant-instrumentation-7.c: Likewise.
+ * c-c++-common/asan/no-redundant-instrumentation-8.c: Likewise.
+ * c-c++-common/asan/pr56330.c: Likewise.
+ * c-c++-common/asan/no-redundant-instrumentation-1.c (test1):
+ Ensure the size argument of __builtin_memcpy is a constant.
+
+2013-02-15 Jonathan Wakely <jwakely.gcc@gmail.com>
+ Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/51242
+ * g++.dg/cpp0x/enum23.C: New.
+
+2013-02-15 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/54685
+ * gcc.target/sh/pr54685.c: Fix scanning of not insn.
+
+2013-02-15 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR rtl-optimization/56348
+ * gcc.target/i386/pr56348.c: New test.
+
+2013-02-15 Greta Yorsh <Greta.Yorsh@arm.com>
+
+ * gcc.target/arm/interrupt-1.c: Fix for thumb mode.
+ * gcc.target/arm/interrupt-2.c: Likewise.
+
+2013-02-15 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/56318
+ * gcc/testsuite/gfortran.dg/matmul_9.f90: New.
+
+2013-02-15 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/53818
+ * gfortran.dg/init_flag_11.f90: New.
+
+2013-02-14 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * gcc.dg/debug/dwarf2/pr53948.c: Allow for more whitespace.
+
+2013-02-14 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * gcc.dg/debug/dwarf2/pr53948.c: Allow for / and ! as comment
+ characters.
+
+2013-02-14 Dominique d'Humieres <dominiq@lps.ens.fr>
+ Tobias Burnus <burnus@net-b.de>
+
+ PR testsuite/56138
+ * gfortran.dg/allocatable_function_7.f90: New.
+
+2013-02-14 Jakub Jelinek <jakub@redhat.com>
+
+ * g++.dg/asan/dejagnu-gtest.h: Add multiple inclusion guards.
+ * asan_globals_test-wrapper.cc: New file.
+ * g++.dg/asan/asan_test.C: Use asan_globals_test-wrapper.cc
+ instead of asan_globals_test.cc as dg-additional-sources.
+ Include asan_mem_test.cc, asan_str_test.cc and asan_oob_test.cc.
+ * g++.dg/asan/asan_test_utils.h: Synced from upstream. Include
+ "sanitizer_test_utils.h" instead of
+ "sanitizer_common/tests/sanitizer_test_utils.h".
+ * g++.dg/asan/asan_str_test.cc: New file, synced from upstream.
+ * g++.dg/asan/asan_mem_test.cc: New file, synced from upstream.
+ * g++.dg/asan/asan_oob_test.cc: New file, synced from upstream.
+ * g++.dg/asan/asan_globals_test.cc: Synced from upstream.
+ * g++.dg/asan/asan_test.cc: Synced from upstream.
+ * g++.dg/asan/sanitizer_test_utils.h: New file, synced from upstream.
+
+2013-02-14 Dodji Seketeli <dodji@redhat.com>
+
+ Fix an asan crash
+ * c-c++-common/asan/memcmp-2.c: New test.
+
+2013-02-13 Ed Smith-Rowland <3dw4rd@verizon.net>
+
+ PR c++/55582
+ * g++.dg/cpp0x/udlit-string-literal.h: New.
+ * g++.dg/cpp0x/udlit-string-literal.C: New.
+
+2013-02-13 Sriraman Tallam <tmsriram@google.com>
+
+ * g++.dg/ext/mv12-aux.C: Add directives to match mv12.C.
+
+2013-02-13 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR target/56184
+ * gcc.target/arm/pr56184.C: New test.
+
+2013-02-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/56302
+ * g++.dg/torture/pr56302.C: New test.
+ * g++.dg/cpp0x/constexpr-56302.C: New test.
+ * c-c++-common/pr56302.c: New test.
+
+2013-02-13 Tobias Burnus <burnus@net-b.de>
+ Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ PR fortran/56204
+ * gfortran.dg/quad_2.f90: Use "< epsilon" instead of "==".
+ * gfortran.dg/quad_3.f90: Ditto.
+
+2013-02-13 Kostya Serebryany <kcc@google.com>
+
+ * c-c++-common/asan/strncpy-overflow-1.c: Update the test
+ to match the fresh asan run-time.
+ * c-c++-common/asan/rlimit-mmap-test-1.c: Ditto.
+
+2013-02-12 Dodji Seketeli <dodji@redhat.com>
+
+ Avoid instrumenting duplicated memory access in the same basic block
+ * c-c++-common/asan/no-redundant-instrumentation-1.c: New test.
+ * testsuite/c-c++-common/asan/no-redundant-instrumentation-2.c:
+ Likewise.
+ * testsuite/c-c++-common/asan/no-redundant-instrumentation-3.c:
+ Likewise.
+ * testsuite/c-c++-common/asan/inc.c: Likewise.
+
+2013-02-12 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR inline-asm/56148
+ * gcc.target/i386/pr56148.c: New test.
+
+2013-02-12 Dominique d'Humieres <dominiq@lps.ens.fr>
+ Tobias Burnus <burnus@net-b.de>
+
+ PR testsuite/56082
+ * gfortran.dg/bind_c_bool_1.f90 (sub): Change kind=4 to kind=2.
+
+2013-02-12 Richard Biener <rguenther@suse.de>
+
+ PR lto/56297
+ * gcc.dg/lto/pr56297_0.c: New testcase.
+ * gcc.dg/lto/pr56297_0.c: Likewise.
+
+2013-02-12 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/46952
+ * gfortran.dg/typebound_deferred_1.f90: New.
+
+2013-02-12 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/56151
+ * gcc.target/i386/pr56151.c: New test.
+
+2013-02-11 Sriraman Tallam <tmsriramgoogle.com>
+
+ * g++.dg/ext/mv12.C: New test.
+ * g++.dg/ext/mv12.h: New file.
+ * g++.dg/ext/mv12-aux.C: New file.
+ * g++.dg/ext/mv13.C: New test.
+
+2013-02-11 Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+ * lib/target-supports.exp
+ (check_effective_target_powerpc_eabi_ok): New.
+ * gcc.target/powerpc/ppc-eabi.c: Use require effective target
+ powerpc_eabi_ok.
+ * gcc.target/powerpc/ppc-sdata-1.c: Likewise.
+ * gcc.target/powerpc/spe-small-data-2.c: Likewise. Do not run, compile
+ only.
+ * gcc.target/powerpc/ppc-sdata-2.c: Add powerpc-*-rtems*.
+ * gcc.target/powerpc/pr51623.c: Likewise.
+ * gcc.target/powerpc/ppc-stackalign-1.c: Likewise.
+ * gcc.target/powerpc/ppc-ldstruct.c: Likewise.
+
+2013-02-11 Alexander Potapenko <glider@google.com>
+ Jack Howarth <howarth@bromo.med.uc.edu>
+ Jakub Jelinek <jakub@redhat.com>
+
+ PR sanitizer/55617
+ * g++.dg/asan/pr55617.C: Run on all targets.
+
+2013-02-11 Uros Bizjak <ubizjak@gmail.com>
+
+ PR rtl-optimization/56275
+ * gcc.dg/pr56275.c: New test.
+
+2013-02-11 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/56273
+ * gcc.dg/tree-ssa/vrp17.c: Disable tail-merging.
+
+2013-02-11 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/56264
+ * gcc.dg/torture/pr56264.c: New testcase.
+
+2013-02-11 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/56273
+ * g++.dg/warn/Warray-bounds-6.C: New testcase.
+ * gcc.dg/tree-ssa/pr21559.c: Adjust.
+ * gcc.dg/tree-ssa/vrp17.c: Likewise.
+ * gcc.dg/tree-ssa/vrp18.c: Likewise.
+ * gcc.dg/tree-ssa/vrp23.c: Likewise.
+ * gcc.dg/tree-ssa/vrp24.c: Likewise.
+
+2013-02-09 Uros Bizjak <ubizjak@gmail.com>
+
+ * g++.dg/asan/asan_test.C: Compile with -D__NO_INLINE__
+ for *-*-linux-gnu targets.
+ * g++.dg/asan/interception-test-1.c: Ditto.
+ * g++.dg/asan/interception-failure-test-1.C: Ditto.
+ * g++.dg/asan/interception-malloc-test-1.C: Ditto.
+
+2013-02-09 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/55362
+ * gfortran.dg/intrinsic_size_4.f90 : New test.
+
+2013-02-09 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/56256
+ * gcc.target/powerpc/pr56256.c: New test.
+
+2013-02-08 Ian Lance Taylor <iant@google.com>
+
+ * lib/go.exp: Load timeout.exp.
+
+2013-02-08 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR rtl-optimization/56246
+ * gcc.target/i386/pr56246.c: New test.
+
+2013-02-08 Jeff Law <law@redhat.com>
+
+ PR debug/53948
+ * gcc.dg/debug/dwarf2/pr53948.c: New test.
+
+2013-02-08 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ PR target/56043
+ * gcc.target/powerpc/vsx-mass-1.c: Only run this test on
+ powerpc*-*-linux*.
+
+2013-02-08 Edgar E. Iglesias <edgar.iglesias@gmail.com>
+
+ * 20101011-1.c: Add __MICROBLAZE__ exception to set DO_TEST 0
+
+2013-02-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/56195
+ * gcc.dg/torture/pr56195.c: New test.
+
+2013-02-08 Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/54107
+ * gfortran.dg/recursive_interface_2.f90: New test.
+
+2013-02-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/56250
+ * gcc.c-torture/execute/pr56250.c: New test.
+
+2013-02-08 Georg-Johann Lay <avr@gjlay.de>
+
+ PR tree-optimization/56064
+ * gcc.dg/fixed-point/view-convert-2.c: New test.
+
+2013-02-08 Michael Matz <matz@suse.de>
+
+ PR tree-optimization/52448
+ * gcc.dg/pr52448.c: New test.
+
+2013-02-08 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/56181
+ * gcc.dg/torture/pr56181.c: New testcase.
+
+2013-02-08 Georg-Johann Lay <avr@gjlay.de>
+
+ PR target/54222
+ * gcc.target/avr/torture/builtins-4-roundfx.c: New test.
+ * gcc.target/avr/torture/builtins-5-countlsfx.c: New test.
+
+2013-02-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/56241
+ * g++.dg/parse/crash61.C: New test.
+
+ PR c++/56239
+ * g++.dg/parse/pr56239.C: New test.
+
+ PR c++/56237
+ * g++.dg/abi/mangle61.C: New test.
+
+2013-02-07 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR rtl-optimization/56225
+ * gcc.target/i386/pr56225.c: New test.
+
+2013-02-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/56154
+ * gcc.dg/guality/pr56154-1.c: New test.
+ * gcc.dg/guality/pr56154-2.c: New test.
+ * gcc.dg/guality/pr56154-3.c: New test.
+ * gcc.dg/guality/pr56154-4.c: New test.
+ * gcc.dg/guality/pr56154-aux.c: New file.
+
+ PR tree-optimization/55789
+ * g++.dg/ipa/inline-3.C: Use cleanup-ipa-dump instead of
+ cleanup-tree-dump.
+ * gcc.dg/tree-ssa/inline-3.c: Add
+ --param max-early-inliner-iterations=2 option.
+
+2013-02-07 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ PR debug/53363
+ * g++.dg/debug/dwarf2/thunk1.C: Restrict to 32-bit x86.
+ Add -fno-dwarf2-cfi-asm to dg-options.
+ Adapt match count.
+
+2013-02-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/56228
+ * gcc.dg/pr56228.c: New test.
+
+2013-02-07 Alan Modra <amodra@gmail.com>
+
+ PR target/54009
+ * gcc.target/powerpc/pr54009.c: New test.
+ PR target/54131
+ * gfortran.dg/pr54131.f: New test.
+
+2013-02-06 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/55789
+ * gfortran.dg/array_constructor_41.f90: New test.
+
+2013-02-06 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/55978
+ * gfortran.dg/class_optional_2.f90: Uncomment some cases
+ which work now.
+
+2013-02-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/56217
+ * g++.dg/gomp/pr56217.C: New test.
+
+2013-02-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/56205
+ * gcc.dg/tree-ssa/stdarg-6.c: New test.
+ * gcc.c-torture/execute/pr56205.c: New test.
+
+2013-02-05 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/53342
+ PR tree-optimization/53185
+ * gcc.dg/vect/pr53185-2.c: New testcase.
+
+2013-02-05 Jan Hubicka <jh@suse.cz>
+
+ PR tree-optimization/55789
+ * g++.dg/tree-ssa/inline-1.C: Update max-inliner-iterations.
+ * g++.dg/tree-ssa/inline-2.C: Update max-inliner-iterations.
+ * g++.dg/tree-ssa/inline-3.C: Update max-inliner-iterations.
+ * g++.dg/ipa/inline-1.C: New testcase.
+ * g++.dg/ipa/inline-2.C: New testcase.
+ * g++.dg/ipa/inline-3.C: New testcase.
+
+2013-02-05 Jan Hubicka <jh@suse.cz>
+
+ PR tree-optimization/55789
+ * g++.dg/torture/pr55789.C: New testcase.
+
+2013-02-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/56167
+ * gcc.dg/pr56167.c: New test.
+
+2013-02-04 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/55146
+ * gcc.target/sh/pr55146.c: New.
+
+2013-02-04 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR tree-optimization/54386
+ * gcc.target/sh/pr54386.c: New.
+
+2013-02-04 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/56008
+ * gfortran.dg/realloc_on _assign_16.f90 : New test.
+
+ PR fortran/47517
+ * gfortran.dg/realloc_on _assign_17.f90 : New test.
+
+2013-02-04 Alexander Potapenko <glider@google.com>
+ Jack Howarth <howarth@bromo.med.uc.edu>
+ Jakub Jelinek <jakub@redhat.com>
+
+ PR sanitizer/55617
+ * g++.dg/asan/pr55617.C: New test.
+
+2013-02-04 Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/54195
+ * gfortran.dg/typebound_operator_19.f90: New test.
+ * gfortran.dg/typebound_assignment_4.f90: New test.
+
+2013-02-04 Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/54107
+ * gfortran.dg/recursive_interface_1.f90: New test.
+
+2013-02-04 Richard Guenther <rguenther@suse.de>
+
+ PR lto/56168
+ * gcc.dg/lto/pr56168_0.c: New testcase.
+ * gcc.dg/lto/pr56168_1.c: Likewise.
+
+2013-02-02 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/50627
+ PR fortran/56054
+ * gfortran.dg/block_12.f90: New test.
+ * gfortran.dg/module_error_1.f90: New test.
+
+2013-02-02 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * lib/target-supports.exp (check_effective_target_vect_float)
+ (check_effective_target_vect_no_align): Add mips-sde-elf.
+
+2013-02-01 Jakub Jelinek <jakub@redhat.com>
+
+ * lib/gcc-dg.exp (restore-target-env-var): Avoid using lreverse.
+
+2013-02-01 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.dg/pr56023.c: XFAIL on AIX.
+ * gcc.dg/vect/pr49352.c: Same.
+
+2013-02-01 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/opt26.adb: New test.
+
+2013-01-31 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
+
+ Revert.
+ 2013-01-27 Amol Pise <amolpise15@gmail.com>
+
+ * gcc.target/arm/neon-vfnms-1.c: New test.
+ * gcc.target/arm/neon-vfnma-1.c: New test.
+
+2013-01-31 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/56157
+ * gcc.dg/torture/pr56157.c: New testcase.
+
+2013-01-30 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/56150
+ * gcc.dg/torture/pr56150.c: New testcase.
+
+2013-01-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR sanitizer/55374
+ * g++.dg/asan/large-func-test-1.C: Allow both _Zna[jm] in addition
+ to _Znw[jm] in the backtrace. Allow _Zna[jm] to be the first frame
+ printed in backtrace.
+ * g++.dg/asan/deep-stack-uaf-1.C: Use malloc instead of operator new
+ to avoid errors about mismatched allocation vs. deallocation.
+
+ PR c++/55742
+ * g++.dg/mv1.C: Moved to...
+ * g++.dg/ext/mv1.C: ... here. Adjust test.
+ * g++.dg/mv2.C: Moved to...
+ * g++.dg/ext/mv2.C: ... here. Adjust test.
+ * g++.dg/mv3.C: Moved to...
+ * g++.dg/ext/mv3.C: ... here.
+ * g++.dg/mv4.C: Moved to...
+ * g++.dg/ext/mv4.C: ... here.
+ * g++.dg/mv5.C: Moved to...
+ * g++.dg/ext/mv5.C: ... here. Adjust test.
+ * g++.dg/mv6.C: Moved to...
+ * g++.dg/ext/mv6.C: ... here. Adjust test.
+ * g++.dg/ext/mv7.C: New test.
+ * g++.dg/ext/mv8.C: New test.
+ * g++.dg/ext/mv9.C: New test.
+ * g++.dg/ext/mv10.C: New test.
+ * g++.dg/ext/mv11.C: New test.
+
+2013-01-30 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR rtl-optimization/56144
+ * gcc.dg/pr56144.c: New.
+
+2013-01-30 David Edelsohn <dje.gcc@gmail.com>
+
+ * g++.dg/cpp0x/constexpr-53094-2.C: Ignore non-standard ABI
+ message.
+ * g++.dg/cpp0x/constexpr-53094-3.C: Same.
+ * g++.dg/cpp0x/constexpr-55573.C: Same
+
+2013-01-30 Georg-Johann Lay <avr@gjlay.de>
+
+ PR tree-optimization/56064
+ * gcc.dg/fixed-point/view-convert.c: New test.
+
+2013-01-30 Andreas Schwab <schwab@suse.de>
+
+ * lib/target-supports-dg.exp (dg-process-target): Use expr to
+ evaluate the end index in string range.
+
+2013-01-30 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/56138
+ * gfortran.dg/allocatable_function_6.f90: New.
+
+2013-01-29 Janus Weil <janus@gcc.gnu.org>
+ Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/54107
+ * gfortran.dg/proc_ptr_comp_36.f90: New.
+
+2013-01-29 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/55270
+ * gcc.dg/torture/pr55270.c: New testcase.
+
+2013-01-28 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/56117
+ * gcc.dg/pr56117.c: New test.
+
+2013-01-28 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/56034
+ * gcc.dg/torture/pr56034.c: New testcase.
+
+2013-01-28 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/56125
+ * gcc.dg/pr56125.c: New test.
+
+2013-01-28 Tobias Burnus <burnus@net-b.de>
+ Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/53537
+ * gfortran.dg/import2.f90: Adjust undeclared type error messages.
+ * gfortran.dg/import8.f90: Likewise.
+ * gfortran.dg/interface_derived_type_1.f90: Likewise.
+ * gfortran.dg/import10.f90: New test.
+ * gfortran.dg/import11.f90: Likewise
+
+2013-01-28 Jakub Jelinek <jakub@redhat.com>
+
+ PR testsuite/56053
+ * c-c++-common/asan/heap-overflow-1.c: Don't include stdlib.h and
+ string.h. Provide memset, malloc and free prototypes, adjust line
+ numbers in dg-output.
+ * c-c++-common/asan/stack-overflow-1.c: Don't include string.h.
+ Provide memset prototype and adjust line numbers in dg-output.
+ * c-c++-common/asan/global-overflow-1.c: Likewise.
+
+ PR tree-optimization/56094
+ * gcc.dg/pr56094.c: New test.
+
+2013-01-27 Amol Pise <amolpise15@gmail.com>
+
+ * gcc.target/arm/neon-vfnms-1.c: New test.
+ * gcc.target/arm/neon-vfnma-1.c: New test.
+
+2013-01-27 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/56114
+ * gcc.target/i386/pr56114.c: New test.
+
+2013-01-27 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/55984
+ * gfortran.dg/associate_14.f90: New test.
+
+ PR fortran/56047
+ * gfortran.dg/associate_13.f90: New test.
+
+2013-01-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/56098
+ * gcc.dg/pr56098-1.c: New test.
+ * gcc.dg/pr56098-2.c: New test.
+
+2013-01-25 Georg-Johann Lay <avr@gjlay.de>
+
+ PR target/54222
+ * gcc.target/avr/torture/builtins-3-absfx.c: New test.
+
+2013-01-22 Marek Polacek <polacek@redhat.com>
+
+ PR tree-optimization/56035
+ * gcc.dg/pr56035.c: New test.
+
+2013-01-24 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * gfortran.dg/bind_c_array_params_2.f90: Require -mno-relax-pic-calls
+ for MIPS.
+
+2013-01-24 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * gcc.target/mips/octeon-pipe-1.c: Add -ffat-lto-objects
+
+2013-01-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/56078
+ * gcc.dg/pr56078.c: New test.
+ * gcc.c-torture/compile/20030305-1.c: Add dg-error lines.
+
+2013-01-24 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/55927
+ * g++.dg/ipa/devirt-10.C: Disable early inlining.
+
+2013-01-24 Uros Bizjak <ubizjak@gmail.com>
+
+ * gcc.target/i386/movsd.c: New test.
+
+2013-01-24 Steven Bosscher <steven@gcc.gnu.org>
+
+ PR inline-asm/55934
+ * gcc.target/i386/pr55934.c: New test.
+
+2013-01-23 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/56081
+ * gfortran.dg/select_8.f90: New.
+
+2013-01-23 David Holsgrove <david.holsgrove@xilinx.com>
+
+ * gcc.target/microblaze/microblaze.exp: Remove
+ target_config_cflags check.
+
+2013-01-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR fortran/56052
+ * gfortran.dg/gomp/pr56052.f90: New test.
+
+ PR target/49069
+ * gcc.dg/pr49069.c: New test.
+
+2013-01-22 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/55944
+ * g++.dg/cpp0x/constexpr-static10.C: New.
+
+2013-01-22 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/56028
+ * gcc.target/i386/pr56028.c: New test.
+
+2013-01-22 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/55686
+ * gcc.target/i386/pr55686.c: New test.
+
+2013-01-22 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/53609
+ * g++.dg/cpp0x/variadic139.C: New test.
+ * g++.dg/cpp0x/variadic140.C: Likewise.
+ * g++.dg/cpp0x/variadic141.C: Likewise.
+
+2013-01-22 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/warn8.adb: New test.
+
+2013-01-21 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/55919
+ * gfortran.dg/include_8.f90: New test.
+
+2013-01-21 Uros Bizjak <ubizjak@gmail.com>
+
+ * gcc.dg/tree-ssa/pr55579.c: Cleanup esra tree dump.
+ * gfortran.dg/unlimited_polymorphic_8.f90: Cleanup original tree dump.
+
+2013-01-21 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/56051
+ * gcc.c-torture/execute/pr56051.c: New test.
+
+2013-01-21 Uros Bizjak <ubizjak@gmail.com>
+
+ PR rtl-optimization/56023
+ * gcc.dg/pr56023.c: New test.
+
+2013-01-21 Martin Jambor <mjambor@suse.cz>
+
+ PR middle-end/56022
+ * gcc.target/i386/pr56022.c: New test.
+
+2013-01-21 Jason Merrill <jason@redhat.com>
+
+ * lib/target-supports.exp (check_effective_target_alias): New.
+
+2013-01-20 Jack Howarth <howarth@bromo.med.uc.edu>
+
+ PR debug/53235
+ * g++.dg/debug/dwarf2/nested-4.C: XFAIL on darwin.
+
+2013-01-20 Hans-Peter Nilsson <hp@axis.com>
+
+ * gfortran.dg/inquire_10.f90: Run only for non-newlib targets.
+
+2013-01-19 Jeff Law <law@redhat.com>
+
+ PR tree-optimization/52631
+ * tree-ssa/pr52631.c: New test.
+ * tree-ssa/ssa-fre-9: Update expected output.
+
+2013-01-19 Anthony Green <green@moxielogic.com>
+
+ * gcc.dg/tree-ssa/asm-2.c (REGISTER): Pick an appropriate register
+ for moxie.
+
+2013-01-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/56029
+ * g++.dg/torture/pr56029.C: New test.
+
+2013-01-18 Sharad Singhai <singhai@google.com>
+
+ PR tree-optimization/55995
+ * gcc.dg/vect/vect.exp: Use "details" flags for dump info.
+
+2013-01-18 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR target/55433
+ * gcc.target/i386/pr55433.c: New.
+
+2013-01-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/56015
+ * gfortran.dg/pr56015.f90: New test.
+
+2013-01-18 Janis Johnson <janisjo@codesourcery.com>
+
+ * gcc.dg/vect/vect-multitypes-12.c: Refactor dg-final directive.
+
+2013-01-18 James Greenhalgh <james.greenhalgh@arm.com>
+
+ * gcc.target/aarch64/vect-fcm-gt-f.c: Change expected output.
+ * gcc.target/aarch64/vect-fcm-gt-d.c: Likewise.
+ * gcc.target/aarch64/vect-fcm-ge-f.c: Likewise.
+ * gcc.target/aarch64/vect-fcm-ge-d.c: Likewise.
+ * gcc.target/aarch64/vect-fcm-eq-f.c: Likewise.
+
+2013-01-17 Jeff Law <law@redhat.com>
+
+ * gcc.dg/pr52573.c: Move to...
+ * gcc.target/m68k/pr52573.c: Here. Eliminate target selector.
+
+ PR rtl-optimization/52573
+ * gcc.dg/pr52573.c: New test.
+
+2013-01-17 Jack Howarth <howarth@bromo.med.uc.edu>
+
+ PR sanitizer/55679
+ * g++.dg/asan/interception-test-1.C: Skip on darwin.
+ * lib/target-supports.exp (check_effective_target_swapcontext): Use
+ check_no_compiler_messages to test support in ucontext.h.
+ (check_effective_target_setrlimit): Return 0 for Darwin's non-posix
+ compliant RLIMIT_AS.
+
+2013-01-17 Marek Polacek <polacek@redhat.com>
+
+ PR rtl-optimization/55833
+ * gcc.dg/pr55833.c: New test.
+
+2013-01-17 Jan Hubicka <jh@suse.cz>
+
+ PR tree-optimization/55273
+ * gcc.c-torture/compile/pr55273.c: New testcase.
+
+2013-01-17 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/55981
+ * gcc.target/pr55981.c: New test.
+
+2013-01-17 Janis Johnson <janisjo@codesourcery.com>
+
+ * gcc.target/arm/pr40887.c: Require at least armv5.
+ * gcc.target/arm/pr51835.c: Avoid conflicts with multilib flags.
+ * gcc.target/arm/pr51915.c: Likewise.
+ * gcc.target/arm/pr52006.c: Likewise.
+ * gcc.target/arm/pr53187.c: Likewise.
+
+ * gcc.target/arm/ftest-support.h: Replace for compile-only tests.
+ * gcc.target/arm/ftest-support-arm.h: Delete.
+ * gcc.target/arm/ftest-support-thumb.h: Delete.
+ * gcc.target/arm/ftest-armv4-arm.c: Replace with compile-only test.
+ * gcc.target/arm/ftest-armv4t-arm.c: Likewise.
+ * gcc.target/arm/ftest-armv4t-thumb.c: Likewise.
+ * gcc.target/arm/ftest-armv5t-arm.c: Likewise.
+ * gcc.target/arm/ftest-armv5t-thumb.c: Likewise.
+ * gcc.target/arm/ftest-armv5te-arm.c: Likewise.
+ * gcc.target/arm/ftest-armv5te-thumb.c: Likewise.
+ * gcc.target/arm/ftest-armv6-arm.c: Likewise.
+ * gcc.target/arm/ftest-armv6-thumb.c: Likewise.
+ * gcc.target/arm/ftest-armv6k-arm.c: Likewise.
+ * gcc.target/arm/ftest-armv6k-thumb.c: Likewise.
+ * gcc.target/arm/ftest-armv6m-thumb.c: Likewise.
+ * gcc.target/arm/ftest-armv6t2-arm.c: Likewise.
+ * gcc.target/arm/ftest-armv6t2-thumb.c: Likewise.
+ * gcc.target/arm/ftest-armv6z-arm.c: Likewise.
+ * gcc.target/arm/ftest-armv6z-thumb.c: Likewise.
+ * gcc.target/arm/ftest-armv7a-arm.c: Likewise.
+ * gcc.target/arm/ftest-armv7a-thumb.c: Likewise.
+ * gcc.target/arm/ftest-armv7em-thumb.c: Likewise.
+ * gcc.target/arm/ftest-armv7m-thumb.c: Likewise.
+ * gcc.target/arm/ftest-armv7r-arm.c: Likewise.
+ * gcc.target/arm/ftest-armv7r-thumb.c: Likewise.
+ * gcc.target/arm/ftest-armv8a-arm.c: Likewise.
+ * gcc.target/arm/ftest-armv8a-thumb.c: Likewise.
+
+2013-01-17 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimizations/55264
+ * g++.dg/ipa/pr55264.C: New test.
+
+2013-01-16 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/55983
+ * gfortran.dg/class_55.f90: New.
+
+2013-01-16 Janis Johnson <janisjo@codesourcery.com>
+
+ PR testsuite/55994
+ * gcc.c-torture/execute/builtins/builtins.exp: Add
+ -Wl,--allow-multiple-definition for eabi and elf targets.
+
+ PR testsuite/54622
+ * lib/target-supports.exp (check_effective_target_vect_perm_byte,
+ check_effective_target_vect_perm_short,
+ check_effective_target_vect_widen_mult_qi_to_hi_pattern,
+ check_effective_target_vect64): Return 0 for big-endian ARM.
+ (check_effective_target_vect_widen_sum_qi_to_hi): Return 1 for ARM.
+
+ * gcc.target/arm/neon-vld1_dupQ.c: Use types that match function
+ prototypes.
+
+2013-01-16 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/55964
+ * gcc.dg/torture/pr55964.c: New testcase.
+
+2013-01-16 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/54767
+ PR tree-optimization/53465
+ * gfortran.fortran-torture/execute/pr54767.f90: New testcase.
+
+2013-01-16 Christian Bruel <christian.bruel@st.com>
+
+ PR target/55301
+ * gcc.target/sh/sh-switch.c: New testcase.
+
+2013-01-15 Janis Johnson <janisjo@codesourcery.com>
+
+ * gcc.dg/webizer.c: Increase the array size.
+
+2013-01-15 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/55940
+ * gcc.dg/pr55940.c: New test.
+
+2013-01-15 Manfred Schwarb <manfred99@gmx.ch>
+ Harald Anlauf <anlauf@gmx.de>
+
+ * gfortran.dg/bounds_check_4.f90: Add dg-options "-fbounds-check".
+ * gfortran.dg/bounds_check_5.f90: Likewise.
+ * gfortran.dg/class_array_10.f03: Fix syntax of dg-directive.
+ * gfortran.dg/continuation_9.f90: Likewise.
+ * gfortran.dg/move_alloc_13.f90: Likewise.
+ * gfortran.dg/structure_constructor_11.f90: Likewise.
+ * gfortran.dg/tab_continuation.f: Likewise.
+ * gfortran.dg/warning-directive-2.F90: Likewise.
+ * gfortran.dg/coarray_lib_token_4.f90: Remove misspelled directive.
+
+2013-01-15 Janis Johnson <janisjo@codesourcery.com>
+
+ * gcc.target/arm/fma.c: Skip for conflicting multilib options.
+ * gcc.target/arm/fma-sp.c: Likewise.
+
+2013-01-15 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR rtl-optimization/55153
+ * gcc.dg/pr55153.c: New.
+
+2013-01-15 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/55920
+ * gcc.c-torture/compile/pr55920.c: New test.
+
+2013-01-15 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/55882
+ * gcc.dg/torture/pr55882.c: New testcase.
+
+2013-01-15 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/55955
+ * gcc.c-torture/compile/pr55955.c: New test.
+
+2013-01-15 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/55663
+ * g++.dg/cpp0x/alias-decl-31.C: New test.
+
+2013-01-15 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/54286
+ * gfortran.dg/proc_ptr_result_8.f90 : Add module 'm' to check
+ case where interface is null.
+
+2013-01-14 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/55806
+ * gfortran.dg/array_constructor_40.f90: New test.
+
+2013-01-14 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * gcc.dg/tree-ssa/slsr-8.c: Allow widening multiplications.
+
+2013-01-14 Tejas Belagod <tejas.belagod@arm.com>
+
+ * gcc.target/aarch64/aarch64/vect-ld1r-compile-fp.c: New.
+ * gcc.target/aarch64/vect-ld1r-compile.c: New.
+ * gcc.target/aarch64/vect-ld1r-fp.c: New.
+ * gcc.target/aarch64/vect-ld1r.c: New.
+ * gcc.target/aarch64/vect-ld1r.x: New.
+
+2013-01-14 Andi Kleen <ak@linux.intel.com>
+
+ PR target/55948
+ * gcc.target/i386/hle-clear-rel.c: New file
+ * gcc.target/i386/hle-store-rel.c: New file.
+
+2013-01-14 Harald Anlauf <anlauf@gmx.de>
+
+ * gfortran.dg/aint_anint_1.f90: Add dg-do run.
+ * gfortran.dg/bounds_check_4.f90: Likewise.
+ * gfortran.dg/inquire_10.f90: Likewise.
+ * gfortran.dg/minloc_3.f90: Likewise.
+ * gfortran.dg/minlocval_3.f90: Likewise.
+ * gfortran.dg/module_double_reuse.f90: Likewise.
+ * gfortran.dg/mvbits_1.f90: Likewise.
+ * gfortran.dg/oldstyle_1.f90: Likewise.
+ * gfortran.dg/pr20163-2.f: Likewise.
+ * gfortran.dg/save_1.f90: Likewise.
+ * gfortran.dg/scan_1.f90: Likewise.
+ * gfortran.dg/select_char_1.f90: Likewise.
+ * gfortran.dg/shape_4.f90: Likewise.
+ * gfortran.dg/coarray_29_2.f90: Fix dg-do directive.
+ * gfortran.dg/function_optimize_10.f90: Likewise.
+ * gfortran.dg/gomp/appendix-a/a.11.2.f90: Likewise.
+ * gfortran.dg/used_types_17.f90: Likewise.
+ * gfortran.dg/used_types_18.f90: Likewise.
+
+2013-01-13 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/54286
+ * gfortran.dg/proc_ptr_result_8.f90 : New test.
+
+2013-01-13 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * gcc.dg/unroll_5.c: Add nomips16 attributes.
+
+2013-01-13 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * gcc.dg/tree-ssa/ssa-dom-thread-4.c: Update expected results for MIPS.
+
+2013-01-12 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/55072
+ * gfortran.dg/assumed_type_2.f90: Fix test case.
+ * gfortran.dg/internal_pack_13.f90: New test.
+ * gfortran.dg/internal_pack_14.f90: New test.
+
+2013-01-08 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/55868
+ * gfortran.dg/unlimited_polymorphic_8.f90: Update
+ scan-tree-dump-times for foo.0.x._vptr to deal with change from
+ $tar to STAR.
+
+2013-01-11 Andreas Schwab <schwab@linux-m68k.org>
+
+ * gcc.c-torture/compile/pr55921.c: Don't use matching constraints.
+
+2013-01-11 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ PR target/55719
+ * gcc.target/s390/pr55719.c: New testcase.
+
+2013-01-11 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/44061
+ * gcc.dg/pr44061.c: New testcase.
+
+2013-01-10 Richard Sandiford <rdsandiford@googlemail.com>
+
+ Update copyright years.
+
+2013-01-10 Aldy Hernandez <aldyh@redhat.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ PR target/55565
+ * gcc.target/powerpc/ppc-mov-1.c: Update scan-assembler-not regex.
+
+2013-01-10 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR rtl-optimization/55672
+ * gcc.target/i386/pr55672.c: New.
+
+2013-01-10 Jeff Law <law@redhat.com>
+
+ * gcc/dg/tree-ssa/vrp06.c: Tighten expected output. Make each
+ pass/fail message unique.
+
+
+2013-01-10 Jason Merrill <jason@redhat.com>
+
+ * ada/.gitignore: New.
+
+2013-01-10 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * g++.dg/tls/thread_local-cse.C: Don't xfail on *-*-solaris2.9.
+ Add tls options.
+ * g++.dg/tls/thread_local2.C: Likewise.
+ * g++.dg/tls/thread_local2g.C: Likewise.
+ * g++.dg/tls/thread_local6.C: Likewise.
+ * g++.dg/tls/thread_local-order1.C: Add tls options.
+ * g++.dg/tls/thread_local-order2.C: Likewise.
+ * g++.dg/tls/thread_local3.C: Likewise.
+ * g++.dg/tls/thread_local3g.C: Likewise.
+ * g++.dg/tls/thread_local4.C: Likewise.
+ * g++.dg/tls/thread_local4g.C: Likewise.
+ * g++.dg/tls/thread_local5.C: Likewise.
+ * g++.dg/tls/thread_local5g.C: Likewise.
+ * g++.dg/tls/thread_local6g.C: Likewise.
+
+2013-01-10 Kostya Serebryany <kcc@google.com>
+
+ * g++.dg/asan/asan_test.cc: Sync from upstream.
+
+2013-01-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/55921
+ * gcc.c-torture/compile/pr55921.c: New test.
+
+2013-01-09 Jan Hubicka <jh@suse.cz>
+
+ PR tree-optimization/55569
+ * gcc.c-torture/compile/pr55569.c: New testcase.
+
+2013-01-09 Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/47203
+ * gfortran.dg/use_28.f90: New test.
+
+2013-01-09 Uros Bizjak <ubizjak@gmail.com>
+
+ * gfortran.dg/intrinsic_size_3.f90: Make scan-tree-dump-times
+ number matching more robust.
+
+2013-01-09 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR rtl-optimization/55829
+ * gcc.target/i386/pr55829.c: New.
+
+2013-01-09 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/55758
+ * gfortran.dg/bind_c_bool_1.f90: New.
+ * gfortran.dg/do_5.f90: Add dg-warning.
+
+2013-01-09 Jan Hubicka <jh@suse.cz>
+
+ PR tree-optimization/55875
+ * gcc.c-torture/execute/pr55875.c: New testcase.
+ * g++.dg/torture/pr55875.C: New testcase.
+
+2013-01-09 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/48418
+ * c-c++-common/pr48418.c: New test.
+
+2013-01-09 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/55801
+ * g++.dg/tls/thread_local-ice.C: New.
+
+2013-01-09 Andreas Schwab <schwab@suse.de>
+
+ * gcc.dg/guality/pr54693.c: Null-terminate arr.
+
+2013-01-09 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/48189
+ * gcc.dg/pr48189.c: New test.
+
+2013-01-04 Jan Hubicka <jh@suse.cz>
+
+ PR tree-optimization/55823
+ * g++.dg/ipa/devirt-10.C: New testcase.
+
+2013-01-08 Uros Bizjak <ubizjak@gmail.com>
+ Vladimir Yakovlev <vladimir.b.yakovlev@intel.com>
+
+ PR rtl-optimization/55845
+ * gcc.target/i386/pr55845.c: New test.
+
+2013-01-08 Tejas Belagod <tejas.belagod@arm.com>
+
+ * gcc.target/aarch64/vect-mull-compile.c: Explicitly scan for
+ instructions generated instead of number of occurances.
+
+2013-01-08 James Greenhalgh <james.greenhalgh@arm.com>
+
+ * gcc.target/aarch64/vect-fcm-eq-d.c: New.
+ * gcc.target/aarch64/vect-fcm-eq-f.c: Likewise.
+ * gcc.target/aarch64/vect-fcm-ge-d.c: Likewise.
+ * gcc.target/aarch64/vect-fcm-ge-f.c: Likewise.
+ * gcc.target/aarch64/vect-fcm-gt-d.c: Likewise.
+ * gcc.target/aarch64/vect-fcm-gt-f.c: Likewise.
+ * gcc.target/aarch64/vect-fcm.x: Likewise.
+ * lib/target-supports.exp
+ (check_effective_target_vect_cond): Enable for AArch64.
+
+2013-01-08 James Greenhalgh <james.greenhalgh@arm.com>
+
+ * gcc.target/aarch64/vsqrt.c (test_square_root_v2sf): Use
+ endian-safe float pool loading.
+ (test_square_root_v4sf): Likewise.
+ (test_square_root_v2df): Likewise.
+ * lib/target-supports.exp
+ (check_effective_target_vect_call_sqrtf): Add AArch64.
+
+2013-01-08 Martin Jambor <mjambor@suse.cz>
+
+ PR debug/55579
+ * gcc.dg/tree-ssa/pr55579.c: New test.
+
+2013-01-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * g++.dg/debug/dwarf2/pr54508.C: Allow for more whitespace after
+ asm comments.
+
+2013-01-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/55890
+ * gcc.dg/torture/pr55890-3.c: New test.
+
+ PR middle-end/55851
+ * gcc.c-torture/compile/pr55851.c: New test.
+
+ PR sanitizer/55844
+ * c-c++-common/asan/null-deref-1.c: Add -fno-shrink-wrap to
+ dg-options.
+
+2013-01-08 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/55618
+ * gfortran.dg/elemental_scalar_args_2.f90: New test.
+
+2013-01-07 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/55763
+ * gfortran.dg/pointer_init_2.f90: Update dg-error.
+ * gfortran.dg/pointer_init_7.f90: New.
+
+2013-01-07 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/lto/pr55525_0.c (s): Size like char *.
+
+2013-01-07 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/55890
+ * gcc.dg/torture/pr55890-1.c: New testcase.
+ * gcc.dg/torture/pr55890-2.c: Likewise.
+
+2013-01-07 James Greenhalgh <james.greenhalgh@arm.com>
+
+ * gcc.target/aarch64/fmovd.c: New.
+ * gcc.target/aarch64/fmovf.c: Likewise.
+ * gcc.target/aarch64/fmovd-zero.c: Likewise.
+ * gcc.target/aarch64/fmovf-zero.c: Likewise.
+ * gcc.target/aarch64/vect-fmovd.c: Likewise.
+ * gcc.target/aarch64/vect-fmovf.c: Likewise.
+ * gcc.target/aarch64/vect-fmovd-zero.c: Likewise.
+ * gcc.target/aarch64/vect-fmovf-zero.c: Likewise.
+
+2013-01-07 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/55888
+ PR tree-optimization/55862
+ * gcc.dg/torture/pr55888.c: New testcase.
+
+2013-01-07 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/55852
+ * gfortran.dg/intrinsic_size_3.f90: New.
+
+2013-01-07 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/55763
+ * gfortran.dg/select_type_32.f90: New.
+
+2013-01-04 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/52343
+ * g++.dg/cpp0x/alias-decl-29.C: New test.
+
+2013-01-06 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/53876
+ PR fortran/54990
+ PR fortran/54992
+ * gfortran.dg/class_array_15.f03: New test.
+
+2013-01-06 Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/42769
+ PR fortran/45836
+ PR fortran/45900
+ * gfortran.dg/use_23.f90: New test.
+ * gfortran.dg/use_24.f90: New test.
+ * gfortran.dg/use_25.f90: New test.
+ * gfortran.dg/use_26.f90: New test.
+ * gfortran.dg/use_27.f90: New test.
+
+2013-01-06 Olivier Hainque <hainque@adacore.com>
+
+ * gnat.dg/specs/clause_on_volatile.ads: New test.
+
+2013-01-06 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/alignment10.adb: New test.
+
+2013-01-05 Steven G. Kargl <kargl@gcc.gnu.org>
+ Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/55827
+ * gfortran.dg/use_22.f90: New test.
+
+2013-01-04 Andrew Pinski <apinski@cavium.com>
+
+ * gcc.target/aarch64/cmp-1.c: New testcase.
+
+2013-01-04 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/55172
+ * gfortran.dg/select_type_31.f03: New test.
+
+2013-01-04 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/54526 (again)
+ * g++.dg/cpp0x/parse2.C: Extend.
+ * g++.old-deja/g++.other/crash28.C: Adjust.
+
+2013-01-04 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/55862
+ * gcc.dg/torture/pr55862.c: New testcase.
+
+2013-01-04 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/55755
+ * gcc.dg/torture/pr55755.c: New test.
+ * gcc.dg/tree-ssa/sra-13.c: Likewise.
+ * gcc.dg/tree-ssa/pr45144.c: Update.
+
+2013-01-04 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/55863
+ * gcc.dg/fold-reassoc-2.c: New testcase.
+
+2013-01-04 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/55763
+ * gfortran.dg/null_7.f90: New.
+
+2013-01-04 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/55854
+ PR fortran/55763
+ * gfortran.dg/unlimited_polymorphic_3.f03: Remove invalid code.
+ * gfortran.dg/unlimited_polymorphic_7.f90: New.
+ * gfortran.dg/unlimited_polymorphic_8.f90: New.
+
+2013-01-03 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * gcc.dg/torture/tls/tls-reload-1.c (main): Make testing more thorough.
+
+2013-01-03 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/55855
+ * gfortran.dg/assignment_1.f90: Modified.
+ * gfortran.dg/assignment_4.f90: New.
+
+2013-01-03 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.dg/torture/tls/tls-reload-1.c: Add tls options.
+
+2013-01-03 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/55857
+ * gcc.dg/vect/pr55857-1.c: New testcase.
+ * gcc.dg/vect/pr55857-2.c: Likewise.
+
+2013-01-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/55838
+ * gcc.dg/pr55838.c: New test.
+
+ PR tree-optimization/55832
+ * gcc.c-torture/compile/pr55832.c: New test.
+
+2013-01-02 Teresa Johnson <tejohnson@google.com>
+
+ * gcc.dg/tree-ssa/loop-1.c: Update expected dump message.
+ * gcc.dg/tree-ssa/loop-23.c: Ditto.
+ * gcc.dg/tree-ssa/cunroll-1.c: Ditto.
+ * gcc.dg/tree-ssa/cunroll-2.c: Ditto.
+ * gcc.dg/tree-ssa/cunroll-3.c: Ditto.
+ * gcc.dg/tree-ssa/cunroll-4.c: Ditto.
+ * gcc.dg/tree-ssa/cunroll-5.c: Ditto.
+ * gcc.dg/unroll_1.c: Ditto.
+ * gcc.dg/unroll_2.c: Ditto.
+ * gcc.dg/unroll_3.c: Ditto.
+ * gcc.dg/unroll_4.c: Ditto.
+
+2013-01-02 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * gcc.dg/pr55430.c: Define MAP_FAILED if not defined.
+
+2013-01-02 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR fortran/55818
+ * gfortran.dg/eof_4.f90: New test.
+
+2013-01-02 Jakub Jelinek <jakub@redhat.com>
+
+ * lib/c-compat.exp (compat-use-alt-compiler): Remove
+ -fno-diagnostics-show-caret from TEST_ALWAYS_FLAGS if needed.
+ (compat-use-tst-compiler): Restore TEST_ALWAYS_FLAGS.
+ (compat_setup_dfp): Initialize compat_alt_caret and
+ compat_save_TEST_ALWAYS_FLAGS.
+
+2013-01-02 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * gcc.dg/torture/tls/tls-reload-1.c: New test.
+
+2013-01-02 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * gcc.dg/torture/fp-int-convert-2.c: New test.
+
+2013-01-01 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ * gfortran.dg/newunit_3.f90: Add dg-do run.
+ * gfortran.dg/inquire_15.f90: Add dg-do run.
+
+2013-01-01 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/55831
+ * gcc.dg/pr55831.c: New test.
+
+Copyright (C) 2013 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
2013-12-31 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/59622
diff --git a/gcc-4.9/gcc/testsuite/ada/.gitignore b/gcc-4.9/gcc/testsuite/ada/.gitignore
new file mode 100644
index 0000000..a499072
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/ada/.gitignore
@@ -0,0 +1,2 @@
+# In the Ada testsuite, .a is an ada source file, not a library.
+!*.a
diff --git a/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr57541-2.c b/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr57541-2.c
new file mode 100644
index 0000000..83325a7
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr57541-2.c
@@ -0,0 +1,15 @@
+/* PR middle-end/57541 */
+/* { dg-do compile } */
+/* { dg-options "-fcilkplus" } */
+
+int foo1 ()
+{
+ int a;
+ a = __sec_reduce_add (1); /* { dg-error "Invalid builtin arguments" } */
+}
+
+int foo2 ()
+{
+ int a;
+ a = __sec_reduce_add (); /* { dg-error "Invalid builtin arguments" } */
+}
diff --git a/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr57541.c b/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr57541.c
index 9bff079..f379e46 100755
--- a/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr57541.c
+++ b/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr57541.c
@@ -1,9 +1,10 @@
+/* PR middle-end/57541 */
/* { dg-do compile } */
/* { dg-options "-fcilkplus" } */
int A[10];
-int main () {
+int foo () {
/* C compiler uses the term "undeclared" whereas C++ compiler uses
"not declared". Thus, grepping for declared seem to be the easiest. */
@@ -13,5 +14,13 @@ int main () {
A[l:s:c];
}
-/* { dg-message "note: each" "defined" { target c } 10 } */
+int foo1 (int N) {
+
+ char c = (char)N;
+ short s = (short)N;
+ A[l:s:c]; /* { dg-error "declared" } */
+}
+
+
+/* { dg-message "note: each" "defined" { target c } 11 } */
diff --git a/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr58942.c b/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr58942.c
new file mode 100644
index 0000000..87903af
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr58942.c
@@ -0,0 +1,8 @@
+/* PR c/58942 */
+/* { dg-do compile } */
+/* { dg-options "-fcilkplus" } */
+
+int foo (int*p, int i)
+{
+ return __sec_reduce_max_ind(p[1:i]);
+}
diff --git a/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr61191.c b/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr61191.c
new file mode 100644
index 0000000..deb8392
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr61191.c
@@ -0,0 +1,10 @@
+/* PR c/61191 */
+/* { dg-do compile } */
+/* { dg-options "-fcilkplus" } */
+
+double f(double * A, double * B)
+{
+ return __sec_reduce_add((B[0:500])(; /* { dg-error "called object" "" { target c } } */
+/* { dg-error "expected expression before ';' token" "" { target c } 7 } */
+/* { dg-error "expected primary-expression before ';' token" "" { target c++ } 7 } */
+} /* { dg-error "expected" "" { target c } } */
diff --git a/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/CK/invalid_sync.cc b/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/CK/invalid_sync.cc
new file mode 100644
index 0000000..cf1caf1
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/CK/invalid_sync.cc
@@ -0,0 +1,9 @@
+/* PR c/60189 */
+/* { dg-do compile } */
+/* { dg-options "-fcilkplus" } */
+
+int main (void)
+{
+ _Cilk_sync return; /* { dg-error " expected ';' before 'return'" } */
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/c-c++-common/gomp/pr59073.c b/gcc-4.9/gcc/testsuite/c-c++-common/gomp/pr59073.c
new file mode 100644
index 0000000..543ff5d
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/c-c++-common/gomp/pr59073.c
@@ -0,0 +1,12 @@
+/* PR c/59073 */
+/* { dg-do compile } */
+/* { dg-options "-fopenmp" } */
+
+void
+foo ()
+{
+ int i;
+#pragma omp distribute parallel for
+ for (i = 0; i < 10; i) /* { dg-error "invalid increment expression" } */
+ ;
+}
diff --git a/gcc-4.9/gcc/testsuite/c-c++-common/gomp/pr60823-1.c b/gcc-4.9/gcc/testsuite/c-c++-common/gomp/pr60823-1.c
new file mode 100644
index 0000000..5f98572
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/c-c++-common/gomp/pr60823-1.c
@@ -0,0 +1,19 @@
+/* PR tree-optimization/60823 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fopenmp-simd" } */
+
+#pragma omp declare simd simdlen(4) notinbranch
+int
+foo (const double c1, const double c2)
+{
+ double z1 = c1, z2 = c2;
+ int res = 100, i;
+
+ for (i = 0; i < 100; i++)
+ {
+ res = (z1 * z1 + z2 * z2 > 4.0) ? (i < res ? i : res) : res;
+ z1 = c1 + z1 * z1 - z2 * z2;
+ z2 = c2 + 2.0 * z1 * z2;
+ }
+ return res;
+}
diff --git a/gcc-4.9/gcc/testsuite/c-c++-common/gomp/pr60823-2.c b/gcc-4.9/gcc/testsuite/c-c++-common/gomp/pr60823-2.c
new file mode 100644
index 0000000..4c87620
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/c-c++-common/gomp/pr60823-2.c
@@ -0,0 +1,44 @@
+/* PR tree-optimization/60823 */
+/* { dg-do run } */
+/* { dg-require-effective-target vect_simd_clones } */
+/* { dg-options "-O2 -fopenmp-simd" } */
+
+#pragma omp declare simd simdlen(4) notinbranch
+__attribute__((noinline)) int
+foo (double c1, double c2)
+{
+ double z1 = c1, z2 = c2;
+ int res = 100, i;
+
+ for (i = 0; i < 5; i++)
+ {
+ res = (z1 * z1 + z2 * z2 > 4.0) ? (i < res ? i : res) : res;
+ z1 = c1 + z1 * z1 - z2 * z2;
+ z2 = c2 + 2.0 * z1 * z2;
+ c1 += 0.5;
+ c2 += 0.5;
+ }
+ return res;
+}
+
+__attribute__((noinline, noclone)) void
+bar (double *x, double *y)
+{
+ asm volatile ("" : : "rm" (x), "rm" (y) : "memory");
+}
+
+int
+main ()
+{
+ int i;
+ double c[4] = { 0.0, 1.0, 0.0, 1.0 };
+ double d[4] = { 0.0, 1.0, 2.0, 0.0 };
+ int e[4];
+ bar (c, d);
+#pragma omp simd safelen(4)
+ for (i = 0; i < 4; i++)
+ e[i] = foo (c[i], d[i]);
+ if (e[0] != 3 || e[1] != 1 || e[2] != 1 || e[3] != 2)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/c-c++-common/gomp/pr60823-3.c b/gcc-4.9/gcc/testsuite/c-c++-common/gomp/pr60823-3.c
new file mode 100644
index 0000000..93e9fbe
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/c-c++-common/gomp/pr60823-3.c
@@ -0,0 +1,32 @@
+/* PR tree-optimization/60823 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fopenmp-simd -fno-strict-aliasing" } */
+
+void bar (char *, double *);
+
+#if __SIZEOF_DOUBLE__ >= 4
+
+struct S { char c[sizeof (double)]; };
+void baz (struct S, struct S);
+union U { struct S s; double d; };
+
+#pragma omp declare simd simdlen(4) notinbranch
+__attribute__((noinline)) int
+foo (double c1, double c2)
+{
+ double *a = &c1;
+ char *b = (char *) &c1 + 2;
+
+ b[-2]++;
+ b[1]--;
+ *a++;
+ c2++;
+ bar ((char *) &c2 + 1, &c2);
+ c2 *= 3.0;
+ bar (b, a);
+ baz (((union U) { .d = c1 }).s, ((union U) { .d = c2 }).s);
+ baz (*(struct S *)&c1, *(struct S *)&c2);
+ return c1 + c2 + ((struct S *)&c1)->c[1];
+}
+
+#endif
diff --git a/gcc-4.9/gcc/testsuite/c-c++-common/gomp/pr61486-1.c b/gcc-4.9/gcc/testsuite/c-c++-common/gomp/pr61486-1.c
new file mode 100644
index 0000000..9ada58c
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/c-c++-common/gomp/pr61486-1.c
@@ -0,0 +1,13 @@
+/* PR middle-end/61486 */
+/* { dg-do compile } */
+/* { dg-options "-fopenmp" } */
+
+int
+foo (int *a)
+{
+ int i, j = 0;
+ #pragma omp target teams distribute simd linear(i, j) map(a[:10])
+ for (i = 0; i < 10; i++)
+ a[i] = j++;
+ return i + j;
+}
diff --git a/gcc-4.9/gcc/testsuite/c-c++-common/gomp/pr61486-2.c b/gcc-4.9/gcc/testsuite/c-c++-common/gomp/pr61486-2.c
new file mode 100644
index 0000000..7294381
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/c-c++-common/gomp/pr61486-2.c
@@ -0,0 +1,458 @@
+/* PR middle-end/61486 */
+/* { dg-do compile } */
+/* { dg-options "-fopenmp" } */
+
+#pragma omp declare target
+void dosomething (int *a, int n, int m);
+#pragma omp end declare target
+
+void
+test (int n, int o, int p, int q, int r, int s, int *pp)
+{
+ int a[o], i, j;
+ #pragma omp target data device (n + 1) if (n != 6) map (tofrom: n, r)
+ {
+ #pragma omp target device (n + 1) if (n != 6) map (from: n) map (alloc: a[2:o-2])
+ dosomething (a, n, 0);
+ #pragma omp target teams device (n + 1) num_teams (n + 4) thread_limit (n * 2) \
+ if (n != 6)map (from: n) map (alloc: a[2:o-2]) default(shared) \
+ private (p) firstprivate (q) shared (n) reduction (+: r)
+ {
+ r = r + 1;
+ p = q;
+ dosomething (a, n, p + q);
+ }
+ #pragma omp target teams distribute device (n + 1) num_teams (n + 4) collapse (2) \
+ if (n != 6)map (from: n) map (alloc: a[2:o-2]) default(shared) \
+ private (p) firstprivate (q) shared (n) reduction (+: r) \
+ thread_limit (n * 2) dist_schedule (static, 4)
+ for (i = 0; i < 10; i++)
+ for (j = 0; j < 10; j++)
+ {
+ r = r + 1;
+ p = q;
+ dosomething (a, n, p + q);
+ }
+ #pragma omp target teams distribute device (n + 1) num_teams (n + 4) \
+ if (n != 6)map (from: n) map (alloc: a[2:o-2]) default(shared) \
+ private (p) firstprivate (q) shared (n) reduction (+: r) \
+ thread_limit (n * 2) dist_schedule (static, 4)
+ for (i = 0; i < 10; i++)
+ for (j = 0; j < 10; j++)
+ {
+ r = r + 1;
+ p = q;
+ dosomething (a, n, p + q);
+ }
+ #pragma omp target teams distribute parallel for device (n + 1) num_teams (n + 4) \
+ if (n != 6)map (from: n) map (alloc: a[2:o-2]) default(shared) \
+ private (p) firstprivate (q) shared (n) reduction (+: r) \
+ thread_limit (n * 2) dist_schedule (static, 4) collapse (2) \
+ num_threads (n + 4) proc_bind (spread) lastprivate (s) \
+ ordered schedule (static, 8)
+ for (i = 0; i < 10; i++)
+ for (j = 0; j < 10; j++)
+ {
+ r = r + 1;
+ p = q;
+ dosomething (a, n, p + q);
+ #pragma omp ordered
+ p = q;
+ s = i * 10 + j;
+ }
+ #pragma omp target teams distribute parallel for device (n + 1) num_teams (n + 4) \
+ if (n != 6)map (from: n) map (alloc: a[2:o-2]) default(shared) \
+ private (p) firstprivate (q) shared (n) reduction (+: r) \
+ thread_limit (n * 2) dist_schedule (static, 4) num_threads (n + 4) \
+ proc_bind (master) lastprivate (s) ordered schedule (static, 8)
+ for (i = 0; i < 10; i++)
+ {
+ for (j = 0; j < 10; j++)
+ {
+ r = r + 1;
+ p = q;
+ dosomething (a, n, p + q);
+ }
+ #pragma omp ordered
+ p = q;
+ s = i * 10;
+ }
+ #pragma omp target teams distribute parallel for simd device (n + 1) \
+ if (n != 6)map (from: n) map (alloc: a[2:o-2]) default(shared) \
+ private (p) firstprivate (q) shared (n) reduction (+: r) \
+ thread_limit (n * 2) dist_schedule (static, 4) collapse (2) \
+ num_threads (n + 4) proc_bind (spread) lastprivate (s) \
+ schedule (static, 8) num_teams (n + 4) safelen(8)
+ for (i = 0; i < 10; i++)
+ for (j = 0; j < 10; j++)
+ {
+ r = r + 1;
+ p = q;
+ a[2+i*10+j] = p + q;
+ s = i * 10 + j;
+ }
+ #pragma omp target teams distribute parallel for simd device (n + 1) \
+ if (n != 6)map (from: n) map (alloc: a[2:o-2]) default(shared) \
+ private (p) firstprivate (q) shared (n) reduction (+: r) \
+ thread_limit (n * 2) dist_schedule (static, 4) num_threads (n + 4) \
+ proc_bind (master) lastprivate (s) schedule (static, 8) \
+ num_teams (n + 4) safelen(16) linear(i:1) aligned (pp:4)
+ for (i = 0; i < 10; i++)
+ {
+ r = r + 1;
+ p = q;
+ a[2+i] = p + q;
+ s = i * 10;
+ }
+ #pragma omp target teams distribute simd device (n + 1) \
+ if (n != 6)map (from: n) map (alloc: a[2:o-2]) default(shared) \
+ private (p) firstprivate (q) shared (n) reduction (+: r) \
+ thread_limit (n * 2) dist_schedule (static, 4) collapse (2) \
+ lastprivate (s) num_teams (n + 4) safelen(8)
+ for (i = 0; i < 10; i++)
+ for (j = 0; j < 10; j++)
+ {
+ r = r + 1;
+ p = q;
+ a[2+i*10+j] = p + q;
+ s = i * 10 + j;
+ }
+ #pragma omp target teams distribute simd device (n + 1) \
+ if (n != 6)map (from: n) map (alloc: a[2:o-2]) default(shared) \
+ private (p) firstprivate (q) shared (n) reduction (+: r) \
+ thread_limit (n * 2) dist_schedule (static, 4) lastprivate (s) \
+ num_teams (n + 4) safelen(16) linear(i:1) aligned (pp:4)
+ for (i = 0; i < 10; i++)
+ {
+ r = r + 1;
+ p = q;
+ a[2+i] = p + q;
+ s = i * 10;
+ }
+ #pragma omp target device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2])
+ #pragma omp teams num_teams (n + 4) thread_limit (n * 2) default(shared) \
+ private (p) firstprivate (q) shared (n) reduction (+: r)
+ {
+ r = r + 1;
+ p = q;
+ dosomething (a, n, p + q);
+ }
+ #pragma omp target device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2])
+ #pragma omp teams distribute num_teams (n + 4) collapse (2) default(shared) \
+ private (p) firstprivate (q) shared (n) reduction (+: r) \
+ thread_limit (n * 2) dist_schedule (static, 4)
+ for (i = 0; i < 10; i++)
+ for (j = 0; j < 10; j++)
+ {
+ r = r + 1;
+ p = q;
+ dosomething (a, n, p + q);
+ }
+ #pragma omp target device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2])
+ #pragma omp teams distribute num_teams (n + 4) default(shared) \
+ private (p) firstprivate (q) shared (n) reduction (+: r) \
+ thread_limit (n * 2) dist_schedule (static, 4)
+ for (i = 0; i < 10; i++)
+ for (j = 0; j < 10; j++)
+ {
+ r = r + 1;
+ p = q;
+ dosomething (a, n, p + q);
+ }
+ #pragma omp target device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2])
+ #pragma omp teams distribute parallel for num_teams (n + 4) if (n != 6) \
+ default(shared) private (p) firstprivate (q) shared (n) reduction (+: r) \
+ thread_limit (n * 2) dist_schedule (static, 4) collapse (2) \
+ num_threads (n + 4) proc_bind (spread) lastprivate (s) \
+ ordered schedule (static, 8)
+ for (i = 0; i < 10; i++)
+ for (j = 0; j < 10; j++)
+ {
+ r = r + 1;
+ p = q;
+ dosomething (a, n, p + q);
+ #pragma omp ordered
+ p = q;
+ s = i * 10 + j;
+ }
+ #pragma omp target device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2])
+ #pragma omp teams distribute parallel for num_teams (n + 4) if (n != 6) \
+ default(shared) private (p) firstprivate (q) shared (n) reduction (+: r) \
+ thread_limit (n * 2) dist_schedule (static, 4) num_threads (n + 4) \
+ proc_bind (master) lastprivate (s) ordered schedule (static, 8)
+ for (i = 0; i < 10; i++)
+ {
+ for (j = 0; j < 10; j++)
+ {
+ r = r + 1;
+ p = q;
+ dosomething (a, n, p + q);
+ }
+ #pragma omp ordered
+ p = q;
+ s = i * 10;
+ }
+ #pragma omp target device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2])
+ #pragma omp teams distribute parallel for simd if (n != 6)default(shared) \
+ private (p) firstprivate (q) shared (n) reduction (+: r) \
+ thread_limit (n * 2) dist_schedule (static, 4) collapse (2) \
+ num_threads (n + 4) proc_bind (spread) lastprivate (s) \
+ schedule (static, 8) num_teams (n + 4) safelen(8)
+ for (i = 0; i < 10; i++)
+ for (j = 0; j < 10; j++)
+ {
+ r = r + 1;
+ p = q;
+ a[2+i*10+j] = p + q;
+ s = i * 10 + j;
+ }
+ #pragma omp target device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2])
+ #pragma omp teams distribute parallel for simd if (n != 6)default(shared) \
+ private (p) firstprivate (q) shared (n) reduction (+: r) \
+ thread_limit (n * 2) dist_schedule (static, 4) num_threads (n + 4) \
+ proc_bind (master) lastprivate (s) schedule (static, 8) \
+ num_teams (n + 4) safelen(16) linear(i:1) aligned (pp:4)
+ for (i = 0; i < 10; i++)
+ {
+ r = r + 1;
+ p = q;
+ a[2+i] = p + q;
+ s = i * 10;
+ }
+ #pragma omp target device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2])
+ #pragma omp teams distribute simd default(shared) \
+ private (p) firstprivate (q) shared (n) reduction (+: r) \
+ thread_limit (n * 2) dist_schedule (static, 4) collapse (2) \
+ lastprivate (s) num_teams (n + 4) safelen(8)
+ for (i = 0; i < 10; i++)
+ for (j = 0; j < 10; j++)
+ {
+ r = r + 1;
+ p = q;
+ a[2+i*10+j] = p + q;
+ s = i * 10 + j;
+ }
+ #pragma omp target device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2])
+ #pragma omp teams distribute simd default(shared) \
+ private (p) firstprivate (q) shared (n) reduction (+: r) \
+ thread_limit (n * 2) dist_schedule (static, 4) lastprivate (s) \
+ num_teams (n + 4) safelen(16) linear(i:1) aligned (pp:4)
+ for (i = 0; i < 10; i++)
+ {
+ r = r + 1;
+ p = q;
+ a[2+i] = p + q;
+ s = i * 10;
+ }
+ #pragma omp target teams device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2]) \
+ num_teams (n + 4) thread_limit (n * 2)default(shared) shared(n) \
+ private (p) reduction (+: r)
+ #pragma omp distribute collapse (2) dist_schedule (static, 4) firstprivate (q)
+ for (i = 0; i < 10; i++)
+ for (j = 0; j < 10; j++)
+ {
+ r = r + 1;
+ p = q;
+ dosomething (a, n, p + q);
+ }
+ #pragma omp target teams device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2]) \
+ num_teams (n + 4) thread_limit (n * 2) shared(n) private(p) reduction (+ : r) \
+ default(shared)
+ #pragma omp distribute dist_schedule (static, 4) firstprivate (q)
+ for (i = 0; i < 10; i++)
+ for (j = 0; j < 10; j++)
+ {
+ r = r + 1;
+ p = q;
+ dosomething (a, n, p + q);
+ }
+ #pragma omp target teams device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2]) \
+ num_teams (n + 4) thread_limit (n * 2)
+ #pragma omp distribute parallel for if (n != 6) \
+ default(shared) private (p) firstprivate (q) shared (n) reduction (+: r) \
+ collapse (2) dist_schedule (static, 4) \
+ num_threads (n + 4) proc_bind (spread) lastprivate (s) \
+ ordered schedule (static, 8)
+ for (i = 0; i < 10; i++)
+ for (j = 0; j < 10; j++)
+ {
+ r = r + 1;
+ p = q;
+ dosomething (a, n, p + q);
+ #pragma omp ordered
+ p = q;
+ s = i * 10 + j;
+ }
+ #pragma omp target teams device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2]) \
+ num_teams (n + 4) thread_limit (n * 2)
+ #pragma omp distribute parallel for if (n != 6) \
+ default(shared) private (p) firstprivate (q) shared (n) reduction (+: r) \
+ num_threads (n + 4) dist_schedule (static, 4) \
+ proc_bind (master) lastprivate (s) ordered schedule (static, 8)
+ for (i = 0; i < 10; i++)
+ {
+ for (j = 0; j < 10; j++)
+ {
+ r = r + 1;
+ p = q;
+ dosomething (a, n, p + q);
+ }
+ #pragma omp ordered
+ p = q;
+ s = i * 10;
+ }
+ #pragma omp target teams device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2]) \
+ num_teams (n + 4) thread_limit (n * 2)
+ #pragma omp distribute parallel for simd if (n != 6)default(shared) \
+ private (p) firstprivate (q) shared (n) reduction (+: r) \
+ collapse (2) dist_schedule (static, 4) \
+ num_threads (n + 4) proc_bind (spread) lastprivate (s) \
+ schedule (static, 8) safelen(8)
+ for (i = 0; i < 10; i++)
+ for (j = 0; j < 10; j++)
+ {
+ r = r + 1;
+ p = q;
+ a[2+i*10+j] = p + q;
+ s = i * 10 + j;
+ }
+ #pragma omp target teams device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2]) \
+ num_teams (n + 4) thread_limit (n * 2)
+ #pragma omp distribute parallel for simd if (n != 6)default(shared) \
+ private (p) firstprivate (q) shared (n) reduction (+: r) \
+ num_threads (n + 4) dist_schedule (static, 4) \
+ proc_bind (master) lastprivate (s) schedule (static, 8) \
+ safelen(16) linear(i:1) aligned (pp:4)
+ for (i = 0; i < 10; i++)
+ {
+ r = r + 1;
+ p = q;
+ a[2+i] = p + q;
+ s = i * 10;
+ }
+ #pragma omp target teams device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2]) \
+ num_teams (n + 4) thread_limit (n * 2) default(shared) shared(n) private(p) \
+ reduction(+:r)
+ #pragma omp distribute simd private (p) firstprivate (q) reduction (+: r) \
+ collapse (2) dist_schedule (static, 4) lastprivate (s) safelen(8)
+ for (i = 0; i < 10; i++)
+ for (j = 0; j < 10; j++)
+ {
+ r = r + 1;
+ p = q;
+ a[2+i*10+j] = p + q;
+ s = i * 10 + j;
+ }
+ #pragma omp target teams device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2]) \
+ num_teams (n + 4) thread_limit (n * 2) default(shared) shared(n) private(p) \
+ reduction(+:r)
+ #pragma omp distribute simd private (p) firstprivate (q) reduction (+: r) \
+ lastprivate (s) dist_schedule (static, 4) safelen(16) linear(i:1) aligned (pp:4)
+ for (i = 0; i < 10; i++)
+ {
+ r = r + 1;
+ p = q;
+ a[2+i] = p + q;
+ s = i * 10;
+ }
+ }
+}
+
+int q, i, j;
+
+void
+test2 (int n, int o, int p, int r, int s, int *pp)
+{
+ int a[o];
+ #pragma omp distribute collapse (2) dist_schedule (static, 4) firstprivate (q)
+ for (i = 0; i < 10; i++)
+ for (j = 0; j < 10; j++)
+ {
+ r = r + 1;
+ p = q;
+ dosomething (a, n, p + q);
+ }
+ #pragma omp distribute dist_schedule (static, 4) firstprivate (q)
+ for (i = 0; i < 10; i++)
+ for (j = 0; j < 10; j++)
+ {
+ r = r + 1;
+ p = q;
+ dosomething (a, n, p + q);
+ }
+ #pragma omp distribute parallel for if (n != 6) \
+ default(shared) private (p) firstprivate (q) shared (n) reduction (+: r) \
+ collapse (2) dist_schedule (static, 4) \
+ num_threads (n + 4) proc_bind (spread) lastprivate (s) \
+ ordered schedule (static, 8)
+ for (i = 0; i < 10; i++)
+ for (j = 0; j < 10; j++)
+ {
+ r = r + 1;
+ p = q;
+ dosomething (a, n, p + q);
+ #pragma omp ordered
+ p = q;
+ s = i * 10 + j;
+ }
+ #pragma omp distribute parallel for if (n != 6) \
+ default(shared) private (p) firstprivate (q) shared (n) reduction (+: r) \
+ num_threads (n + 4) dist_schedule (static, 4) \
+ proc_bind (master) lastprivate (s) ordered schedule (static, 8)
+ for (i = 0; i < 10; i++)
+ {
+ for (j = 0; j < 10; j++)
+ {
+ r = r + 1;
+ p = q;
+ dosomething (a, n, p + q);
+ }
+ #pragma omp ordered
+ p = q;
+ s = i * 10;
+ }
+ #pragma omp distribute parallel for simd if (n != 6)default(shared) \
+ private (p) firstprivate (q) shared (n) reduction (+: r) \
+ collapse (2) dist_schedule (static, 4) \
+ num_threads (n + 4) proc_bind (spread) lastprivate (s) \
+ schedule (static, 8) safelen(8)
+ for (i = 0; i < 10; i++)
+ for (j = 0; j < 10; j++)
+ {
+ r = r + 1;
+ p = q;
+ a[2+i*10+j] = p + q;
+ s = i * 10 + j;
+ }
+ #pragma omp distribute parallel for simd if (n != 6)default(shared) \
+ private (p) firstprivate (q) shared (n) reduction (+: r) \
+ num_threads (n + 4) dist_schedule (static, 4) \
+ proc_bind (master) lastprivate (s) schedule (static, 8) \
+ safelen(16) linear(i:1) aligned (pp:4)
+ for (i = 0; i < 10; i++)
+ {
+ r = r + 1;
+ p = q;
+ a[2+i] = p + q;
+ s = i * 10;
+ }
+ #pragma omp distribute simd private (p) firstprivate (q) reduction (+: r) \
+ collapse (2) dist_schedule (static, 4) lastprivate (s) safelen(8)
+ for (i = 0; i < 10; i++)
+ for (j = 0; j < 10; j++)
+ {
+ r = r + 1;
+ p = q;
+ a[2+i*10+j] = p + q;
+ s = i * 10 + j;
+ }
+ #pragma omp distribute simd private (p) firstprivate (q) reduction (+: r) \
+ lastprivate (s) dist_schedule (static, 4) safelen(16) linear(i:1) aligned (pp:4)
+ for (i = 0; i < 10; i++)
+ {
+ r = r + 1;
+ p = q;
+ a[2+i] = p + q;
+ s = i * 10;
+ }
+}
diff --git a/gcc-4.9/gcc/testsuite/c-c++-common/torture/pr60971.c b/gcc-4.9/gcc/testsuite/c-c++-common/torture/pr60971.c
new file mode 100644
index 0000000..b7a967d
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/c-c++-common/torture/pr60971.c
@@ -0,0 +1,34 @@
+/* PR tree-optimization/60971 */
+/* { dg-do run } */
+
+#ifndef __cplusplus
+#define bool _Bool
+#endif
+
+volatile unsigned char c;
+
+__attribute__((noinline)) unsigned char
+foo (void)
+{
+ return c;
+}
+
+__attribute__((noinline)) bool
+bar (void)
+{
+ return foo () & 1;
+}
+
+int
+main ()
+{
+ c = 0x41;
+ c = bar ();
+ if (c != 1)
+ __builtin_abort ();
+ c = 0x20;
+ c = bar ();
+ if (c != 0)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-aggr1.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-aggr1.C
new file mode 100644
index 0000000..7e4da11
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-aggr1.C
@@ -0,0 +1,17 @@
+// PR c++/60951
+// { dg-do compile { target c++11 } }
+
+struct Foo {
+ constexpr Foo(int x = 0) : memb(x) {}
+ int memb;
+};
+
+struct FooContainer {
+ Foo foo[2];
+};
+
+void fubar() {
+ int nonConst = 0;
+ FooContainer fooContainer;
+ fooContainer = { { 0, nonConst } };
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-ptrmem2.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-ptrmem2.C
new file mode 100644
index 0000000..86859aa
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-ptrmem2.C
@@ -0,0 +1,13 @@
+// PR c++/61661
+// { dg-do compile { target c++11 } }
+
+struct Outer {
+
+ void Bar();
+
+ struct Foo {
+ void (Outer::*ptr)() ;
+ };
+
+ static constexpr Foo foo = { &Outer::Bar };
+};
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-template7.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-template7.C
new file mode 100644
index 0000000..e835dbf
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-template7.C
@@ -0,0 +1,32 @@
+// PR c++/61556
+// { dg-do compile { target c++11 } }
+
+class ValueType {
+public:
+ constexpr operator int() const {return m_ID;};
+ constexpr ValueType(const int v)
+ : m_ID(v) {}
+private:
+ int m_ID;
+};
+
+class ValueTypeEnum {
+public:
+ static constexpr ValueType doubleval = ValueType(1);
+};
+
+template <int format>
+class ValueTypeInfo {
+};
+
+template <typename Format>
+class FillFunctor {
+public:
+ FillFunctor() {
+ ValueTypeInfo<ValueTypeEnum::doubleval> v;
+ }
+};
+
+int main() {
+ ValueTypeInfo<ValueTypeEnum::doubleval> v;
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/defaulted49.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/defaulted49.C
new file mode 100644
index 0000000..357be41
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/defaulted49.C
@@ -0,0 +1,15 @@
+// PR c++/60980
+// { dg-do compile { target c++11 } }
+
+struct x0
+{
+ x0 () = default;
+};
+struct x1
+{
+ x0 x2[2];
+ void x3 ()
+ {
+ x1 ();
+ }
+};
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist84.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist84.C
new file mode 100644
index 0000000..4d46746
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist84.C
@@ -0,0 +1,17 @@
+// PR c++/61242
+// { dg-do compile { target c++11 } }
+
+struct Foo
+{
+ struct A
+ {
+ const int &container;
+ const int &args;
+ };
+ static void Create (const A &);
+};
+
+int main ()
+{
+ Foo::Create ({{}, {}});
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist86.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist86.C
new file mode 100644
index 0000000..ace2ef9
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist86.C
@@ -0,0 +1,18 @@
+// PR c++/61382
+// { dg-do run { target c++11 } }
+
+struct A
+{
+ int i,j;
+ A(int i,int j):i(i),j(j){}
+};
+
+extern "C" int printf (const char *, ...);
+
+int main()
+{
+ int i = 0;
+ A a{i++,i++};
+ if (a.i != 0 || a.j != 1)
+ __builtin_abort();
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const3.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const3.C
new file mode 100644
index 0000000..a1ffadd
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const3.C
@@ -0,0 +1,38 @@
+// PR c++/60992
+// { dg-do compile { target c++11 } }
+
+struct ScopeGuardGenerator { };
+
+struct FF
+{
+ template < class F, class ... Ts >
+ void
+ operator () (F & ...)
+ {
+ const int n = sizeof ... (Ts) + 1;
+ void *mutexes[n];
+ auto _on_scope_exit_var_0 =
+ ScopeGuardGenerator () + [&mutexes] { };
+ }
+};
+
+template < class F >
+int operator+ (ScopeGuardGenerator, F) { return 1; }
+
+struct D
+{
+ template < class T0, class T1, class T2, class ... T >
+ void
+ operator () (T0, T1, const T2 & t2, T & ... t)
+ {
+ base (t2, t ...);
+ }
+ FF base;
+};
+
+D run_with_locks;
+
+void Fn ()
+{
+ run_with_locks ([] { }, 0, 0);
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template13.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template13.C
new file mode 100644
index 0000000..adbb4db
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template13.C
@@ -0,0 +1,20 @@
+// PR c++/61566
+// { dg-do compile { target c++11 } }
+
+struct function
+{
+ template < typename _Functor>
+ function (_Functor);
+};
+
+struct C
+{
+ template <typename T>
+ void foo (T, function = [] {});
+};
+
+void bar ()
+{
+ C c;
+ c.foo (1);
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this18.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this18.C
new file mode 100644
index 0000000..fec2da6
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this18.C
@@ -0,0 +1,30 @@
+// PR c++/61151
+// { dg-do compile { target c++11 } }
+
+struct B
+{
+ void foo () {}
+};
+
+template <class>
+struct A
+{
+ template <class> void bar ();
+ B a;
+};
+
+template <class T>
+template <class U>
+void
+A<T>::bar ()
+{
+ auto f = [this] () { auto g = [=] () { a.foo (); }; g (); };
+ f ();
+}
+
+int
+main ()
+{
+ A<int> a;
+ a.bar <int> ();
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/nsdmi-template10.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/nsdmi-template10.C
new file mode 100644
index 0000000..4a8c87e
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/nsdmi-template10.C
@@ -0,0 +1,14 @@
+// PR c++/60999
+// { dg-do compile { target c++11 } }
+
+struct B
+{
+ template<int N, int M>
+ struct A;
+
+ template<int M>
+ struct A<1, M>
+ {
+ int X = M;
+ };
+};
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/nsdmi-template11.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/nsdmi-template11.C
new file mode 100644
index 0000000..60e53c4
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/nsdmi-template11.C
@@ -0,0 +1,15 @@
+// PR c++/58930
+// { dg-do compile { target c++11 } }
+
+struct SampleModule
+{
+ explicit SampleModule (int);
+};
+
+template < typename >
+struct BaseHandler
+{
+ SampleModule module_ { 0 };
+};
+
+BaseHandler<int> a;
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/nsdmi-template12.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/nsdmi-template12.C
new file mode 100644
index 0000000..52ae257
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/nsdmi-template12.C
@@ -0,0 +1,17 @@
+// PR c++/58753
+// { dg-do compile { target c++11 } }
+
+#include <initializer_list>
+
+template <class T>
+struct X {X(std::initializer_list<int>) {}};
+
+template <class zomg>
+class T {
+ X<T> x{1};
+};
+
+int main()
+{
+ T<int> t;
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/nsdmi-template13.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/nsdmi-template13.C
new file mode 100644
index 0000000..65ccd0a
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/nsdmi-template13.C
@@ -0,0 +1,11 @@
+// PR c++/58704
+// { dg-do compile { target c++11 } }
+
+struct A {};
+
+template<typename> struct B
+{
+ A a[1] = { };
+};
+
+B<int> b;
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/nsdmi-template9.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/nsdmi-template9.C
new file mode 100644
index 0000000..0cfbb90
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/nsdmi-template9.C
@@ -0,0 +1,16 @@
+// PR c++/60999
+// { dg-do compile { target c++11 } }
+
+template <typename A>
+struct foo
+{
+};
+
+template<>
+struct foo<int>
+{
+ static constexpr int code = 42;
+ unsigned int bar = static_cast<unsigned int>(code);
+};
+
+foo<int> a;
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/pr58155.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/pr58155.C
new file mode 100644
index 0000000..60b02ab
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/pr58155.C
@@ -0,0 +1,13 @@
+// { dg-do compile { target c++11 } }
+
+#define BAZ "baz"
+
+#if 0
+
+"bar"BAZ
+
+R"(
+ bar
+)"BAZ
+
+#endif
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/pr58781.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/pr58781.C
new file mode 100644
index 0000000..58c972f
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/pr58781.C
@@ -0,0 +1,18 @@
+// PR c++/58781
+// { dg-do compile { target c++11 } }
+
+#include <cstddef>
+
+int
+operator""_s(const char32_t *a, size_t b)
+{
+ return 0;
+}
+
+int
+f()
+{
+ using a = decltype(U"\x1181"_s);
+ using b = decltype(U"\x8111"_s);
+ using c = decltype(U" \x1181"_s);
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/pr60249.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/pr60249.C
new file mode 100644
index 0000000..e650dcb
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/pr60249.C
@@ -0,0 +1,6 @@
+// PR c++/60249
+// { dg-do compile { target c++11 } }
+
+decltype(""_) x; // { dg-error "unable to find string literal operator" }
+
+// { dg-error "invalid type in declaration before" "invalid" { target *-*-* } 4 }
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/ref-qual15.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/ref-qual15.C
new file mode 100644
index 0000000..ca333c2
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/ref-qual15.C
@@ -0,0 +1,13 @@
+// PR c++/59296
+// { dg-do compile { target c++11 } }
+
+struct Type
+{
+ void get() const& { }
+ void get() const&& { }
+};
+
+int main()
+{
+ Type{}.get();
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/sfinae50.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/sfinae50.C
new file mode 100644
index 0000000..e8d90ca
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/sfinae50.C
@@ -0,0 +1,41 @@
+// PR c++/61083
+// { dg-do compile { target c++11 } }
+
+template<typename T> T declval();
+
+template<typename T, typename U>
+struct is_same {
+ static const bool value = false;
+};
+
+template<typename T>
+struct is_same<T, T> {
+ static const bool value = true;
+};
+
+struct true_type {};
+struct false_type {};
+
+template <typename T>
+struct is_foo {
+private:
+ template<typename U, U> struct helper {};
+
+ template <typename Z> static auto
+ test(Z z) -> decltype(helper<void (Z::*)() const, &Z::foo>(), true_type());
+
+ template <typename> static auto test(...) -> false_type;
+
+public:
+ enum { value = is_same<decltype(test<T>(declval<T>())), true_type>::value };
+};
+
+struct A {
+ int foo();
+ void foo() const;
+};
+
+struct A1 : public A {};
+
+static_assert (is_foo<A>::value == 1, "");
+static_assert (is_foo<A1>::value == 0, "");
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic158.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic158.C
new file mode 100644
index 0000000..cc5c24d
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic158.C
@@ -0,0 +1,24 @@
+// PR c++/61134
+// { dg-do compile { target c++11 } }
+
+struct Base { };
+
+template <typename>
+struct Fixed {
+ typedef const char* name;
+};
+
+template <typename VT, typename... Fields>
+void New(const char* name,
+ typename Fixed<Fields>::name... field_names);
+
+template <typename VT, typename... Fields>
+void CreateMetric(const char* name,
+ typename Fixed<Fields>::name... field_names,
+ const Base&) { }
+
+
+void Fn()
+{
+ CreateMetric<int, const char*>("abcd", "def", Base());
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic159.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic159.C
new file mode 100644
index 0000000..2b14d30
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic159.C
@@ -0,0 +1,14 @@
+// PR c++/61507
+// { dg-do compile { target c++11 } }
+
+struct A {
+ void foo(const int &);
+ void foo(float);
+};
+
+template <typename... Args>
+void bar(void (A::*memfun)(Args...), Args... args);
+
+void go(const int& i) {
+ bar<const int &>(&A::foo, i);
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic160.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic160.C
new file mode 100644
index 0000000..20fcd5b
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic160.C
@@ -0,0 +1,49 @@
+// PR c++/61539
+// { dg-do compile { target c++11 } }
+
+template <typename _CharT> class A;
+template <typename> class B;
+template <class charT> class C;
+template <> class C<char>
+{
+ virtual void xparse (int &, const B<A<char> > &) const;
+};
+template <class T, class charT = char> class G : C<charT>
+{
+public:
+ G (void *) {}
+ void default_value (const T &);
+ void xparse (int &, const B<A<charT> > &) const;
+};
+template <class T, class charT>
+void validate (int &, const B<A<charT> > &, T *, int);
+template <class T, class charT>
+void G<T, charT>::xparse (int &p1, const B<A<charT> > &p2) const
+{
+ validate (p1, p2, (T *)0, 0);
+}
+template <class T> G<T> *value (T *) { return new G<T>(0); }
+namespace Eigen
+{
+template <typename T> struct D;
+template <typename, int, int, int = 0, int = 0, int = 0 > class F;
+template <typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows,
+ int _MaxCols>
+struct D<F<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> >
+{
+ typedef _Scalar Scalar;
+};
+template <typename, int, int, int, int, int _MaxCols> class F
+{
+public:
+ typedef typename Eigen::D<F>::Scalar Scalar;
+ F (const Scalar &, const Scalar &, const Scalar &);
+};
+template <class... T>
+void validate (int &, const B<A<char> > &, Eigen::F<T...> *);
+}
+int main (int, char *[])
+{
+ Eigen::F<double, 3, 1> a (0, 0, 0);
+ value (&a)->default_value (Eigen::F<double, 3, 1>(0, 0, 0));
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/pr59867.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/pr59867.C
new file mode 100644
index 0000000..91d0259
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/pr59867.C
@@ -0,0 +1,52 @@
+// PR c++/59867
+// { dg-do compile { target c++1y } }
+
+#include <iostream>
+using namespace std;
+
+// constant
+template<typename T, T x>
+ struct meta_value
+ {
+ typedef meta_value type;
+ typedef T value_type;
+ static const T value = x;
+ };
+
+// array
+template<typename T, T... data>
+ struct meta_array
+ {
+ typedef meta_array type;
+ typedef T item_type;
+ };
+
+// static array -> runtime array conversion utility
+template<typename T>
+ struct array_gen;
+
+template<typename T, T... xs>
+ struct array_gen<meta_array<T, xs...>>
+ {
+ static const T value[sizeof...(xs)];
+ };
+
+template<typename T, T... xs>
+ const T
+ array_gen<meta_array<T, xs...>>::value[sizeof...(xs)] = {xs...};
+
+// static string
+template<typename T, T... xs>
+ constexpr meta_array<T, xs...>
+ operator""_s()
+ {
+ static_assert(sizeof...(xs) == 3, "What's wrong with you?");
+ return meta_array<T, xs...>();
+ }
+
+int
+main()
+{
+ auto a = "123"_s;
+ const char (& xs)[3] = array_gen<decltype("123"_s)>::value;
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/debug/dwarf2/cdtor-1.C b/gcc-4.9/gcc/testsuite/g++.dg/debug/dwarf2/cdtor-1.C
index e3bddab..bfa5d92 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/debug/dwarf2/cdtor-1.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/debug/dwarf2/cdtor-1.C
@@ -14,4 +14,4 @@ main()
K k;
}
-// { dg-final {scan-assembler-times " DW_AT_\[MIPS_\]*linkage_name" 2 } }
+// { dg-final {scan-assembler-times " DW_AT_\[MIPS_\]*linkage_name" 4 } }
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/debug/dwarf2/dwarf4-nested.C b/gcc-4.9/gcc/testsuite/g++.dg/debug/dwarf2/dwarf4-nested.C
new file mode 100644
index 0000000..160694c
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/debug/dwarf2/dwarf4-nested.C
@@ -0,0 +1,55 @@
+// { dg-do compile }
+// { dg-options "--std=c++11 -dA -gdwarf-4 -fdebug-types-section -fno-merge-debug-strings" }
+
+// Check that -fdebug-types-sections does not copy a full referenced type
+// into a type unit.
+
+// Checks that at least one type unit is generated.
+//
+// { dg-final { scan-assembler "DIE \\(\[^\n\]*\\) DW_TAG_type_unit" } }
+//
+// Check that func is declared exactly once in the debug info (in the
+// compile unit).
+//
+// { dg-final { scan-assembler-times "\\.ascii \"func\\\\0\"\[^\n\]*DW_AT_name" 1 } }
+//
+// Check to make sure that no type unit contains a DIE with DW_AT_low_pc
+// or DW_AT_ranges. These patterns assume that the compile unit is always
+// emitted after all type units.
+//
+// { dg-final { scan-assembler-not "\\.quad\[^\n\]*DW_AT_low_pc.*DIE \\(\[^\n\]*\\) DW_TAG_compile_unit" } }
+// { dg-final { scan-assembler-not "\\.quad\[^\n\]*DW_AT_ranges.*DIE \\(\[^\n\]*\\) DW_TAG_compile_unit" } }
+
+struct A {
+ A();
+ virtual ~A();
+ virtual void foo();
+ private:
+ int data;
+};
+
+struct B {
+ B();
+ virtual ~B();
+};
+
+extern B* table[];
+
+struct D {
+ template <typename T>
+ T* get(int i)
+ {
+ B*& cell = table[i];
+ if (cell == 0)
+ cell = new T();
+ return static_cast<T*>(cell);
+ }
+};
+
+void func(D* d)
+{
+ struct C : B {
+ A a;
+ };
+ d->get<C>(0)->a.foo();
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/debug/dwarf2/dwarf4-typedef.C b/gcc-4.9/gcc/testsuite/g++.dg/debug/dwarf2/dwarf4-typedef.C
index c5520fa..89a6bb4 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/debug/dwarf2/dwarf4-typedef.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/debug/dwarf2/dwarf4-typedef.C
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-gdwarf-4" } */
+/* { dg-options "-gdwarf-4 -fdebug-types-section" } */
/* Regression test for an ICE in output_die when using -gdwarf-4. */
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/debug/dwarf2/imported-decl-2.C b/gcc-4.9/gcc/testsuite/g++.dg/debug/dwarf2/imported-decl-2.C
new file mode 100644
index 0000000..ce01f72
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/debug/dwarf2/imported-decl-2.C
@@ -0,0 +1,32 @@
+// { dg-do compile }
+// { dg-options "-gdwarf-2 -dA -O0 -fno-merge-debug-strings" }
+
+class AAAA
+{
+ public:
+ int method (void);
+ int a;
+};
+
+int
+AAAA::method (void)
+{
+ return a;
+}
+
+class BBBB : public AAAA
+{
+ public:
+ using AAAA::method;
+
+ int method (int b);
+};
+
+int
+BBBB::method (int b)
+{
+ return a + b;
+}
+
+// { dg-final { scan-assembler-not "ascii \"BBBB\\\\0\".*ascii \"AAAA\\\\0\".*DW_TAG_imported_declaration" } }
+// { dg-final { scan-assembler-times "ascii \"AAAA\\\\0\".*ascii \"BBBB\\\\0\".*DIE .0x\[0-9a-f\]*. DW_TAG_imported_declaration" 1 } }
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/debug/dwarf2/pr61433.C b/gcc-4.9/gcc/testsuite/g++.dg/debug/dwarf2/pr61433.C
new file mode 100644
index 0000000..a63b8a9
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/debug/dwarf2/pr61433.C
@@ -0,0 +1,23 @@
+// PR c++/61433
+// { dg-do compile { target c++11 } }
+// { dg-options "-O -fcompare-debug -fno-inline -fno-ipa-pure-const -fipa-sra" }
+
+template <class T>
+struct A
+{
+ template <class V>
+ struct B
+ {
+ int MEM;
+ };
+};
+struct D {};
+struct C: public A<int>::B<D>
+{};
+template <class T, class U, class V>
+auto k(T t, U u, V v) -> decltype (t.U::template B<V>::MEM)
+{}
+int main()
+{
+ k( C(), A<int>(), D() );
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/eh/spec3-static.C b/gcc-4.9/gcc/testsuite/g++.dg/eh/spec3-static.C
deleted file mode 100644
index 15408ef..0000000
--- a/gcc-4.9/gcc/testsuite/g++.dg/eh/spec3-static.C
+++ /dev/null
@@ -1,25 +0,0 @@
-// PR c++/4381
-// Test that exception-specs work properly for classes with virtual bases.
-
-// { dg-do run }
-// { dg-options "-static" }
-
-class Base {};
-
-struct A : virtual public Base
-{
- A() {}
-};
-
-struct B {};
-
-void func() throw (B,A)
-{
- throw A();
-}
-
-int main(void)
-{
- try { func(); }
- catch (A& a) { }
-}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ext/complit14.C b/gcc-4.9/gcc/testsuite/g++.dg/ext/complit14.C
new file mode 100644
index 0000000..aed765d
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/ext/complit14.C
@@ -0,0 +1,11 @@
+// PR c++/61614
+// { dg-options "" }
+
+int Fn (...);
+
+void
+Test ()
+{
+ int j = Fn ((const int[]) { 0 }); // OK
+ unsigned long sz = sizeof Fn ((const int[]) { 0 }); // Error
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/gcov/gcov-7.C b/gcc-4.9/gcc/testsuite/g++.dg/gcov/gcov-7.C
deleted file mode 100644
index db3e95a..0000000
--- a/gcc-4.9/gcc/testsuite/g++.dg/gcov/gcov-7.C
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Check that Exception handler specification is not
- mapped to the curly braces below the function
- declaration. */
-
-/* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
-
-struct foo
-{
- foo () throw (int)
- { /* count (-) */
- throw (1);
- }
-};
-
-int main ()
-{
- try
- {
- foo f;
- }
- catch ( ...)
- {
- return 0;
- }
-}
-
-/* { dg-final { run-gcov gcov-7.C } } */
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/guality/guality.exp b/gcc-4.9/gcc/testsuite/g++.dg/guality/guality.exp
index 3ff7f2f..215f6f8 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/guality/guality.exp
+++ b/gcc-4.9/gcc/testsuite/g++.dg/guality/guality.exp
@@ -1,5 +1,8 @@
# This harness is for tests that should be run at all optimisation levels.
+# Disable everywhere. These tests are very flaky.
+return
+
load_lib g++-dg.exp
load_lib gcc-gdb-test.exp
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/init/copy7.C b/gcc-4.9/gcc/testsuite/g++.dg/init/copy7.C
new file mode 100644
index 0000000..655fae2
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/init/copy7.C
@@ -0,0 +1,9 @@
+// CWG 5
+
+struct C { };
+C c;
+struct A {
+ A(const A&);
+ A(const C&);
+};
+const volatile A a = c; // Okay
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-11.C b/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-11.C
index ca8ea4c..e31832b 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-11.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-11.C
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-ipa-inline -fno-devirtualize-speculatively" } */
+/* { dg-options "-O2 -fdump-ipa-inline --param=early-inlining-insns-comdat=0 -fno-devirtualize-speculatively" } */
int baz ();
struct A
{
@@ -45,5 +45,5 @@ bar ()
/* While inlining function called once we should devirtualize a new call to fn2
and two to fn3. While doing so the new symbol for fn2 needs to be
introduced. */
-/* { dg-final { scan-ipa-dump-times "Discovered a virtual call to a known target" 1 "inline" } } */
+/* { dg-final { scan-ipa-dump "Discovered a virtual call to a known target" "inline" } } */
/* { dg-final { cleanup-ipa-dump "inline" } } */
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-25.C b/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-25.C
index 7516479..1da44f5 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-25.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-25.C
@@ -22,5 +22,5 @@ void dpr_run(ebs_Object& objectA) {
dpr_Job jobL;
dpr_run(jobL);
}
-/* { dg-final { scan-ipa-dump "Type inconsident devirtualization" "cp" } } */
+/* { dg-final { scan-ipa-dump "Type inconsistent devirtualization" "cp" } } */
/* { dg-final { cleanup-ipa-dump "cp" } } */
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-31.C b/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-31.C
new file mode 100644
index 0000000..64c44ba
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-31.C
@@ -0,0 +1,23 @@
+/* { dg-options "-O2 -std=c++11 -fdump-ipa-inline" } */
+#include <new>
+
+class EmbeddedObject {
+public:
+ virtual int val() { return 2; }
+};
+
+class Container {
+ alignas(EmbeddedObject) char buffer[sizeof(EmbeddedObject)];
+public:
+ EmbeddedObject *obj() { return (EmbeddedObject*)buffer; }
+ Container() { new (buffer) EmbeddedObject(); }
+};
+
+Container o;
+
+int main()
+{
+ __builtin_printf("%d\n", o.obj()->val());
+}
+/* { dg-final { scan-ipa-dump-not "__builtin_unreachable" "inline" } } */
+/* { dg-final { cleanup-ipa-dump "inline" } } */
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-9.C b/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-9.C
index 7fd0bf5..dc6c6c9 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-9.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-9.C
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-ipa-whole-program" } */
+/* { dg-options "-O2 -fdump-ipa-whole-program --param=early-inlining-insns-comdat=0" } */
double foo ();
struct B
{
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60600.C b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60600.C
index 00c368e..b9039cb 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60600.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60600.C
@@ -14,7 +14,7 @@ struct intermediate: top {
};
struct child1: top {
- void childf()
+ __attribute__((noinline)) void childf()
{
data d(topf());
}
@@ -30,5 +30,5 @@ void test(top& t)
test(d);
}
-/* { dg-final { scan-ipa-dump "Type inconsident devirtualization" "cp" } } */
+/* { dg-final { scan-ipa-dump "Type inconsistent devirtualization" "cp" } } */
/* { dg-final { cleanup-ipa-dump "cp" } } */
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr61085.C b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr61085.C
new file mode 100644
index 0000000..531f59d
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr61085.C
@@ -0,0 +1,33 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -fno-early-inlining" } */
+
+struct A {};
+struct B : virtual A {
+ unsigned m_i;
+ B() : m_i () {}
+ virtual A *m_virt ()
+ {
+ return 0;
+ }
+ ~B ()
+ {
+ m_foo ();
+ while (m_i)
+ ;
+ }
+ void m_foo ()
+ {
+ m_virt ();
+ }
+};
+
+class C : B {
+ A *m_virt () {
+ __builtin_abort ();
+ }
+};
+
+int main ()
+{
+ C c;
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr61160-1.C b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr61160-1.C
new file mode 100644
index 0000000..a0fbb5f
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr61160-1.C
@@ -0,0 +1,31 @@
+/* { dg-do compile } */
+/* { dg-options "-O3" } */
+
+struct CBase {
+ virtual void BaseFunc () {}
+};
+
+struct MMixin {
+ virtual void * MixinFunc (int, void *) = 0;
+};
+
+struct CExample: CBase, public MMixin
+{
+ void *MixinFunc (int arg, void *arg2)
+ {
+ if (arg != 1 || arg2)
+ return 0;
+ return this;
+ }
+};
+
+void *test (MMixin & anExample)
+{
+ return anExample.MixinFunc (1, 0);
+}
+
+int main ()
+{
+ CExample c;
+ return (test (c) != &c);
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr61160-2.C b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr61160-2.C
new file mode 100644
index 0000000..1011bd1
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr61160-2.C
@@ -0,0 +1,43 @@
+/* { dg-do run } */
+/* { dg-options "-O3 --param ipa-cp-eval-threshold=1" } */
+
+extern "C" void abort (void);
+
+struct CBase {
+ virtual void BaseFunc () {}
+};
+
+struct MMixin {
+ virtual void * MixinFunc (int, void *) = 0;
+};
+
+struct CExample: CBase, public MMixin
+{
+ int stuff, magic, more_stuff;
+
+ CExample ()
+ {
+ stuff = 0;
+ magic = 0xbeef;
+ more_stuff = 0;
+ }
+ void *MixinFunc (int arg, void *arg2)
+ {
+ if (arg != 1 || arg2)
+ return 0;
+ if (magic != 0xbeef)
+ abort();
+ return this;
+ }
+};
+
+void *test (MMixin & anExample)
+{
+ return anExample.MixinFunc (1, 0);
+}
+
+int main ()
+{
+ CExample c;
+ return (test (c) != &c);
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr61160-3.C b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr61160-3.C
new file mode 100644
index 0000000..8184ec2
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr61160-3.C
@@ -0,0 +1,37 @@
+/* { dg-do run } */
+/* { dg-options "-O3" } */
+
+struct A {
+ void *p;
+ A (void *q) : p (q) {}
+ A (const A &) : p () {}
+};
+
+struct CBase {
+ virtual void BaseFunc () {}
+};
+
+struct MMixin {
+ virtual A MixinFunc (int, A) = 0;
+};
+
+struct CExample: CBase, public MMixin
+{
+ A MixinFunc (int arg, A arg2)
+ {
+ if (arg != 1 || arg2.p)
+ return 0;
+ return this;
+ }
+};
+
+void *test (MMixin & anExample)
+{
+ return anExample.MixinFunc (1, (0)).p;
+}
+
+int main ()
+{
+ CExample c;
+ return (test (c) != &c);
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr61540.C b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr61540.C
new file mode 100644
index 0000000..e7dee72
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr61540.C
@@ -0,0 +1,38 @@
+/* { dg-do compile } */
+/* { dg-options "-O3 -fno-early-inlining" } */
+
+struct data {
+ data(int) {}
+};
+
+struct top {
+ virtual int topf() {}
+};
+
+struct intermediate: top {
+ int topf() /* override */ { return 0; }
+};
+
+struct child1: top {
+ void childf()
+ {
+ data d(topf());
+ }
+};
+
+struct child2: intermediate {};
+
+void test(top& t)
+{
+ child1& c = static_cast<child1&>(t);
+ c.childf();
+ child2 d;
+ test(d);
+}
+
+int main (int argc, char **argv)
+{
+ child1 c;
+ test (c);
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/opt/pr60849.C b/gcc-4.9/gcc/testsuite/g++.dg/opt/pr60849.C
new file mode 100644
index 0000000..52d8826
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/opt/pr60849.C
@@ -0,0 +1,13 @@
+// { dg-do compile }
+// { dg-options "-O2" }
+
+int g;
+
+extern "C" int isnan ();
+
+void foo(float a) {
+ int (*xx)(...);
+ xx = isnan;
+ if (xx(a))
+ g++;
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/opt/pr60912.C b/gcc-4.9/gcc/testsuite/g++.dg/opt/pr60912.C
new file mode 100644
index 0000000..ad51ba7
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/opt/pr60912.C
@@ -0,0 +1,18 @@
+// { dg-do run }
+// { dg-options "-O -fno-inline -fipa-pta" }
+
+struct IFoo
+{
+ virtual void Foo () = 0;
+};
+
+struct Bar:IFoo
+{
+ void Foo () {}
+};
+
+int main ()
+{
+ (new Bar ())->Foo ();
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/opt/pr61456.C b/gcc-4.9/gcc/testsuite/g++.dg/opt/pr61456.C
new file mode 100644
index 0000000..14a118b
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/opt/pr61456.C
@@ -0,0 +1,26 @@
+// { dg-do compile }
+// { dg-options "-O2 -std=c++11 -Werror=uninitialized" }
+
+int rand ();
+
+class Funcs
+{
+public:
+ int *f1 ();
+ int *f2 ();
+};
+typedef decltype (&Funcs::f1) pfunc;
+
+static int Set (Funcs * f, const pfunc & fp)
+{
+ (f->*fp) ();
+}
+
+void
+Foo ()
+{
+ pfunc fp = &Funcs::f1;
+ if (rand ())
+ fp = &Funcs::f2;
+ Set (0, fp);
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/opt/pr61654.C b/gcc-4.9/gcc/testsuite/g++.dg/opt/pr61654.C
new file mode 100644
index 0000000..78dc0c1
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/opt/pr61654.C
@@ -0,0 +1,27 @@
+// PR middle-end/61654
+// { dg-do compile }
+
+class A
+{
+ virtual int a (int, int = 0) = 0;
+ int b (const int &);
+ int c;
+};
+
+class B : virtual A
+{
+ int d;
+ int a (int, int);
+};
+
+int
+A::b (const int &)
+{
+ return a ('\0');
+}
+
+int
+B::a (int, int)
+{
+ return 0 ? 0 : d;
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/opt/typeinfo1.C b/gcc-4.9/gcc/testsuite/g++.dg/opt/typeinfo1.C
new file mode 100644
index 0000000..efac4cb
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/opt/typeinfo1.C
@@ -0,0 +1,27 @@
+// PR c++/61020
+// { dg-options "-O2" }
+// { dg-do run }
+
+#include <typeinfo>
+
+struct Base {
+ virtual ~Base() { }
+};
+
+struct Derived : public Base {
+};
+
+int compare(const Base& base)
+{
+ return typeid(base) == typeid(typeid(Derived));
+}
+
+int main()
+{
+ Base base;
+ Derived derived;
+
+ if (compare(base)) return 1;
+ if (compare(derived)) return 2;
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/other/no-strict-enum-precision-1.C b/gcc-4.9/gcc/testsuite/g++.dg/other/no-strict-enum-precision-1.C
new file mode 100644
index 0000000..2115627
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/other/no-strict-enum-precision-1.C
@@ -0,0 +1,35 @@
+/* { dg-do run } */
+/* { dg-options "-fno-strict-enums" } */
+
+extern "C" void abort (void);
+
+enum zero_one
+{ zero = 0, one = 1 };
+
+int *
+allocate_bool (zero_one e)
+{
+ int *v = 0;
+ switch (e)
+ {
+ case zero:
+ v = new int (0);
+ case one:
+ v = new int (1);
+ }
+ return v;
+}
+
+int
+main ()
+{
+ if (allocate_bool (static_cast < zero_one > (999)))
+ {
+ /* Error: should not have matched any case label. */
+ abort ();
+ }
+ else
+ {
+ return 0;
+ }
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/other/no-strict-enum-precision-2.C b/gcc-4.9/gcc/testsuite/g++.dg/other/no-strict-enum-precision-2.C
new file mode 100644
index 0000000..086989c
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/other/no-strict-enum-precision-2.C
@@ -0,0 +1,37 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -fno-strict-enums" } */
+
+extern "C" void abort (void);
+
+enum X
+{
+ X1,
+ X2
+};
+
+int
+foo (enum X x)
+{
+ switch (x)
+ {
+ case X1:
+ return 0;
+ case X2:
+ return 1;
+ }
+ return x;
+}
+
+int
+main (int argc, char *argv[])
+{
+ int n = argc + 999;
+ if (n == foo (static_cast < X > (n)))
+ {
+ return 0;
+ }
+ else
+ {
+ abort ();
+ }
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/other/no-strict-enum-precision-3.C b/gcc-4.9/gcc/testsuite/g++.dg/other/no-strict-enum-precision-3.C
new file mode 100755
index 0000000..673601a
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/other/no-strict-enum-precision-3.C
@@ -0,0 +1,21 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -fno-strict-enums" } */
+
+extern "C" void abort (void);
+
+enum X
+{
+ X1,
+ X2
+};
+
+int
+main (int argc, char *argv[])
+{
+ X x = static_cast < X > (argc + 999);
+ if (x == X1)
+ abort ();
+ if (x == X2)
+ abort ();
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/other/sized-delete-1.C b/gcc-4.9/gcc/testsuite/g++.dg/other/sized-delete-1.C
new file mode 100644
index 0000000..76f861a
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/other/sized-delete-1.C
@@ -0,0 +1,14 @@
+// { dg-do link}
+// { dg-options "-O -fsized-delete" }
+// { dg-final { scan-assembler "_ZdlPv\[mj\]" } }
+struct A
+{
+ int a[100];
+};
+
+int main(void)
+{
+ A *a = new A;
+ delete a;
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/plugin/selfassign.c b/gcc-4.9/gcc/testsuite/g++.dg/plugin/selfassign.c
index 041f25d..9a0c620 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/plugin/selfassign.c
+++ b/gcc-4.9/gcc/testsuite/g++.dg/plugin/selfassign.c
@@ -211,7 +211,7 @@ compare_and_warn (gimple stmt, tree lhs, tree rhs)
/* Check and warn if STMT is a self-assign statement. */
static void
-warn_self_assign (gimple stmt)
+check_self_assign (gimple stmt)
{
tree rhs, lhs;
@@ -264,7 +264,7 @@ execute_warn_self_assign (void)
FOR_EACH_BB_FN (bb, cfun)
{
for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
- warn_self_assign (gsi_stmt (gsi));
+ check_self_assign (gsi_stmt (gsi));
}
return 0;
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/pr60969.C b/gcc-4.9/gcc/testsuite/g++.dg/pr60969.C
new file mode 100644
index 0000000..4012e2c
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/pr60969.C
@@ -0,0 +1,32 @@
+/* { dg-do compile { target { { i?86-*-* x86_64-*-* } && ia32 } } } */
+/* { dg-options "-O2 -ftree-vectorize -march=pentium4 -mfpmath=387" } */
+
+struct A
+{
+ float f, g, h, k;
+ A () {}
+ A (float v0, float x, float y) : f(v0), g(x), h(y), k(0.0f) {}
+ A bar (A &a, float t) { return A (f + a.f * t, g + a.g * t, h + a.h * t); }
+};
+
+A
+baz (A &x, A &y, float t)
+{
+ return x.bar (y, t);
+}
+
+A *
+foo (A &s, A &t, A &u, A &v, int y, int z)
+{
+ A *x = new A[y * z];
+ for (int i = 0; i < 7; i++)
+ {
+ A s = baz (s, u, i / (float) z);
+ A t = baz (t, v, i / (float) z);
+ for (int j = 0; j < 7; j++)
+ x[i * y + j] = baz (s, t, j / (float) y);
+ }
+ return x;
+}
+
+/* { dg-final { scan-assembler-not "%mm" } } */
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/pr61094.C b/gcc-4.9/gcc/testsuite/g++.dg/pr61094.C
new file mode 100644
index 0000000..35adc25
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/pr61094.C
@@ -0,0 +1,31 @@
+/* { dg-do compile } */
+/* { dg-options "-O3" } */
+
+template <typename> struct A {
+ unsigned _width, _height, _depth, _spectrum;
+ template <typename t> A(t p1) {
+ int a = p1.size();
+ if (a) {
+ _width = p1._width;
+ _depth = _height = _spectrum = p1._spectrum;
+ }
+ }
+ long size() { return (long)_width * _height * _depth * _spectrum; }
+};
+
+int d;
+void fn1(void *);
+A<int> *fn2();
+void fn3() {
+ int b;
+ for (;;) {
+ A<char> c(*fn2());
+ fn1(&c);
+ if (d || !b)
+ throw;
+ }
+}
+
+
+
+
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/pr61289-2.c b/gcc-4.9/gcc/testsuite/g++.dg/pr61289-2.c
new file mode 100644
index 0000000..4cc3ebe
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/pr61289-2.c
@@ -0,0 +1,62 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -fno-exceptions" } */
+struct S
+{
+ inline int fn1 () const { return s; }
+ __attribute__ ((noinline, noclone)) S *fn2 (int);
+ __attribute__ ((noinline, noclone)) void fn3 ();
+ __attribute__ ((noinline, noclone)) static S *fn4 (int);
+ S (int i) : s (i) {}
+ int s;
+};
+
+int a = 0;
+S *b = 0;
+
+S *
+S::fn2 (int i)
+{
+ a++;
+ if (a == 1)
+ return b;
+ if (a > 3)
+ __builtin_abort ();
+ b = this;
+ return new S (i + s);
+}
+
+S *
+S::fn4 (int i)
+{
+ b = new S (i);
+ return b;
+}
+
+void
+S::fn3 ()
+{
+ delete this;
+}
+
+void
+foo ()
+{
+ S *c = S::fn4 (20);
+ for (int i = 0; i < 2;)
+ {
+ S *d = c->fn2 (c->fn1 () + 10);
+ if (c != d)
+{
+ c->fn3 ();
+ c = d;
+ ++i;
+}
+ }
+ c->fn3 ();
+}
+
+int
+main ()
+{
+ foo ();
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/pr61289.C b/gcc-4.9/gcc/testsuite/g++.dg/pr61289.C
new file mode 100644
index 0000000..ea7ccea
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/pr61289.C
@@ -0,0 +1,63 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -fno-exceptions" } */
+
+struct S
+{
+ inline int fn1 () const { return s; }
+ __attribute__ ((noinline, noclone)) S *fn2 (int);
+ __attribute__ ((noinline, noclone)) void fn3 ();
+ __attribute__ ((noinline, noclone)) static S *fn4 (int);
+ S (int i) : s (i) {}
+ int s;
+};
+
+int a = 0;
+S *b = 0;
+
+S *
+S::fn2 (int i)
+{
+ a++;
+ if (a == 1)
+ return b;
+ if (a > 3)
+ __builtin_abort ();
+ b = this;
+ return new S (i + s);
+}
+
+S *
+S::fn4 (int i)
+{
+ b = new S (i);
+ return b;
+}
+
+void
+S::fn3 ()
+{
+ delete this;
+}
+
+void
+foo ()
+{
+ S *c = S::fn4 (20);
+ for (int i = 0; i < 2;)
+ {
+ S *d = c->fn2 (c->fn1 () + 10);
+ if (d != c)
+{
+ c->fn3 ();
+ c = d;
+ ++i;
+}
+ }
+ c->fn3 ();
+}
+
+int
+main ()
+{
+ foo ();
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/rtti/repo1.C b/gcc-4.9/gcc/testsuite/g++.dg/rtti/repo1.C
index f72a973..16dd302 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/rtti/repo1.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/rtti/repo1.C
@@ -2,6 +2,7 @@
// { dg-options "-frepo" }
// { dg-require-host-local "" }
// { dg-skip-if "dkms are not final links" { vxworks_kernel } }
+// { dg-skip-if "-frepo not supported with --sysroot (as it is not passed to COLLECT_GCC_OPTIONS" { *-*-linux* } { "*" } { "" } }
#include <typeinfo>
template<int>
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/template/conv14.C b/gcc-4.9/gcc/testsuite/g++.dg/template/conv14.C
new file mode 100644
index 0000000..509ae6a
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/template/conv14.C
@@ -0,0 +1,30 @@
+// PR c++/61647
+
+class XX;
+
+template<typename Container, typename Key>
+struct Accessor;
+
+template<typename Container, typename Key, typename KeyStore = Key>
+class Variant {
+protected:
+ KeyStore index;
+ Container state;
+public:
+ Variant(Container st, const Key& i) : index(i), state(st) {}
+
+ template<typename T>
+ operator T() const {
+ return Accessor<Container, KeyStore>::template get<T>(state, index);
+ }
+};
+
+class AutoCleanVariant : public Variant<XX*, int> {
+public:
+ AutoCleanVariant(XX* st, int i) : Variant<XX*,int>(st,i) {}
+
+ template<typename T>
+ operator T() const {
+ return Variant<XX*, int>::operator T();
+ }
+};
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/template/local-fn1.C b/gcc-4.9/gcc/testsuite/g++.dg/template/local-fn1.C
new file mode 100644
index 0000000..88acd17
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/template/local-fn1.C
@@ -0,0 +1,8 @@
+// PR c++/60605
+
+template <typename T = int>
+struct Foo {
+ void bar() {
+ void bug();
+ }
+};
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/template/pr61537.C b/gcc-4.9/gcc/testsuite/g++.dg/template/pr61537.C
new file mode 100644
index 0000000..12aaf58
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/template/pr61537.C
@@ -0,0 +1,23 @@
+// PR c++/61537
+// { dg-do compile }
+
+struct A {};
+
+template <typename T>
+struct B
+{
+ template <typename U>
+ void f(U, struct A);
+};
+
+template <typename T>
+template <typename U>
+void B<T>::f(U, struct A)
+{
+}
+
+int main()
+{
+ B<char> b;
+ b.f(42, A());
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/template/ptrmem27.C b/gcc-4.9/gcc/testsuite/g++.dg/template/ptrmem27.C
new file mode 100644
index 0000000..8c63f9c
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/template/ptrmem27.C
@@ -0,0 +1,22 @@
+// PR c++/61500
+
+struct X {
+ int i;
+ int j;
+
+ int foo(int X::* ptr);
+
+ template <int X::* ptr>
+ int bar();
+};
+
+int X::foo(int X::* ptr) {
+ int* p = &(this->*ptr); // OK.
+ return *p;
+}
+
+template <int X::* ptr>
+int X::bar() {
+ int* p = &(this->*ptr); // gcc 4.9.0: OK in C++98 mode, fails in C++11 mode.
+ return *p;
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/template/ptrmem28.C b/gcc-4.9/gcc/testsuite/g++.dg/template/ptrmem28.C
new file mode 100644
index 0000000..0379960
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/template/ptrmem28.C
@@ -0,0 +1,10 @@
+// PR c++/61488
+
+struct A {
+ typedef int (A::*cont_func)();
+ template <A::cont_func> void wait(int);
+ int notify();
+
+ void fix() { wait<&A::notify>(0); } // OK
+ template <int> void repair() { wait<&A::notify>(0); }
+};
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/thunk_section_name.C b/gcc-4.9/gcc/testsuite/g++.dg/thunk_section_name.C
new file mode 100644
index 0000000..12c25c9
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/thunk_section_name.C
@@ -0,0 +1,30 @@
+/* { dg-require-named-sections "" } */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fno-reorder-blocks-and-partition -ffunction-sections" } */
+
+class base_class_1
+{
+public:
+ virtual void vfn () {}
+};
+
+class base_class_2
+{
+public:
+ virtual void vfn () {}
+};
+
+class need_thunk_class : public base_class_1, public base_class_2
+{
+public:
+ virtual void vfn () {}
+};
+
+int main (int argc, char *argv[])
+{
+ base_class_1 *c = new need_thunk_class ();
+ c->vfn();
+ return 0;
+}
+
+/* { dg-final { scan-assembler "\.text\._ZThn\[4|8\]_N16need_thunk_class3vfnEv" } } */
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/tls/thread_local9.C b/gcc-4.9/gcc/testsuite/g++.dg/tls/thread_local9.C
new file mode 100644
index 0000000..c75528a
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/tls/thread_local9.C
@@ -0,0 +1,23 @@
+// PR c++/61343
+
+// { dg-do run { target c++11 } }
+// { dg-add-options tls }
+// { dg-require-effective-target tls_runtime }
+
+struct Foo {
+ int value;
+
+ Foo() noexcept {
+ value = 12;
+ }
+};
+
+static thread_local Foo a{};
+
+static __attribute__((noinline)) void UseA() {
+ if (a.value != 12) __builtin_abort();
+}
+
+int main() {
+ UseA();
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60854.C b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60854.C
new file mode 100644
index 0000000..fa4b2e7
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60854.C
@@ -0,0 +1,13 @@
+template <typename T>
+class MyClass
+{
+public:
+ __attribute__ ((__always_inline__)) inline MyClass () { ; }
+};
+
+extern template class MyClass<double>;
+
+void Func()
+{
+ MyClass<double> x;
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60895.C b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60895.C
new file mode 100644
index 0000000..0edd36a
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60895.C
@@ -0,0 +1,32 @@
+// { dg-do compile }
+
+struct C
+{
+ double elems[3];
+};
+
+C
+foo ()
+{
+ C a;
+ double *f = a.elems;
+ int b;
+ for (; b;)
+ {
+ *f = 0;
+ ++f;
+ }
+ return a;
+}
+
+struct J
+{
+ C c;
+ __attribute__((always_inline)) J () : c (foo ()) {}
+};
+
+void
+bar ()
+{
+ J ();
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_1.C b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_1.C
new file mode 100644
index 0000000..c58f3ca
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_1.C
@@ -0,0 +1,45 @@
+/* Verify if call-graph profile sections are created with -freorder-functions=.
+ Check of edge profiles and node profiles are present in the profile
+ sections. Check if the segment splitting API is invoked. */
+/* { dg-require-section-exclude "" } */
+/* { dg-require-linker-function-reordering-plugin "" } */
+/* { dg-options "-O2 -freorder-functions=callgraph -ffunction-sections --save-temps -Wl,-plugin-opt,file=linker.dump -Wl,-plugin-opt,split_segment=yes" } */
+
+int
+notcalled ()
+{
+ return 0;
+}
+
+int __attribute__ ((noinline))
+foo ()
+{
+ return 1;
+}
+
+int __attribute__ ((noinline))
+bar ()
+{
+ return 0;
+}
+
+int main ()
+{
+ int sum;
+ for (int i = 0; i< 1000; i++)
+ {
+ sum = foo () + bar();
+ }
+ return sum * bar ();
+}
+
+/* { dg-final-use { scan-assembler "\.gnu\.callgraph\.text\.main" } } */
+/* { dg-final-use { scan-assembler "\.string \"1000\"" } } */
+/* { dg-final-use { scan-assembler "\.string \"Weight 1000 1000\"" } } */
+/* { dg-final-use { scan-assembler "\.string \"Weight 1001 1001\"" } } */
+/* Check if main is next to foo or bar */
+/* { dg-final-use { scan-file linker.dump "Callgraph group : *\(_Z3foov main|main _Z3foov|_Z3barv main|main _Z3barv\).*\n" } } */
+/* { dg-final-use { scan-file linker.dump ".text\..*\._Z9notcalledv entry count = 0 computed = 0 max count = 0" } } */
+/* { dg-final-use { scan-file linker.dump "Moving .* section\\(s\\) to new segment" } } */
+/* { dg-final-use { cleanup-saved-temps } } */
+/* { dg-final-use { remove-build-file "linker.dump" } } */
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_2.C b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_2.C
new file mode 100644
index 0000000..5e238d8
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_2.C
@@ -0,0 +1,25 @@
+/* Check if the edge_cutoffa option to the function reordering plugin works as
+ expected. */
+/* { dg-require-section-exclude "" } */
+/* { dg-require-linker-function-reordering-plugin "" } */
+/* { dg-options "-O2 -freorder-functions=callgraph -ffunction-sections -Wl,-plugin-opt,file=linker.dump -Wl,-plugin-opt,edge_cutoff=a1000" } */
+
+int __attribute__ ((noinline))
+foo ()
+{
+ return 1;
+}
+
+int main ()
+{
+ int sum = 0;
+ for (int i = 0; i< 1000; i++)
+ {
+ sum += foo ();
+ }
+ return sum - 1000;
+}
+
+/* { dg-final-use { scan-file linker.dump "Not considering edge with weight 1000 and below" } } */
+/* { dg-final-use { scan-file-not linker.dump "Callgraph group" } } */
+/* { dg-final-use { remove-build-file "linker.dump" } } */
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_3.C b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_3.C
new file mode 100644
index 0000000..f316701
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_3.C
@@ -0,0 +1,25 @@
+/* Check if the edge_cutoffp option to the function reordering plugin works as
+ expected. */
+/* { dg-require-section-exclude "" } */
+/* { dg-require-linker-function-reordering-plugin "" } */
+/* { dg-options "-O2 -freorder-functions=callgraph -ffunction-sections -Wl,-plugin-opt,file=linker.dump -Wl,-plugin-opt,edge_cutoff=p100" } */
+
+int __attribute__ ((noinline))
+foo ()
+{
+ return 1;
+}
+
+int main ()
+{
+ int sum = 0;
+ for (int i = 0; i< 1000; i++)
+ {
+ sum += foo ();
+ }
+ return sum - 1000;
+}
+
+/* { dg-final-use { scan-file linker.dump "Not considering edge with weight 1000 and below" } } */
+/* { dg-final-use { scan-file-not linker.dump "Callgraph group" } } */
+/* { dg-final-use { remove-build-file "linker.dump" } } */
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_4.C b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_4.C
new file mode 100644
index 0000000..58e38ad
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_4.C
@@ -0,0 +1,41 @@
+/* Check if cutting off callgraph gets all functions laid out only according to
+ function profiles and not prefixes. foo_200 is as hot as the other foo's but
+ has a unlikely section prefix. This should not matter as sort_name_prefix
+ is turned off. */
+/* { dg-require-section-exclude "" } */
+/* { dg-require-linker-function-reordering-plugin "" } */
+/* { dg-options "-O2 -freorder-functions=callgraph -ffunction-sections -Wl,-plugin-opt,file=linker.dump,-plugin-opt,edge_cutoff=p100,-plugin-opt,sort_name_prefix=no" } */
+
+int __attribute__ ((noinline, section(".text.unlikely._Z7foo_200v")))
+foo_200 ()
+{
+ return 1;
+}
+
+int __attribute__ ((noinline))
+foo_100 ()
+{
+ return 1;
+}
+
+int __attribute__ ((noinline))
+foo_300 ()
+{
+ return 1;
+}
+int main ()
+{
+ int sum = 0;
+ for (int i = 0; i< 200; i++)
+ sum += foo_200 ();
+ for (int i = 0; i< 100; i++)
+ sum += foo_100 ();
+ for (int i = 0; i< 300; i++)
+ sum += foo_300 ();
+ return sum - 600;
+}
+
+/* { dg-final-use { scan-file-not linker.dump "Callgraph group" } } */
+/* { dg-final-use { scan-file linker.dump ".text.unlikely._Z7foo_200v entry count = 200 computed = 200 max count = 200" } } */
+/* { dg-final-use { scan-file linker.dump "\.text\.*\._Z7foo_100v.*\n\.text\.unlikely\._Z7foo_200v.*\n\.text\.*\._Z7foo_300v.*\n" } } */
+/* { dg-final-use { remove-build-file "linker.dump" } } */
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_5.C b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_5.C
new file mode 100644
index 0000000..dbae8d7
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_5.C
@@ -0,0 +1,41 @@
+/* Check if cutting off callgraph and using sort_name_prefix gets all functions laid out
+ according to prefixes. foo_200 is almost as hot as the other foo's but should
+ not be grouped with them as it has a different section prefix and sort_name_prefix is
+ turned on. */
+/* { dg-require-section-exclude "" } */
+/* { dg-require-linker-function-reordering-plugin "" } */
+/* { dg-options "-O2 -freorder-functions=callgraph -ffunction-sections -Wl,-plugin-opt,file=linker.dump,-plugin-opt,edge_cutoff=p100,-plugin-opt,sort_name_prefix=yes" } */
+
+int __attribute__ ((noinline, section(".text.unlikely._Z7foo_200v")))
+foo_200 ()
+{
+ return 1;
+}
+
+int __attribute__ ((noinline))
+foo_100 ()
+{
+ return 1;
+}
+
+int __attribute__ ((noinline))
+foo_300 ()
+{
+ return 1;
+}
+int main ()
+{
+ int sum = 0;
+ for (int i = 0; i< 200; i++)
+ sum += foo_200 ();
+ for (int i = 0; i< 100; i++)
+ sum += foo_100 ();
+ for (int i = 0; i< 300; i++)
+ sum += foo_300 ();
+ return sum - 600;
+}
+
+/* { dg-final-use { scan-file-not linker.dump "Callgraph group" } } */
+/* { dg-final-use { scan-file linker.dump ".text.unlikely._Z7foo_200v entry count = 200 computed = 200 max count = 200" } } */
+/* { dg-final-use { scan-file linker.dump "\.text\.unlikely\._Z7foo_200v.*\n\.text\.*\._Z7foo_100v.*\n\.text\.*\._Z7foo_300v.*\n" } } */
+/* { dg-final-use { remove-build-file "linker.dump" } } */
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_6.C b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_6.C
new file mode 100644
index 0000000..1116a4f
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_6.C
@@ -0,0 +1,53 @@
+/* Check if use_maxcount works as expected. This makes the node profile weight to
+ be equal to the maximum count of any basic block in a function rather than the
+ entry count. foo_100's maxcount > foo_200's max count */
+/* { dg-require-section-exclude "" } */
+/* { dg-require-linker-function-reordering-plugin "" } */
+/* { dg-options "-O2 -freorder-functions=callgraph -ffunction-sections -Wl,-plugin-opt,file=linker.dump -Wl,-plugin-opt,edge_cutoff=p100,-plugin-opt,use_maxcount=yes" } */
+
+
+int __attribute__ ((noinline))
+bar (int *i)
+{
+ (*i)--;
+ if (*i >= 0)
+ return 1;
+ return 0;
+}
+
+int __attribute__ ((noinline))
+foo_100 (int count)
+{
+ int sum = 0;
+ while (count > 0)
+ {
+ sum += bar(&count);
+ }
+ return sum;
+}
+
+int __attribute__ ((noinline))
+foo_200 (int count)
+{
+ int sum = 0;
+ while (count > 0)
+ {
+ sum += bar(&count);
+ }
+ return sum;
+}
+
+int main ()
+{
+ int sum = 0;
+ for (int i = 0; i< 200; i++)
+ sum += foo_200 (100);
+ for (int i = 0; i< 100; i++)
+ sum += foo_100 (400);
+ return sum - 60000;
+}
+/* { dg-final-use { scan-file-not linker.dump "Callgraph group" } } */
+/* { dg-final-use { scan-file linker.dump "\.text\.*\._Z7foo_100i entry count = 100 computed = 100 max count = 40000" } } */
+/* { dg-final-use { scan-file linker.dump "\.text\.*\._Z7foo_200i entry count = 200 computed = 200 max count = 20000" } } */
+/* { dg-final-use { scan-file linker.dump "\.text\.*\._Z7foo_200i.*\n\.text\.*\._Z7foo_100i.*\n\.text\.*\._Z3barPi.*\n" } } */
+/* { dg-final-use { remove-build-file "linker.dump" } } */
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_7.C b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_7.C
new file mode 100644
index 0000000..3af8636
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_7.C
@@ -0,0 +1,55 @@
+/* Check if turning off use_maxcount works as expected. This makes the node
+ profile weight to be equal to the entry count of any basic block in a
+ function rather than the max count.
+ foo_100's maxcount > foo_200's max count but
+ foo_100's entry count < foo_200's entry count. */
+/* { dg-require-section-exclude "" } */
+/* { dg-require-linker-function-reordering-plugin "" } */
+/* { dg-options "-O2 -freorder-functions=callgraph -ffunction-sections -Wl,-plugin-opt,file=linker.dump -Wl,-plugin-opt,edge_cutoff=p100,-plugin-opt,use_maxcount=no" } */
+
+
+int __attribute__ ((noinline))
+bar (int *i)
+{
+ (*i)--;
+ if (*i >= 0)
+ return 1;
+ return 0;
+}
+
+int __attribute__ ((noinline))
+foo_100 (int count)
+{
+ int sum = 0;
+ while (count > 0)
+ {
+ sum += bar(&count);
+ }
+ return sum;
+}
+
+int __attribute__ ((noinline))
+foo_200 (int count)
+{
+ int sum = 0;
+ while (count > 0)
+ {
+ sum += bar(&count);
+ }
+ return sum;
+}
+
+int main ()
+{
+ int sum = 0;
+ for (int i = 0; i< 200; i++)
+ sum += foo_200 (100);
+ for (int i = 0; i< 100; i++)
+ sum += foo_100 (400);
+ return sum - 60000;
+}
+/* { dg-final-use { scan-file-not linker.dump "Callgraph group" } } */
+/* { dg-final-use { scan-file linker.dump "\.text\.*\._Z7foo_100i entry count = 100 computed = 100 max count = 40000" } } */
+/* { dg-final-use { scan-file linker.dump "\.text\.*\._Z7foo_200i entry count = 200 computed = 200 max count = 20000" } } */
+/* { dg-final-use { scan-file linker.dump "\.text\.*\._Z7foo_100i.*\n\.text\.*\._Z7foo_200i.*\n\.text\.*\._Z3barPi.*\n" } } */
+/* { dg-final-use { remove-build-file "linker.dump" } } */
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_8.C b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_8.C
new file mode 100644
index 0000000..3f1a015
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_8.C
@@ -0,0 +1,19 @@
+/* Check if unlikely_cutoff works as expected. Function foo is unlikely because of the cutoff. */
+/* { dg-require-section-exclude "" } */
+/* { dg-require-linker-function-reordering-plugin "" } */
+/* { dg-options "-O2 -freorder-functions=callgraph -ffunction-sections -Wl,-plugin-opt,file=linker.dump -Wl,-plugin-opt,edge_cutoff=p100,-plugin-opt,unlikely_cutoff=1" } */
+
+int __attribute__ ((noinline,section(".text.hot._Z3foov")))
+foo ()
+{
+ return 0;
+}
+
+int main()
+{
+ return foo ();
+}
+
+/* { dg-final-use { scan-file-not linker.dump "Callgraph group" } } */
+/* { dg-final-use { scan-file linker.dump "=== Unlikely sections start ===\n.*\.text\.hot\._Z3foov.* entry count = 1 computed = 1 max count = 1 split = 0\n.*=== Unlikely sections end ===" } } */
+/* { dg-final-use { remove-build-file "linker.dump" } } */
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_split_functions_1.C b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_split_functions_1.C
new file mode 100644
index 0000000..2f184c3
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/func_reorder_gold_plugin_split_functions_1.C
@@ -0,0 +1,63 @@
+/* Check if the gold function reordering plugin reorders split functions.
+ Check if foo is split and the cold section of foo is not next to its hot
+ section*/
+/* { dg-require-section-exclude "" } */
+/* { dg-require-linker-function-reordering-plugin "" } */
+/* { dg-require-effective-target freorder } */
+/* { dg-options "-O2 -freorder-functions=callgraph -ffunction-sections -freorder-blocks-and-partition --save-temps -Wl,-plugin-opt,file=linker.dump" } */
+
+
+#define SIZE 10000
+
+const char *sarr[SIZE];
+const char *buf_hot;
+const char *buf_cold;
+
+__attribute__ ((noinline))
+int bar (int *arg)
+{
+ (*arg)++;
+ return 0;
+}
+
+__attribute__((noinline))
+void
+foo (int path)
+{
+ int i;
+ bar (&path);
+ if (path)
+ {
+ for (i = 0; i < SIZE; i++)
+ sarr[i] = buf_hot;
+ }
+ else
+ {
+ for (i = 0; i < SIZE; i++)
+ sarr[i] = buf_cold;
+ }
+}
+
+int
+main (int argc, char *argv[])
+{
+ buf_hot = "hello";
+ buf_cold = "world";
+ foo (argc);
+ return 0;
+}
+
+/* { dg-final-use { scan-assembler "\.string \"ColdWeight 0\"" } } */
+/* { dg-final-use { scan-assembler "\.section.*\.text\.hot\._Z3fooi" } } */
+/* { dg-final-use { scan-assembler "\.section.*\.text\.unlikely\._Z3fooi" } } */
+/* { dg-final-use { cleanup-saved-temps } } */
+/* Check if foo and bar are together */
+/* { dg-final-use { scan-file linker.dump "Callgraph group :.*\(_Z3fooi _Z3barPi|_Z3barPi _Z3fooi\).*\n" } } */
+/* Check if foo and main are together */
+/* { dg-final-use { scan-file linker.dump "Callgraph group :.*\(_Z3fooi main|main _Z3fooi\).*\n" } } */
+/* { dg-final-use { scan-file linker.dump "\.text\.unlikely\._Z3fooi .* split = 1" } } */
+/* Check if unlikely sections of foo and bar are together */
+/* { dg-final-use { scan-file linker.dump "\(\.text\.unlikely\._Z3fooi\[^\n\]*\n\.text\.unlikely\._Z3barPi\[^\n\]*\n|\.text\.unlikely\._Z3barPi\[^\n\]*\n\.text\.unlikely\._Z3fooi\[^\n\]*\n\)" } } */
+/* Check if likely sections of hot foo and bar are together */
+/* { dg-final-use { scan-file linker.dump "\(\.text\._Z3barPi\[^\n\]*\n\.text\.hot\._Z3fooi|\.text\.hot\._Z3fooi\[^\n\]*\n\.text\._Z3barPi\)" } } */
+/* { dg-final-use { remove-build-file "linker.dump" } } */
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/indir-call-prof-2_0.C b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/indir-call-prof-2_0.C
new file mode 100644
index 0000000..e20cc64
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/indir-call-prof-2_0.C
@@ -0,0 +1,35 @@
+/* { dg-options "-O" } */
+
+int foo1(void) { return 0; }
+int bar1(void) { throw 1; }
+void foo2(void) { }
+void bar2(void) { throw 1; }
+void __attribute__((noinline,noclone)) test1(void (*f)(void)) { (*f)(); }
+void __attribute__((noinline,noclone)) test2(void (*f)(void)) { (*f)(); }
+int __attribute__((noinline,noclone)) test3(int (*f)(void)) { return (*f)(); }
+int __attribute__((noinline,noclone)) test4(int (*f)(void)) { return (*f)(); }
+int __attribute__((noinline,noclone)) test5(int (*f)(void), int x) { return x ? x : (*f)(); }
+int __attribute__((noinline,noclone)) test6(int (*f)(void), int x) { return x ? x : (*f)(); }
+void __attribute__((noinline,noclone)) test7(void (*f)(void)) { try { (*f)(); } catch (...) {} }
+void __attribute__((noinline,noclone)) test8(void (*f)(void)) { try { (*f)(); } catch (...) {}}
+int __attribute__((noinline,noclone)) test9(int (*f)(void)) { try { return (*f)(); } catch (...) {return 0;} }
+int __attribute__((noinline,noclone)) test10(int (*f)(void)) { try { return (*f)(); } catch (...) {return 0;} }
+int __attribute__((noinline,noclone)) test11(int (*f)(void), int x) { try { return x ? x : (*f)(); } catch (...) {return 0;} }
+int __attribute__((noinline,noclone)) test12(int (*f)(void), int x) { try { return x ? x : (*f)(); } catch (...) {return 0;} }
+
+int main()
+{
+ for (int i = 0; i < 100; ++i) test1(foo2);
+ for (int i = 0; i < 100; ++i) try { test2(bar2); } catch (...) {}
+ for (int i = 0; i < 100; ++i) test3(foo1);
+ for (int i = 0; i < 100; ++i) try { test4(bar1); } catch (...) {}
+ for (int i = 0; i < 100; ++i) test5(foo1, 0);
+ for (int i = 0; i < 100; ++i) try { test6(bar1, 0); } catch (...) {}
+ for (int i = 0; i < 100; ++i) test7(foo2);
+ for (int i = 0; i < 100; ++i) try { test8(bar2); } catch (...) {}
+ for (int i = 0; i < 100; ++i) test9(foo1);
+ for (int i = 0; i < 100; ++i) try { test10(bar1); } catch (...) {}
+ for (int i = 0; i < 100; ++i) test11(foo1, 0);
+ for (int i = 0; i < 100; ++i) try { test12(bar1, 0); } catch (...) {}
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/indir-call-prof_0.C b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/indir-call-prof_0.C
new file mode 100644
index 0000000..b34b937
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/indir-call-prof_0.C
@@ -0,0 +1,39 @@
+/* { dg-options "-O2 -fdump-tree-optimized -fdump-ipa-profile" } */
+
+struct A {
+ A () {}
+
+ virtual int AA (void)
+ { return 0; }
+
+};
+
+struct B : public A {
+ B () {}
+
+ virtual int AA (void)
+ { return 1; }
+};
+
+void * __attribute__((noinline,noclone)) wrap (void *p) { return p; }
+int
+main (void)
+{
+ A a;
+ B b;
+
+ A* p;
+
+ p = (A *)wrap ((void *)&a);
+ p->AA ();
+
+ p = (B *)wrap ((void *)&b);
+ p->AA ();
+
+ return 0;
+}
+
+/* { dg-final-use { scan-ipa-dump "Indirect call -> direct call.* AA " "profile" } } */
+/* { dg-final-use { scan-tree-dump-not "Invalid sum" "optimized" } } */
+/* { dg-final-use { cleanup-tree-dump "optimized" } } */
+/* { dg-final-use { cleanup-ipa-dump "profile" } } */
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/inline_mismatch_args_0.C b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/inline_mismatch_args_0.C
new file mode 100644
index 0000000..e82a46e
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/inline_mismatch_args_0.C
@@ -0,0 +1,36 @@
+/* { dg-options "-O2 -fdump-tree-einline" } */
+class DocId {
+ public:
+ DocId() { }
+ DocId(const DocId &other) { }
+};
+
+int g;
+class Base {
+ public:
+ virtual void Foo(DocId id) { g++; }
+};
+
+class Super: public Base {
+ public:
+ void Foo(DocId id) { }
+ void Bar(Base *base, DocId id) __attribute__((noinline));
+};
+
+void Super::Bar(Base *base, DocId id) {
+ Super::Foo(id); // direct call is inlined
+ base->Foo(id); // indirect call is marked do not inline
+}
+
+int main(void)
+{
+ Base bah;
+ Super baz;
+ DocId gid;
+
+ baz.Bar(&baz, gid);
+ return 0;
+}
+/* { dg-final-use { scan-tree-dump "Inlining .*Super::Foo" "einline" } } */
+/* { dg-final-use { scan-tree-dump-not "mismatched arguments" "einline" } } */
+/* { dg-final-use { cleanup-tree-dump "einline" } } */
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/lipo.exp b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/lipo.exp
new file mode 100644
index 0000000..2d1ddd7
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/lipo.exp
@@ -0,0 +1,60 @@
+# Copyright (C) 2001, 2002, 2004, 2005, 2007, 2008
+# Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3. If not see
+# <http://www.gnu.org/licenses/>.
+
+# Test the functionality of programs compiled with profile-directed block
+# ordering using -fprofile-generate followed by -fprofile-use.
+
+load_lib target-supports.exp
+
+# Some targets don't support tree profiling.
+if { ![check_profiling_available ""] } {
+ return
+}
+
+# The procedures in profopt.exp need these parameters.
+set tool g++
+set prof_ext [list {gcda} {gcda.imports} ]
+
+# Override the list defined in profopt.exp.
+set PROFOPT_OPTIONS [list {}]
+
+if $tracelevel then {
+ strace $tracelevel
+}
+
+# Load support procs.
+load_lib profopt.exp
+
+# These are globals used by profopt-execute. The first is options
+# needed to generate profile data, the second is options to use the
+# profile data.
+set profile_option "-fprofile-generate -fripa"
+set feedback_option "-fprofile-use -fripa"
+
+# Add -fno-section-anchors for powerpc. Workround for Google ref b/6663281
+if {[istarget powerpc*-*-*]} {
+ set profile_option "$profile_option -fno-section-anchors"
+ set feedback_option "$feedback_option -fno-section-anchors"
+}
+
+foreach src [lsort [glob -nocomplain $srcdir/$subdir/*_0.C]] {
+ # If we're only testing specific files and this isn't one of them, skip it.
+ if ![runtest_file_p $runtests $src] then {
+ continue
+ }
+ profopt-execute $src
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/partition1_0.C b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/partition1_0.C
new file mode 100644
index 0000000..1088039
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/partition1_0.C
@@ -0,0 +1,54 @@
+/* { dg-require-effective-target freorder } */
+/* { dg-options "-O2 -freorder-blocks-and-partition" } */
+/* { dg-skip-if "PR target/47683" { mips-sgi-irix* } } */
+
+struct A { A () __attribute__((noinline)); ~A () __attribute__((noinline)); };
+A::A () { asm volatile ("" : : : "memory"); }
+A::~A () { asm volatile ("" : : : "memory"); }
+
+int bar () __attribute__((noinline));
+void foo () __attribute__((noinline));
+
+volatile int k, l;
+
+int bar (int i)
+{
+ void *p = __builtin_alloca (i);
+ asm volatile ("" : : "r" (i), "r" (p) : "memory");
+ if (k) throw 6;
+ return ++l;
+}
+
+void foo ()
+{
+ A a;
+ try {
+ A b;
+ int i = bar (5);
+ try { throw 6; } catch (int) {}
+ if (__builtin_expect (i < 4500, 0)) {
+ bar (7);
+ try { bar (8); } catch (long) {}
+ bar (10);
+ if (__builtin_expect (i < 0, 0)) {
+ try { bar (12); } catch (...) {}
+ bar (16);
+ bar (122);
+ } else {
+ try { bar (bar (7)); } catch (int) {}
+ }
+ } else {
+ try { bar (bar (bar (9))); } catch (...) {}
+ bar (5);
+ }
+ } catch (...) {
+ }
+}
+
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 10000; i++)
+ foo ();
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/partition2_0.C b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/partition2_0.C
new file mode 100644
index 0000000..6715da5
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/partition2_0.C
@@ -0,0 +1,16 @@
+// PR middle-end/45458
+// { dg-require-effective-target freorder }
+// { dg-options "-fnon-call-exceptions -freorder-blocks-and-partition" }
+// { dg-skip-if "PR target/47683" { mips-sgi-irix* } }
+
+int
+main ()
+{
+ try
+ {
+ throw 6;
+ }
+ catch (...)
+ {
+ }
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/partition3_0.C b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/partition3_0.C
new file mode 100644
index 0000000..7846983
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/partition3_0.C
@@ -0,0 +1,18 @@
+// PR middle-end/45566
+// { dg-require-effective-target freorder }
+// { dg-options "-O -fnon-call-exceptions -freorder-blocks-and-partition" }
+
+int k;
+
+int
+main ()
+{
+ try
+ {
+ if (k)
+ throw 6;
+ }
+ catch (...)
+ {
+ }
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/vcall1_0.C b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/vcall1_0.C
new file mode 100644
index 0000000..3052344
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/vcall1_0.C
@@ -0,0 +1,41 @@
+/* { dg-options "-O2 -fdump-tree-optimized -fdump-ipa-profile" } */
+#include <stdio.h>
+struct A {
+ A () {}
+ virtual int AA (void) { return 0; }
+};
+
+extern A* getB (void);
+extern A* getC (void);
+
+int g;
+
+int
+main (void)
+{
+ A* p;
+ int i;
+ int s = 0;
+
+ p = getB();
+ for (i = 0; i < 100; i++)
+ {
+ s += p->AA();
+ }
+
+ for (i = 0; i < 100; i++)
+ {
+ if (i%10 == 0)
+ p = getB();
+ else
+ p = getC();
+
+ s += p->AA();
+ }
+ printf ("result = %d\n",s);
+}
+
+/* { dg-final-use { scan-ipa-dump-times "Indirect call -> direct call" 2 "profile" } } */
+/* { dg-final-use { scan-tree-dump-not "Invalid sum" "optimized" } } */
+/* { dg-final-use { cleanup-tree-dump "optimized" } } */
+/* { dg-final-use { cleanup-ipa-dump "profile" } } */
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/vcall1_1.C b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/vcall1_1.C
new file mode 100644
index 0000000..6023024
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/vcall1_1.C
@@ -0,0 +1,23 @@
+/* { dg-options "-O2 -fdump-tree-optimized -fdump-ipa-profile" } */
+
+struct A {
+ A () {}
+
+ virtual int AA (void)
+ { return 0; }
+
+};
+
+struct B : public A {
+ B () {}
+
+ virtual int AA (void)
+ { return 1; }
+};
+
+B b;
+
+A* getB (void)
+{
+ return &b;
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/vcall1_2.C b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/vcall1_2.C
new file mode 100644
index 0000000..cc33d6a
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/lipo/vcall1_2.C
@@ -0,0 +1,31 @@
+/* { dg-options "-O2 -fdump-tree-optimized -fdump-ipa-profile" } */
+
+struct A {
+ A () {}
+
+ virtual int AA (void)
+ { return 0; }
+
+};
+
+struct B : public A {
+ B () {}
+
+ virtual int AA (void)
+ { return 1; }
+};
+
+struct C : public B {
+ C () {}
+
+ virtual int AA (void)
+ { return 2; }
+
+};
+
+C c;
+
+A* getC(void)
+{
+ return &c;
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/morefunc.C b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/morefunc.C
new file mode 100644
index 0000000..d5cee40
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/morefunc.C
@@ -0,0 +1,55 @@
+/* { dg-options "-O2 -fno-devirtualize --param=profile-func-internal-id=0 -fdump-ipa-profile -Wno-attributes -Wno-coverage-mismatch" } */
+#include "reorder_class1.h"
+#include "reorder_class2.h"
+
+int g;
+
+#ifdef _PROFILE_USE
+/* Another function not existing
+ * in profile-gen */
+
+__attribute__((noinline)) void
+new_func (int i)
+{
+ g += i;
+}
+#endif
+
+static __attribute__((always_inline))
+void test1 (A *tc)
+{
+ int i;
+ for (i = 0; i < 1000; i++)
+ g += tc->foo();
+ if (g<100) g++;
+}
+
+static __attribute__((always_inline))
+void test2 (B *tc)
+{
+ int i;
+ for (i = 0; i < 1000; i++)
+ g += tc->foo();
+}
+
+
+__attribute__((noinline)) void test_a(A *ap) { test1 (ap); }
+__attribute__((noinline)) void test_b(B *bp) { test2 (bp); }
+
+
+int main()
+{
+ A* ap = new A();
+ B* bp = new B();
+
+ test_a(ap);
+ test_b(bp);
+
+#ifdef _PROFILE_USE
+ new_func(10);
+#endif
+
+}
+
+/* { dg-final-use { scan-ipa-dump-times "Indirect call -> direct call" 2 "profile" } } */
+
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/reorder.C b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/reorder.C
new file mode 100644
index 0000000..f0efc21
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/reorder.C
@@ -0,0 +1,48 @@
+/* { dg-options "-O2 -fno-devirtualize --param=profile-func-internal-id=0 -fdump-ipa-profile -Wno-attributes" } */
+
+#ifdef _PROFILE_USE
+#include "reorder_class1.h"
+#include "reorder_class2.h"
+#else
+#include "reorder_class2.h"
+#include "reorder_class1.h"
+#endif
+
+int g;
+static __attribute__((always_inline))
+void test1 (A *tc)
+{
+ int i;
+ for (i = 0; i < 1000; i++)
+ g += tc->foo();
+ if (g<100) g++;
+}
+
+static __attribute__((always_inline))
+void test2 (B *tc)
+{
+ int i;
+ for (i = 0; i < 1000; i++)
+ g += tc->foo();
+}
+
+
+#ifdef _PROFILE_USE
+__attribute__((noinline)) void test_a(A *ap) { test1 (ap); }
+__attribute__((noinline)) void test_b(B *bp) { test2 (bp); }
+#else
+__attribute__((noinline)) void test_b(B *bp) { test2 (bp); }
+__attribute__((noinline)) void test_a(A *ap) { test1 (ap); }
+#endif
+
+int main()
+{
+ A* ap = new A();
+ B* bp = new B();
+
+ test_a(ap);
+ test_b(bp);
+}
+
+/* { dg-final-use { scan-ipa-dump-times "Indirect call -> direct call" 2 "profile" } } */
+
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/reorder_class1.h b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/reorder_class1.h
new file mode 100644
index 0000000..62a1e92
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/reorder_class1.h
@@ -0,0 +1,11 @@
+struct A {
+ virtual int foo();
+};
+
+int A::foo()
+{
+ return 1;
+}
+
+
+
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/reorder_class2.h b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/reorder_class2.h
new file mode 100644
index 0000000..ee3ed10
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/reorder_class2.h
@@ -0,0 +1,12 @@
+
+struct B {
+ virtual int foo();
+};
+
+int B::foo()
+{
+ return 2;
+}
+
+
+
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/tree-prof.exp b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/tree-prof.exp
index 2c96ee3..f12ddaf 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/tree-prof.exp
+++ b/gcc-4.9/gcc/testsuite/g++.dg/tree-prof/tree-prof.exp
@@ -42,8 +42,8 @@ set PROFOPT_OPTIONS [list {}]
# These are globals used by profopt-execute. The first is options
# needed to generate profile data, the second is options to use the
# profile data.
-set profile_option "-fprofile-generate"
-set feedback_option "-fprofile-use"
+set profile_option "-fprofile-generate -D_PROFILE_GENERATE"
+set feedback_option "-fprofile-use -D_PROFILE_USE"
foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.C]] {
# If we're only testing specific files and this isn't one of them, skip it.
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/tree-ssa/forwprop-switch.C b/gcc-4.9/gcc/testsuite/g++.dg/tree-ssa/forwprop-switch.C
new file mode 100644
index 0000000..c3f12ac
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/tree-ssa/forwprop-switch.C
@@ -0,0 +1,24 @@
+// { dg-do compile }
+// { dg-options "-O -fdump-tree-cddce1" }
+
+enum Scale { E1, E2, E3, E4, E5, E6, E7, E8 };
+
+int Test(Scale s)
+{
+ switch(s)
+ {
+ case E1: return 12;
+ case E2: return 17;
+ case E3: return 22;
+ case E4: return 42;
+ default: break;
+ }
+ return 0;
+}
+
+// tree forwprop should have eliminated the (int) s cast for the
+// switch value and directly switch on the 's' parameter
+
+// { dg-final { scan-tree-dump-not "\\\(int\\\)" "cddce1" } }
+// { dg-final { scan-tree-dump "switch \\\(s_.\\\(D\\\)\\\)" "cddce1" } }
+// { dg-final { cleanup-tree-dump "cddce1" } }
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/tree-ssa/pr61009.C b/gcc-4.9/gcc/testsuite/g++.dg/tree-ssa/pr61009.C
new file mode 100644
index 0000000..4e7bb1a
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/tree-ssa/pr61009.C
@@ -0,0 +1,53 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fno-tree-vrp -std=c++11 -fno-strict-aliasing -fdump-tree-dom1" } */
+
+#include <stdio.h>
+struct Field {
+ virtual int Compare(void*, void*);
+};
+extern int NKF, NR;
+extern int idxs[];
+extern Field* the_field;
+extern int *incs;
+extern char** fptrs;
+inline int doCmp(int this_row_offset, int field_idx) {
+ void *p = fptrs[field_idx] + this_row_offset * incs[field_idx];
+ return the_field->Compare(p,0);
+}
+bool Test(void) {
+
+ int row_offset = 0;
+
+ for (; row_offset < NR; ++row_offset) {
+
+ bool is_different = false;
+ for (int j = 0; j < NKF ; ++j) {
+ int field_idx = idxs[j];
+ int cmp = doCmp(row_offset, field_idx);
+ fprintf (stderr, "cmp=%d\n",cmp);
+
+ if (cmp == 0) {
+ continue;
+ }
+ if (cmp > 0) {
+ is_different = true;
+ break;
+ } else {
+ fprintf (stderr, "Incorrect\n");
+ return false;
+ }
+ }
+ if (!is_different) {
+
+ return false;
+ }
+ }
+
+ return true;
+}
+
+// The block ending with cmp == 0 should not be threaded. ie,
+// there should be a single == 0 comparison in the dump file.
+
+// { dg-final { scan-tree-dump-times "== 0" 1 "dom1" } }
+// { dg-final { cleanup-tree-dump "dom1" } }
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/vect/pr60836.cc b/gcc-4.9/gcc/testsuite/g++.dg/vect/pr60836.cc
new file mode 100644
index 0000000..83bb183
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/vect/pr60836.cc
@@ -0,0 +1,39 @@
+// { dg-do compile }
+
+int a, b;
+typedef double (*NormFunc) (const int &);
+int &
+max (int &p1, int &p2)
+{
+ if (p1 < p2)
+ return p2;
+ return p1;
+}
+
+struct A
+{
+ int operator () (int p1, int p2)
+ {
+ return max (p1, p2);
+ }
+};
+template < class, class > double
+norm_ (const int &)
+{
+ char c, d;
+ A e;
+ for (; a; a++)
+ {
+ b = e (b, d);
+ b = e (b, c);
+ }
+}
+
+void
+norm ()
+{
+ static NormFunc f = norm_ < int, A >;
+ f = 0;
+}
+
+// { dg-final { cleanup-tree-dump "vect" } }
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/warn/Weff1.C b/gcc-4.9/gcc/testsuite/g++.dg/warn/Weff1.C
deleted file mode 100644
index a00dc29..0000000
--- a/gcc-4.9/gcc/testsuite/g++.dg/warn/Weff1.C
+++ /dev/null
@@ -1,5 +0,0 @@
-// { dg-options "-Weffc++" }
-
-struct S {};
-/* Base classes should have virtual destructors. */
-struct T : public S {}; // { dg-warning "" }
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnull-conversion-1.C b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnull-conversion-1.C
index 84a1d38..ff82fd4 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnull-conversion-1.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnull-conversion-1.C
@@ -3,7 +3,7 @@
#include <stddef.h>
-void func1(int* ptr);
+void func1 (int *ptr);
void func2() {
int* t = false; // { dg-warning "converting 'false' to pointer" }
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnull-conversion-2.C b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnull-conversion-2.C
index 92a87d1..6ce7605 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnull-conversion-2.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnull-conversion-2.C
@@ -3,43 +3,53 @@
#include <stddef.h>
-class Foo {
- public:
- template <typename T1, typename T2>
- static void Compare(const T1& expected, const T2& actual) { }
+class Foo
+{
+public:
+ template < typename T1, typename T2 >
+ static void Compare (const T1 & expected, const T2 & actual)
+ {
+ }
- template <typename T1, typename T2>
- static void Compare(const T1& expected, T2* actual) { }
+ template < typename T1, typename T2 >
+ static void Compare (const T1 & expected, T2 * actual)
+ {
+ }
};
-template<typename T1>
-class Foo2 {
- public:
- Foo2(int x);
- template<typename T2> void Bar(T2 y);
+template < typename T1 > class Foo2
+{
+public:
+ Foo2 (int x);
+ template < typename T2 > void Bar (T2 y);
};
-template<typename T3> void func(T3 x) { }
+template < typename T3 > void
+func (T3 x)
+{
+}
-typedef Foo2<int> MyFooType;
+typedef Foo2 < int >MyFooType;
-void func1(long int a) {
- MyFooType *foo2 = new MyFooType(NULL); // { dg-warning "passing NULL to" }
- foo2->Bar(a);
- func(NULL);
- func<int>(NULL); // { dg-warning "passing NULL to" }
- func<int *>(NULL);
+void
+func1 (long int a)
+{
+ MyFooType *foo2 = new MyFooType (NULL); // { dg-warning "passing NULL to" }
+ foo2->Bar (a);
+ func (NULL);
+ func < int >(NULL); // { dg-warning "passing NULL to" }
+ func < int *>(NULL);
}
int x = 1;
-main()
+main ()
{
int *p = &x;
- Foo::Compare(0, *p);
- Foo::Compare<long int, int>(NULL, p); // { dg-warning "passing NULL to" }
- Foo::Compare(NULL, p);
- func1(NULL); // { dg-warning "passing NULL to" }
+ Foo::Compare (0, *p);
+ Foo::Compare < long int, int >(NULL, p); // { dg-warning "passing NULL to" }
+ Foo::Compare (NULL, p);
+ func1 (NULL); // { dg-warning "passing NULL to" }
}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wself-assign-1.C b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wself-assign-1.C
new file mode 100644
index 0000000..f152805
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wself-assign-1.C
@@ -0,0 +1,54 @@
+// Test the self-assignemnt detection and warning.
+// { dg-do compile }
+// { dg-options "-Wself-assign" }
+
+class Foo {
+ private:
+ int a_;
+
+ public:
+ Foo() : a_(a_) {} // { dg-warning "assigned to itself" }
+
+ void setA(int a) {
+ a_ = a_; // { dg-warning "assigned to itself" }
+ }
+
+ void operator=(Foo& rhs) {
+ this->a_ = rhs.a_;
+ }
+};
+
+struct Bar {
+ int b_;
+ int c_;
+};
+
+int g = g; // { dg-warning "assigned to itself" }
+Foo foo = foo; // { dg-warning "assigned to itself" }
+
+int func()
+{
+ Bar *bar1, bar2;
+ Foo local_foo;
+ int x = x; // { dg-warning "assigned to itself" }
+ static int y = y; // { dg-warning "assigned to itself" }
+ float *f;
+ Bar bar_array[5];
+ char n;
+ int overflow;
+
+ *f = *f; // { dg-warning "assigned to itself" }
+ bar1->b_ = bar1->b_; // { dg-warning "assigned to itself" }
+ bar2.c_ = bar2.c_; // { dg-warning "assigned to itself" }
+ local_foo = local_foo;
+ foo = foo;
+ foo.setA(5);
+ bar_array[3].c_ = bar_array[3].c_; // { dg-warning "assigned to itself" }
+ bar_array[x+g].b_ = bar_array[x+g].b_; // { dg-warning "assigned to itself" }
+ y = x;
+ x = y;
+ x += 0; // should not warn
+ y -= 0; // should not warn
+ x /= x; // should not warn
+ y *= y; // should not warn
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wself-assign-3.C b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wself-assign-3.C
new file mode 100644
index 0000000..bc5732d
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wself-assign-3.C
@@ -0,0 +1,35 @@
+// Test how operands_equal_p handles a NULL operand.
+// { dg-do compile }
+// { dg-options "-Wself-assign" }
+
+#include <cstdio>
+
+namespace testing {
+
+class Foo {
+ int f;
+ public:
+ Foo() { printf("Construct Foo\n"); }
+};
+
+class Bar {
+ int b;
+ public:
+ Bar(int x) { printf("Construct Bar\n"); }
+
+ void operator=(const Foo& foo) {
+ printf("Assign Foo to Bar\n");
+ }
+};
+
+}
+
+template <class T>
+void func(T t) {
+ ::testing::Bar(1) = ::testing::Foo(); // used to trigger a segfault
+ ::testing::Foo() = ::testing::Foo();
+}
+
+main() {
+ func(2);
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wself-assign-4.C b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wself-assign-4.C
new file mode 100644
index 0000000..abe96b5
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wself-assign-4.C
@@ -0,0 +1,48 @@
+// Test how self-assignment detection handles constant-folding happening
+// when parsing the RHS or the initializer.
+// { dg-do compile }
+// { dg-options "-Wself-assign" }
+
+class Foo {
+ private:
+ int a_;
+
+ public:
+ Foo() : a_(a_+0) {} // should not warn
+
+ void setA(int a) {
+ a_ = a_ + 0; // should not warn
+ }
+
+ void operator=(Foo& rhs) {
+ this->a_ = rhs.a_;
+ }
+};
+
+struct Bar {
+ int b_;
+ float c_;
+};
+
+int g = g * 1; // should not warn
+
+int func()
+{
+ Bar *bar1, bar2;
+ Foo foo;
+ int x = x - 0; // should not warn
+ static int y = y / 1; // should not warn
+ float *f;
+ Bar bar_array[5];
+
+ *f = *f / 1; // should not warn
+ bar1->b_ = bar1->b_ * 1; // should not warn
+ bar2.c_ = bar2.c_ - 0; // should not warn
+ foo.setA(5);
+ bar_array[3].c_ = bar_array[3].c_ * 1; // should not warn
+ bar_array[x+g].b_ = bar_array[x+g].b_ / 1; // should not warn
+ x += 0;
+ y -= 0;
+ foo = foo;
+ foo.operator=(foo); // should not warn
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wself-assign-5.C b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wself-assign-5.C
new file mode 100644
index 0000000..20df214
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wself-assign-5.C
@@ -0,0 +1,38 @@
+// Test -Wself-assign does not warn on self-assignment of non-POD variables.
+// { dg-do compile }
+// { dg-options "-Wself-assign" }
+
+template<typename T>
+class Foo {
+ private:
+ T a_;
+ public:
+ Foo() : a_(a_) {} // { dg-warning "assigned to itself" }
+ void Set() { a_ = a_; }
+};
+
+struct Bar {
+ int b_;
+ int c_;
+ void operator=(Bar& rhs) {
+ this->b_ = rhs.b_;
+ this->c_ = rhs.c_;
+ }
+};
+
+template <typename T>
+void func() {
+ T a;
+ a = a;
+}
+
+main()
+{
+ Foo<Bar> foo;
+ Bar *bar1, bar2;
+ func<int>();
+ foo = foo;
+ bar2 = bar2;
+ bar1 = bar1; // { dg-warning "assigned to itself" }
+ bar2.b_ = bar2.b_; // { dg-warning "assigned to itself" }
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wself-assign-non-pod-1.C b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wself-assign-non-pod-1.C
new file mode 100644
index 0000000..6f9dfb7
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wself-assign-non-pod-1.C
@@ -0,0 +1,54 @@
+// Test the self-assignemnt detection and warning.
+// { dg-do compile }
+// { dg-options "-Wself-assign -Wself-assign-non-pod" }
+
+class Foo {
+ private:
+ int a_;
+
+ public:
+ Foo() : a_(a_) {} // { dg-warning "assigned to itself" }
+
+ void setA(int a) {
+ a_ = a_; // { dg-warning "assigned to itself" }
+ }
+
+ void operator=(Foo& rhs) {
+ this->a_ = rhs.a_;
+ }
+};
+
+struct Bar {
+ int b_;
+ int c_;
+};
+
+int g = g; // { dg-warning "assigned to itself" }
+Foo foo = foo; // { dg-warning "assigned to itself" }
+
+int func()
+{
+ Bar *bar1, bar2;
+ Foo local_foo;
+ int x = x; // { dg-warning "assigned to itself" }
+ static int y = y; // { dg-warning "assigned to itself" }
+ float *f;
+ Bar bar_array[5];
+ char n;
+ int overflow;
+
+ *f = *f; // { dg-warning "assigned to itself" }
+ bar1->b_ = bar1->b_; // { dg-warning "assigned to itself" }
+ bar2.c_ = bar2.c_; // { dg-warning "assigned to itself" }
+ local_foo = local_foo; // { dg-warning "assigned to itself" }
+ foo = foo; // { dg-warning "assigned to itself" }
+ foo.setA(5);
+ bar_array[3].c_ = bar_array[3].c_; // { dg-warning "assigned to itself" }
+ bar_array[x+g].b_ = bar_array[x+g].b_; // { dg-warning "assigned to itself" }
+ y = x;
+ x = y;
+ x += 0; // should not warn
+ y -= 0; // should not warn
+ x /= x; // should not warn
+ y *= y; // should not warn
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wself-assign-non-pod-3.C b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wself-assign-non-pod-3.C
new file mode 100644
index 0000000..4c37f57
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wself-assign-non-pod-3.C
@@ -0,0 +1,35 @@
+// Test how operands_equal_p handles a NULL operand.
+// { dg-do compile }
+// { dg-options "-Wself-assign -Wself-assign-non-pod" }
+
+#include <cstdio>
+
+namespace testing {
+
+class Foo {
+ int f;
+ public:
+ Foo() { printf("Construct Foo\n"); }
+};
+
+class Bar {
+ int b;
+ public:
+ Bar(int x) { printf("Construct Bar\n"); }
+
+ void operator=(const Foo& foo) {
+ printf("Assign Foo to Bar\n");
+ }
+};
+
+}
+
+template <class T>
+void func(T t) {
+ ::testing::Bar(1) = ::testing::Foo(); // used to trigger a segfault
+ ::testing::Foo() = ::testing::Foo(); // { dg-warning "assigned to itself" }
+}
+
+main() {
+ func(2);
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wself-assign-non-pod-4.C b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wself-assign-non-pod-4.C
new file mode 100644
index 0000000..86db4e3
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wself-assign-non-pod-4.C
@@ -0,0 +1,48 @@
+// Test how self-assignment detection handles constant-folding happening
+// when parsing the RHS or the initializer.
+// { dg-do compile }
+// { dg-options "-Wself-assign -Wself-assign-non-pod" }
+
+class Foo {
+ private:
+ int a_;
+
+ public:
+ Foo() : a_(a_+0) {} // should not warn
+
+ void setA(int a) {
+ a_ = a_ + 0; // should not warn
+ }
+
+ void operator=(Foo& rhs) {
+ this->a_ = rhs.a_;
+ }
+};
+
+struct Bar {
+ int b_;
+ float c_;
+};
+
+int g = g * 1; // should not warn
+
+int func()
+{
+ Bar *bar1, bar2;
+ Foo foo;
+ int x = x - 0; // should not warn
+ static int y = y / 1; // should not warn
+ float *f;
+ Bar bar_array[5];
+
+ *f = *f / 1; // should not warn
+ bar1->b_ = bar1->b_ * 1; // should not warn
+ bar2.c_ = bar2.c_ - 0; // should not warn
+ foo.setA(5);
+ bar_array[3].c_ = bar_array[3].c_ * 1; // should not warn
+ bar_array[x+g].b_ = bar_array[x+g].b_ / 1; // should not warn
+ x += 0;
+ y -= 0;
+ foo = foo; // { dg-warning "assigned to itself" }
+ foo.operator=(foo); // should not warn
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wself-assign-non-pod-5.C b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wself-assign-non-pod-5.C
new file mode 100644
index 0000000..898ddec
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wself-assign-non-pod-5.C
@@ -0,0 +1,38 @@
+// Test -Wself-assign and -Wself-assign-non-pod.
+// { dg-do compile }
+// { dg-options "-Wself-assign -Wself-assign-non-pod" }
+
+template<typename T>
+class Foo {
+ private:
+ T a_;
+ public:
+ Foo() : a_(a_) {} // { dg-warning "assigned to itself" }
+ void Set() { a_ = a_; } // { dg-warning "assigned to itself" }
+};
+
+struct Bar {
+ int b_;
+ int c_;
+ void operator=(Bar& rhs) {
+ this->b_ = rhs.b_;
+ this->c_ = rhs.c_;
+ }
+};
+
+template <typename T>
+void func() {
+ T a;
+ a = a; // { dg-warning "assigned to itself" }
+}
+
+main()
+{
+ Foo<Bar> foo;
+ Bar *bar1, bar2;
+ func<int>();
+ foo = foo; // { dg-warning "assigned to itself" }
+ bar2 = bar2; // { dg-warning "assigned to itself" }
+ bar1 = bar1; // { dg-warning "assigned to itself" }
+ bar2.b_ = bar2.b_; // { dg-warning "assigned to itself" }
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wshadow-compatible-local-1.C b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wshadow-compatible-local-1.C
new file mode 100644
index 0000000..e251b72
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wshadow-compatible-local-1.C
@@ -0,0 +1,63 @@
+/* { dg-do compile } */
+/* { dg-options -Wshadow-compatible-local } */
+
+class Bar {
+};
+
+class ChildBar : public Bar {
+};
+
+Bar bar;
+
+class Foo {
+ private:
+ int val;
+
+ public:
+ int func1(int x) {
+ int val;
+ val = x;
+ return val;
+ }
+
+ int func2(int i) { // { dg-warning "shadowed declaration" }
+ int a = 3; // { dg-warning "shadowed declaration" }
+
+ for (int i = 0; i < 5; ++i) { // { dg-warning "shadows a parameter" }
+ for (int i = 0; i < 3; ++i) { // { dg-warning "shadows a previous local" }
+ int a = i; // { dg-warning "shadows a previous local" }
+ func1(a);
+ }
+ }
+
+ return a;
+ }
+
+ int func3() {
+ int bar;
+ float func1 = 0.3;
+ int f = 5; // { dg-warning "shadowed declaration" }
+
+ if (func1 > 1) {
+ float f = 2.0; // { dg-warning "shadows a previous local" }
+ bar = f;
+ }
+ else
+ bar = 1;
+ return bar;
+ }
+
+ void func4() {
+ Bar *bar; // { dg-bogus "shadowed declaration" }
+ ChildBar *cbp; // { dg-bogus "shadowed declaration" }
+ Bar *bp; // { dg-warning "shadowed declaration" }
+ if (val) {
+ int bar; // { dg-bogus "shadows a previous local" }
+ Bar *cbp; // { dg-bogus "shadows a previous local" }
+ ChildBar *bp; // { dg-warning "shadows a previous local" }
+ func1(bar);
+ }
+ }
+};
+
+// { dg-warning "shadowed declaration" "" { target *-*-* } 26 }
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wshadow-local-1.C b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wshadow-local-1.C
new file mode 100644
index 0000000..24a5bc2
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wshadow-local-1.C
@@ -0,0 +1,35 @@
+/* { dg-do compile } */
+/* { dg-options -Wshadow-local } */
+
+struct status
+{
+ int member;
+ void foo2 ();
+
+ inline static int foo3 (int member)
+ {
+ return member;
+ }
+};
+
+int decl1; // { dg-bogus "shadowed declaration" }
+int decl2; // { dg-bogus "shadowed declaration" }
+void foo (struct status &status,
+ double decl1) // { dg-bogus "shadows a global" }
+{
+}
+
+void foo1 (int d)
+{
+ double d; // { dg-error "shadows a parameter" }
+}
+
+void status::foo2 ()
+{
+ int member; // { dg-bogus "shadows a member" }
+ int decl2; // { dg-bogus "shadows a global" }
+ int local; // { dg-warning "shadowed declaration" }
+ {
+ int local; // { dg-warning "shadows a previous local" }
+ }
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wshadow-local-2.C b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wshadow-local-2.C
new file mode 100644
index 0000000..ac3951e
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wshadow-local-2.C
@@ -0,0 +1,63 @@
+/* { dg-do compile } */
+/* { dg-options -Wshadow-local } */
+
+class Bar {
+};
+
+class ChildBar : public Bar {
+};
+
+Bar bar; // { dg-bogus "shadowed declaration" }
+
+class Foo {
+ private:
+ int val;
+
+ public:
+ int func1(int x) {
+ int val; // { dg-bogus "shadows a member" }
+ val = x;
+ return val;
+ }
+
+ int func2(int i) { // { dg-warning "shadowed declaration" }
+ int a = 3; // { dg-warning "shadowed declaration" }
+
+ for (int i = 0; i < 5; ++i) { // { dg-warning "shadows a parameter" }
+ for (int i = 0; i < 3; ++i) { // { dg-warning "shadows a previous local" }
+ int a = i; // { dg-warning "shadows a previous local" }
+ func1(a);
+ }
+ }
+
+ return a;
+ }
+
+ int func3() {
+ int bar; // { dg-bogus "shadows a global" }
+ float func1 = 0.3; // { dg-bogus "shadows a member" }
+ int f = 5; // { dg-warning "shadowed declaration" }
+
+ if (func1 > 1) {
+ float f = 2.0; // { dg-warning "shadows a previous local" }
+ bar = f;
+ }
+ else
+ bar = 1;
+ return bar;
+ }
+
+ void func4() {
+ Bar *bar; // { dg-warning "shadowed declaration" }
+ ChildBar *cbp; // { dg-warning "shadowed declaration" }
+ Bar *bp; // { dg-warning "shadowed declaration" }
+ if (val) {
+ int bar; // { dg-warning "shadows a previous local" }
+ Bar *cbp; // { dg-warning "shadows a previous local" }
+ ChildBar *bp; // { dg-warning "shadows a previous local" }
+ func1(bar);
+ }
+ }
+};
+
+// { dg-warning "shadowed declaration" "" { target *-*-* } 26 }
diff --git a/gcc-4.9/gcc/testsuite/g++.old-deja/g++.benjamin/15309-1.C b/gcc-4.9/gcc/testsuite/g++.old-deja/g++.benjamin/15309-1.C
deleted file mode 100644
index aa5530f..0000000
--- a/gcc-4.9/gcc/testsuite/g++.old-deja/g++.benjamin/15309-1.C
+++ /dev/null
@@ -1,21 +0,0 @@
-// { dg-do assemble }
-// { dg-options "-Wnon-virtual-dtor -Weffc++" }
-// 981203 bkoz
-// g++/15309
-
-class bahamian {
-public:
- bahamian ();
- ~bahamian ();
-};
-
-class miami : public bahamian // { dg-warning "" } // WARNING -
-{
-public:
- miami ();
- ~miami ();
-};
-
-
-
-
diff --git a/gcc-4.9/gcc/testsuite/g++.old-deja/g++.benjamin/15309-2.C b/gcc-4.9/gcc/testsuite/g++.old-deja/g++.benjamin/15309-2.C
deleted file mode 100644
index 2831797..0000000
--- a/gcc-4.9/gcc/testsuite/g++.old-deja/g++.benjamin/15309-2.C
+++ /dev/null
@@ -1,10 +0,0 @@
-// { dg-do assemble }
-// { dg-options "-Wnon-virtual-dtor -Weffc++" }
-// 981203 bkoz
-// g++/15309
-
-class bermuda { // { dg-warning "" } // WARNING -
-public:
- virtual int func1(int);
- ~bermuda();
-};
diff --git a/gcc-4.9/gcc/testsuite/g++.old-deja/g++.ext/memconst.C b/gcc-4.9/gcc/testsuite/g++.old-deja/g++.ext/memconst.C
index d934763..7e86156 100644
--- a/gcc-4.9/gcc/testsuite/g++.old-deja/g++.ext/memconst.C
+++ b/gcc-4.9/gcc/testsuite/g++.old-deja/g++.ext/memconst.C
@@ -1,5 +1,5 @@
// { dg-do assemble }
-// { dg-options "" }
+// { dg-options "-pedantic -pedantic-errors" }
// From: Ove.Ewerlid@syscon.uu.se (Ove Ewerlid)
// Subject: ss-940630:cc1plus: internal error
// Date: Sat, 2 Jul 1994 05:07:20 +0200
diff --git a/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr61684.c b/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr61684.c
new file mode 100644
index 0000000..f5b53b7
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr61684.c
@@ -0,0 +1,15 @@
+/* PR tree-optimization/61684 */
+
+int a, c;
+static int *b = 0;
+short d;
+static short **e = 0;
+
+void
+foo ()
+{
+ for (; c < 1; c++)
+ ;
+ *e = &d;
+ a = d && (c && 1) & *b;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/20140425-1.c b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/20140425-1.c
new file mode 100644
index 0000000..c447ef9
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/20140425-1.c
@@ -0,0 +1,23 @@
+/* PR target/60941 */
+/* Reported by Martin Husemann <martin@netbsd.org> */
+
+extern void abort (void);
+
+static void __attribute__((noinline))
+set (unsigned long *l)
+{
+ *l = 31;
+}
+
+int main (void)
+{
+ unsigned long l;
+ int i;
+
+ set (&l);
+ i = (int) l;
+ l = (unsigned long)(2U << i);
+ if (l != 0)
+ abort ();
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr60960.c b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr60960.c
new file mode 100644
index 0000000..b4f08d4
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr60960.c
@@ -0,0 +1,38 @@
+/* PR tree-optimization/60960 */
+
+typedef unsigned char v4qi __attribute__ ((vector_size (4)));
+
+__attribute__((noinline, noclone)) v4qi
+f1 (v4qi v)
+{
+ return v / 2;
+}
+
+__attribute__((noinline, noclone)) v4qi
+f2 (v4qi v)
+{
+ return v / (v4qi) { 2, 2, 2, 2 };
+}
+
+__attribute__((noinline, noclone)) v4qi
+f3 (v4qi x, v4qi y)
+{
+ return x / y;
+}
+
+int
+main ()
+{
+ v4qi x = { 5, 5, 5, 5 };
+ v4qi y = { 2, 2, 2, 2 };
+ v4qi z = f1 (x);
+ if (__builtin_memcmp (&y, &z, sizeof (y)) != 0)
+ __builtin_abort ();
+ z = f2 (x);
+ if (__builtin_memcmp (&y, &z, sizeof (y)) != 0)
+ __builtin_abort ();
+ z = f3 (x, y);
+ if (__builtin_memcmp (&y, &z, sizeof (y)) != 0)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr61306-1.c b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr61306-1.c
new file mode 100644
index 0000000..ebc90a3
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr61306-1.c
@@ -0,0 +1,39 @@
+#ifdef __INT32_TYPE__
+typedef __INT32_TYPE__ int32_t;
+#else
+typedef int int32_t;
+#endif
+
+#ifdef __UINT32_TYPE__
+typedef __UINT32_TYPE__ uint32_t;
+#else
+typedef unsigned uint32_t;
+#endif
+
+#define __fake_const_swab32(x) ((uint32_t)( \
+ (((uint32_t)(x) & (uint32_t)0x000000ffUL) << 24) | \
+ (((uint32_t)(x) & (uint32_t)0x0000ff00UL) << 8) | \
+ (((uint32_t)(x) & (uint32_t)0x00ff0000UL) >> 8) | \
+ (( (int32_t)(x) & (int32_t)0xff000000UL) >> 24)))
+
+/* Previous version of bswap optimization failed to consider sign extension
+ and as a result would replace an expression *not* doing a bswap by a
+ bswap. */
+
+__attribute__ ((noinline, noclone)) uint32_t
+fake_bswap32 (uint32_t in)
+{
+ return __fake_const_swab32 (in);
+}
+
+int
+main(void)
+{
+ if (sizeof (int32_t) * __CHAR_BIT__ != 32)
+ return 0;
+ if (sizeof (uint32_t) * __CHAR_BIT__ != 32)
+ return 0;
+ if (fake_bswap32 (0x87654321) != 0xffffff87)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr61306-2.c b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr61306-2.c
new file mode 100644
index 0000000..886ecfd
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr61306-2.c
@@ -0,0 +1,40 @@
+#ifdef __INT16_TYPE__
+typedef __INT16_TYPE__ int16_t;
+#else
+typedef short int16_t;
+#endif
+
+#ifdef __UINT32_TYPE__
+typedef __UINT32_TYPE__ uint32_t;
+#else
+typedef unsigned uint32_t;
+#endif
+
+#define __fake_const_swab32(x) ((uint32_t)( \
+ (((uint32_t) (x) & (uint32_t)0x000000ffUL) << 24) | \
+ (((uint32_t)(int16_t)(x) & (uint32_t)0x00ffff00UL) << 8) | \
+ (((uint32_t) (x) & (uint32_t)0x00ff0000UL) >> 8) | \
+ (((uint32_t) (x) & (uint32_t)0xff000000UL) >> 24)))
+
+
+/* Previous version of bswap optimization failed to consider sign extension
+ and as a result would replace an expression *not* doing a bswap by a
+ bswap. */
+
+__attribute__ ((noinline, noclone)) uint32_t
+fake_bswap32 (uint32_t in)
+{
+ return __fake_const_swab32 (in);
+}
+
+int
+main(void)
+{
+ if (sizeof (uint32_t) * __CHAR_BIT__ != 32)
+ return 0;
+ if (sizeof (int16_t) * __CHAR_BIT__ != 16)
+ return 0;
+ if (fake_bswap32 (0x81828384) != 0xff838281)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr61306-3.c b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr61306-3.c
new file mode 100644
index 0000000..6086e27
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr61306-3.c
@@ -0,0 +1,13 @@
+short a = -1;
+int b;
+char c;
+
+int
+main ()
+{
+ c = a;
+ b = a | c;
+ if (b != -1)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr61673.c b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr61673.c
new file mode 100644
index 0000000..b3e243d
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr61673.c
@@ -0,0 +1,50 @@
+/* PR rtl-optimization/61673 */
+
+char e;
+
+__attribute__((noinline, noclone)) void
+bar (char x)
+{
+ if (x != 0x54 && x != (char) 0x87)
+ __builtin_abort ();
+}
+
+__attribute__((noinline, noclone)) void
+foo (const char *x)
+{
+ char d = x[0];
+ int c = d;
+ if ((c >= 0 && c <= 0x7f) == 0)
+ e = d;
+ bar (d);
+}
+
+__attribute__((noinline, noclone)) void
+baz (const char *x)
+{
+ char d = x[0];
+ int c = d;
+ if ((c >= 0 && c <= 0x7f) == 0)
+ e = d;
+}
+
+int
+main ()
+{
+ const char c[] = { 0x54, 0x87 };
+ e = 0x21;
+ foo (c);
+ if (e != 0x21)
+ __builtin_abort ();
+ foo (c + 1);
+ if (e != (char) 0x87)
+ __builtin_abort ();
+ e = 0x21;
+ baz (c);
+ if (e != 0x21)
+ __builtin_abort ();
+ baz (c + 1);
+ if (e != (char) 0x87)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr61725.c b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr61725.c
new file mode 100644
index 0000000..0aa6daf
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr61725.c
@@ -0,0 +1,14 @@
+/* PR tree-optimization/61725 */
+
+int
+main ()
+{
+ int x;
+ for (x = -128; x <= 128; x++)
+ {
+ int a = __builtin_ffs (x);
+ if (x == 0 && a != 0)
+ __builtin_abort ();
+ }
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/Wshadow-compatible-local-1.c b/gcc-4.9/gcc/testsuite/gcc.dg/Wshadow-compatible-local-1.c
new file mode 100644
index 0000000..cb21be9
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/Wshadow-compatible-local-1.c
@@ -0,0 +1,36 @@
+/* { dg-do compile } */
+/* { dg-options "-Wshadow-compatible-local" } */
+
+struct Bar {
+};
+
+struct Bar bar; /* { dg-bogus "shadowed declaration" } */
+
+int val; /* { dg-bogus "shadowed declaration" } */
+
+int func1(int x) { /* { dg-bogus "shadowed declaration" } */
+ int val; /* { dg-bogus "shadows a global" } */
+ val = x;
+ return val;
+}
+
+int func2(int i) {
+ int a = 3; /* { dg-warning "shadowed declaration" } */
+ int j; /* { dg-warning "shadowed declaration" } */
+
+ for (j = 0; j < i; ++j) {
+ int a = j; /* { dg-warning "shadows a previous local" } */
+ int j = a + 1; /* { dg-warning "shadows a previous local" } */
+ func1(j);
+ }
+
+ return a;
+}
+
+void func4() {
+ struct Bar bar; /* { dg-bogus "shadowed declaration" } */
+ if (val) {
+ int bar; /* { dg-bogus "shadows a previous local" } */
+ func1(bar);
+ }
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/Wshadow-local-1.c b/gcc-4.9/gcc/testsuite/gcc.dg/Wshadow-local-1.c
new file mode 100644
index 0000000..b21661e
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/Wshadow-local-1.c
@@ -0,0 +1,23 @@
+/* { dg-do compile } */
+/* { dg-options "-Wshadow-local" } */
+
+int decl1; /* should not warn */
+void foo (double decl1) /* should not warn */
+{
+}
+
+void foo2 (int d) /* { dg-warning "shadowed declaration" } */
+{
+ {
+ double d; /* { dg-warning "shadows a parameter" } */
+ }
+}
+
+void foo3 ()
+{
+ int local; /* { dg-warning "shadowed declaration" } */
+ {
+ int local; /* { dg-warning "shadows a previous local" } */
+ }
+}
+/* { dg-do compile } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/Wshadow-local-2.c b/gcc-4.9/gcc/testsuite/gcc.dg/Wshadow-local-2.c
new file mode 100644
index 0000000..9d52fac
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/Wshadow-local-2.c
@@ -0,0 +1,49 @@
+/* { dg-do compile } */
+/* { dg-options "-Wshadow-local" } */
+
+struct Bar {
+};
+
+struct Bar bar; /* { dg-bogus "shadowed declaration" } */
+
+int val; /* { dg-bogus "shadowed declaration" } */
+
+int func1(int x) { /* { dg-bogus "shadowed declaration" } */
+ int val; /* { dg-bogus "shadows a global" } */
+ val = x;
+ return val;
+}
+
+int func2(int i) {
+ int a = 3; /* { dg-warning "shadowed declaration" } */
+ int j; /* { dg-warning "shadowed declaration" } */
+
+ for (j = 0; j < i; ++j) {
+ int a = j; /* { dg-warning "shadows a previous local" } */
+ int j = a + 1; /* { dg-warning "shadows a previous local" } */
+ func1(j);
+ }
+
+ return a;
+}
+
+int func3() {
+ int bar; /* { dg-bogus "shadows a global" } */
+ float func1 = 0.3; /* { dg-bogus "shadows a global" } */
+
+ if (func1 > 1)
+ bar = 2;
+ else
+ bar = 1;
+ return bar;
+}
+
+void func4() {
+ struct Bar bar; /* { dg-warning "shadowed declaration" } */
+ if (val) {
+ int bar; /* { dg-warning "shadows a previous local" } */
+ func1(bar);
+ }
+}
+
+/* { dg-bogus "shadows a global" "" { target *-*-* } 42 } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/Wshadow-local-3.c b/gcc-4.9/gcc/testsuite/gcc.dg/Wshadow-local-3.c
new file mode 100644
index 0000000..429df37
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/Wshadow-local-3.c
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+/* { dg-options "-Wno-shadow" } */
+
+void func() {
+ int i;
+ {
+ int i; /* should not warn */
+ }
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/autopar/outer-1.c b/gcc-4.9/gcc/testsuite/gcc.dg/autopar/outer-1.c
index a9d2185..2e4faf4 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/autopar/outer-1.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/autopar/outer-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
+/* { dg-options "-O2 -fno-tree-loop-vectorize -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
void abort (void);
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/autopar/outer-3.c b/gcc-4.9/gcc/testsuite/gcc.dg/autopar/outer-3.c
index c6e0adb..755b9da 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/autopar/outer-3.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/autopar/outer-3.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
+/* { dg-options "-O2 -fno-tree-loop-vectorize -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
void abort (void);
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/autopar/outer-4.c b/gcc-4.9/gcc/testsuite/gcc.dg/autopar/outer-4.c
index d60023f..0feac68 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/autopar/outer-4.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/autopar/outer-4.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
+/* { dg-options "-O2 -fno-tree-loop-vectorize -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
void abort (void);
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/autopar/outer-5.c b/gcc-4.9/gcc/testsuite/gcc.dg/autopar/outer-5.c
index fa80293..f6cd970 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/autopar/outer-5.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/autopar/outer-5.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
+/* { dg-options "-O2 -fno-tree-loop-vectorize -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
void abort (void);
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/autopar/parallelization-1.c b/gcc-4.9/gcc/testsuite/gcc.dg/autopar/parallelization-1.c
index de2a0f3..fe77a92 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/autopar/parallelization-1.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/autopar/parallelization-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
+/* { dg-options "-O2 -fno-tree-loop-vectorize -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
void abort (void);
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-1.c b/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-1.c
index 8018a55..9bb1b57 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-1.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
+/* { dg-options "-O2 -fno-tree-loop-vectorize -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
#include <stdarg.h>
#include <stdlib.h>
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-1char.c b/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-1char.c
index 76645c8..8322020 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-1char.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-1char.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
+/* { dg-options "-O2 -fno-tree-loop-vectorize -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
#include <stdarg.h>
#include <stdlib.h>
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-1short.c b/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-1short.c
index 526f170..5a2efa8 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-1short.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-1short.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
+/* { dg-options "-O2 -fno-tree-loop-vectorize -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
#include <stdarg.h>
#include <stdlib.h>
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-2.c b/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-2.c
index e0abb26..8c9fb03 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-2.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-2.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
+/* { dg-options "-O2 -fno-tree-loop-vectorize -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
#include <stdarg.h>
#include <stdlib.h>
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-2char.c b/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-2char.c
index ada1275..cff5425 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-2char.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-2char.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
+/* { dg-options "-O2 -fno-tree-loop-vectorize -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
#include <stdarg.h>
#include <stdlib.h>
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-2short.c b/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-2short.c
index 3363c68..5ee5f01 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-2short.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-2short.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
+/* { dg-options "-O2 -fno-tree-loop-vectorize -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
#include <stdarg.h>
#include <stdlib.h>
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-3.c b/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-3.c
index 6bc2047..c9ec27b 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-3.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-3.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
+/* { dg-options "-O2 -fno-tree-loop-vectorize -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
#include <stdarg.h>
#include <stdlib.h>
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-6.c b/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-6.c
index fface8f..5d495e3 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-6.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-6.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
+/* { dg-options "-O2 -fno-tree-loop-vectorize -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
#include <stdarg.h>
#include <stdlib.h>
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-7.c b/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-7.c
index f66069e..72a36ad 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-7.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-7.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
+/* { dg-options "-O2 -fno-tree-loop-vectorize -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
#include <stdlib.h>
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-8.c b/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-8.c
index 4a416df..662ff44 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-8.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-8.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
+/* { dg-options "-O2 -fno-tree-loop-vectorize -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
#include <stdlib.h>
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-9.c b/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-9.c
index 2c1677c..c738f23 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-9.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/autopar/reduc-9.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
+/* { dg-options "-O2 -fno-tree-loop-vectorize -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */
#include <stdlib.h>
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/debug/dwarf2/mlt1.c b/gcc-4.9/gcc/testsuite/gcc.dg/debug/dwarf2/mlt1.c
new file mode 100644
index 0000000..b916e69
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/debug/dwarf2/mlt1.c
@@ -0,0 +1,32 @@
+/* Test that -g1 includes line tables and inlined subroutine entries,
+ and excludes types and variables. */
+/* Origin: Cary Coutant <ccoutant@google.com> */
+/* { dg-do compile } */
+/* { dg-options "-O2 -gdwarf-2 -dA -g1" } */
+/* { dg-final { scan-assembler "DW_AT_stmt_list" } } */
+/* { dg-final { scan-assembler "DW_TAG_subprogram" } } */
+/* { dg-final { scan-assembler "DW_TAG_inlined_subroutine" } } */
+/* { dg-final { scan-assembler-not "DW_TAG_variable" } } */
+/* { dg-final { scan-assembler-not "DW_TAG_formal_parameter" } } */
+/* { dg-final { scan-assembler-not "DW_TAG_base_type" } } */
+
+static inline __attribute__((always_inline)) int
+a(int i, int j)
+{
+ return (i << 5) + j;
+}
+
+int
+b(int i, int j)
+{
+ return (i >> 5) + (j << 27);
+}
+
+int
+c(int i, int j)
+{
+ int r = a(i, j);
+ r = b(r, i);
+ r = b(r, j);
+ return r;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/debug/dwarf2/mlt2.c b/gcc-4.9/gcc/testsuite/gcc.dg/debug/dwarf2/mlt2.c
new file mode 100644
index 0000000..2fd5b0f
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/debug/dwarf2/mlt2.c
@@ -0,0 +1,31 @@
+/* Test that -g overrides -g1. */
+/* Origin: Cary Coutant <ccoutant@google.com> */
+/* { dg-do compile } */
+/* { dg-options "-O2 -gdwarf-2 -dA -g1 -g" } */
+/* { dg-final { scan-assembler "DW_AT_stmt_list" } } */
+/* { dg-final { scan-assembler "DW_TAG_subprogram" } } */
+/* { dg-final { scan-assembler "DW_TAG_inlined_subroutine" } } */
+/* { dg-final { scan-assembler "DW_TAG_variable" } } */
+/* { dg-final { scan-assembler "DW_TAG_formal_parameter" } } */
+/* { dg-final { scan-assembler "DW_TAG_base_type" } } */
+
+static inline __attribute__((always_inline)) int
+a(int i, int j)
+{
+ return (i << 5) + j;
+}
+
+int
+b(int i, int j)
+{
+ return (i >> 5) + (j << 27);
+}
+
+int
+c(int i, int j)
+{
+ int r = a(i, j);
+ r = b(r, i);
+ r = b(r, j);
+ return r;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/fstack-protector-strong.c b/gcc-4.9/gcc/testsuite/gcc.dg/fstack-protector-strong.c
index 7c232ff..5a5cf98 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/fstack-protector-strong.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/fstack-protector-strong.c
@@ -1,9 +1,10 @@
/* Test that stack protection is done on chosen functions. */
-/* { dg-do compile { target i?86-*-* x86_64-*-* rs6000-*-* s390x-*-* } } */
+/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
/* { dg-options "-O2 -fstack-protector-strong" } */
#include<string.h>
+#include<stdlib.h>
extern int g0;
extern int* pg0;
@@ -109,7 +110,7 @@ foo8 ()
int
foo9 ()
{
- char* p = __builtin_alloca (100);
+ char* p = alloca (100);
return goo ((int *)(p + 50));
}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/graphite/pr55022.c b/gcc-4.9/gcc/testsuite/gcc.dg/graphite/pr55022.c
new file mode 100644
index 0000000..c631c0e
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/graphite/pr55022.c
@@ -0,0 +1,27 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -fgraphite-identity" } */
+
+extern void abort (void);
+
+void __attribute__((noinline,noclone))
+f(int *limit, int minLen, int maxLen)
+{
+ int i;
+
+ for (i = minLen; i <= maxLen; i++) {
+ limit[i] = i;
+ }
+}
+
+int main()
+{
+ int limit[256], i;
+ f (limit, 0, 255);
+ for (i = 0; i < 256; ++i)
+ {
+ if (limit[i] != i)
+ abort ();
+ __asm__ volatile ("" : : : "memory");
+ }
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/graphite/pr59817-1.c b/gcc-4.9/gcc/testsuite/gcc.dg/graphite/pr59817-1.c
new file mode 100644
index 0000000..175fa16
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/graphite/pr59817-1.c
@@ -0,0 +1,16 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -floop-interchange" } */
+
+int kd;
+
+void
+n2(void)
+{
+ static int so;
+ static short int i5;
+ int wj;
+ int *il;
+ int *nk = &so;
+ for (wj = 0; wj < 2; ++wj)
+ *nk = ((i5 += *il) || kd );
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/graphite/pr59817-2.c b/gcc-4.9/gcc/testsuite/gcc.dg/graphite/pr59817-2.c
new file mode 100644
index 0000000..1395007
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/graphite/pr59817-2.c
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -floop-interchange" } */
+
+void
+xl(void)
+{
+ static int j3;
+ for (j3 = 0; j3 < 1; ++j3) {
+ static int f2;
+ static int w7;
+ short int b5;
+ int ok;
+ f2 = (b5 += ok) ? (w7 = 0): (w7 ? 0 : (f2 = ok));
+ }
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/graphite/pr60979.c b/gcc-4.9/gcc/testsuite/gcc.dg/graphite/pr60979.c
new file mode 100644
index 0000000..0004a51
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/graphite/pr60979.c
@@ -0,0 +1,37 @@
+/* { dg-options "-O -fgraphite-identity" } */
+
+#include <setjmp.h>
+
+struct x;
+
+typedef struct x **(*a)(struct x *);
+
+struct x {
+ union {
+ struct {
+ union {
+ a *i;
+ } l;
+ int s;
+ } y;
+ } e;
+};
+
+jmp_buf c;
+
+void
+b(struct x *r)
+{
+ int f;
+ static int w = 0;
+ volatile jmp_buf m;
+ f = (*(((struct x *)r)->e.y.l.i[2]((struct x *)r)))->e.y.s;
+ if (w++ != 0)
+ __builtin_memcpy((char *)m, (const char *)c, sizeof(jmp_buf));
+ if (setjmp (c) == 0) {
+ int z;
+ for (z = 0; z < 0; ++z)
+ ;
+ }
+ d((const char *)m);
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/guality/guality.exp b/gcc-4.9/gcc/testsuite/gcc.dg/guality/guality.exp
index 5e714dd..d8e641f 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/guality/guality.exp
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/guality/guality.exp
@@ -1,5 +1,8 @@
# This harness is for tests that should be run at all optimisation levels.
+# Disable everywhere. These tests are very flaky.
+return
+
load_lib gcc-dg.exp
load_lib gcc-gdb-test.exp
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr60720_0.c b/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr60720_0.c
new file mode 100644
index 0000000..79cef5d
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr60720_0.c
@@ -0,0 +1,15 @@
+/* { dg-lto-do run } */
+/* { dg-extra-ld-options { -w } } */
+
+/* ??? lto.exp does not allow to scan for
+ :1:12: warning: type of 'x' does not match original declaration
+ extern int x[];
+ ^
+ :1:5: note: previously declared here
+ int x;
+ ^ */
+
+extern int x[];
+int *foo[] = { &x[0] };
+
+int main() { return *foo[0]; }
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr60720_1.c b/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr60720_1.c
new file mode 100644
index 0000000..6d1a0d4
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr60720_1.c
@@ -0,0 +1 @@
+int x;
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr60911_0.c b/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr60911_0.c
new file mode 100644
index 0000000..e4820a2
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr60911_0.c
@@ -0,0 +1,21 @@
+// { dg-lto-do run }
+// { dg-lto-options { { -O2 -flto -fipa-pta } } }
+
+int __attribute__ ((__noinline__)) f (unsigned *p, int *x)
+{
+ int y = *p++ & 0xfff;
+ *x++ = y;
+ *x = *p;
+ return y;
+}
+
+int
+main ()
+{
+ unsigned u[2] = { 0x3aad, 0x5ad1 };
+ int x[2] = { 17689, 23456 };
+
+ if (f (u, x) != 0xaad || x[0] != 0xaad || x[1] != 0x5ad1)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr61526_0.c b/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr61526_0.c
new file mode 100644
index 0000000..6324c8c
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr61526_0.c
@@ -0,0 +1,6 @@
+/* { dg-lto-do link } */
+/* { dg-lto-options { { -fPIC -flto -flto-partition=1to1 } } } */
+/* { dg-extra-ld-options { -shared } } */
+
+static void *master;
+void *foo () { return master; }
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr61526_1.c b/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr61526_1.c
new file mode 100644
index 0000000..bb2893b
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr61526_1.c
@@ -0,0 +1,2 @@
+extern void *master;
+void *bar () { return master; }
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/plugin/selfassign.c b/gcc-4.9/gcc/testsuite/gcc.dg/plugin/selfassign.c
index 041f25d..9a0c620 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/plugin/selfassign.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/plugin/selfassign.c
@@ -211,7 +211,7 @@ compare_and_warn (gimple stmt, tree lhs, tree rhs)
/* Check and warn if STMT is a self-assign statement. */
static void
-warn_self_assign (gimple stmt)
+check_self_assign (gimple stmt)
{
tree rhs, lhs;
@@ -264,7 +264,7 @@ execute_warn_self_assign (void)
FOR_EACH_BB_FN (bb, cfun)
{
for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
- warn_self_assign (gsi_stmt (gsi));
+ check_self_assign (gsi_stmt (gsi));
}
return 0;
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/pr47793.c b/gcc-4.9/gcc/testsuite/gcc.dg/pr47793.c
index 0ee1aae..da6b6ea 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/pr47793.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/pr47793.c
@@ -1,7 +1,6 @@
/* Bug pr47793: Allow relative paths in profile-generate. */
/* { dg-do run } */
/* { dg-options "-O -fprofile-generate=./" } */
-/* { dg-require-profiling "-fprofile-generate" } */
/* { dg-final { scan-file pr47793.gcda "."} } */
int
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/pr53265.c b/gcc-4.9/gcc/testsuite/gcc.dg/pr53265.c
index e1ca6f5..c5ed476 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/pr53265.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/pr53265.c
@@ -1,6 +1,6 @@
/* PR tree-optimization/53265 */
/* { dg-do compile } */
-/* { dg-options "-O2 -Wall" } */
+/* { dg-options "-O2 -fno-tree-loop-vectorize -Wall" } */
/* { dg-require-effective-target size32plus } */
void bar (void *);
@@ -155,3 +155,5 @@ fn12 (void)
fn11 (1);
fn11 (1);
}
+
+/* { dg-prune-output "array subscript is above array bounds" } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/pr57233.c b/gcc-4.9/gcc/testsuite/gcc.dg/pr57233.c
new file mode 100644
index 0000000..58c0534
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/pr57233.c
@@ -0,0 +1,171 @@
+/* PR tree-optimization/57233 */
+/* { dg-do run { target { ilp32 || lp64 } } } */
+/* { dg-options "-O2" } */
+
+typedef unsigned V4 __attribute__((vector_size(4 * sizeof (int))));
+typedef unsigned V8 __attribute__((vector_size(8 * sizeof (int))));
+typedef unsigned V16 __attribute__((vector_size(16 * sizeof (int))));
+V4 a, b, g;
+V8 c, d, h;
+V16 e, f, j;
+
+__attribute__((noinline)) void
+f1 (void)
+{
+ a = (a << 2) | (a >> 30);
+}
+
+__attribute__((noinline)) void
+f2 (void)
+{
+ a = (a << 30) | (a >> 2);
+}
+
+__attribute__((noinline)) void
+f3 (void)
+{
+ a = (a << b) | (a >> (32 - b));
+}
+
+__attribute__((noinline, noclone)) void
+f4 (int x)
+{
+ a = (a << x) | (a >> (32 - x));
+}
+
+__attribute__((noinline)) void
+f5 (void)
+{
+ c = (c << 2) | (c >> 30);
+}
+
+__attribute__((noinline)) void
+f6 (void)
+{
+ c = (c << 30) | (c >> 2);
+}
+
+__attribute__((noinline)) void
+f7 (void)
+{
+ c = (c << d) | (c >> (32 - d));
+}
+
+__attribute__((noinline, noclone)) void
+f8 (int x)
+{
+ c = (c << x) | (c >> (32 - x));
+}
+
+__attribute__((noinline)) void
+f9 (void)
+{
+ e = (e << 2) | (e >> 30);
+}
+
+__attribute__((noinline)) void
+f10 (void)
+{
+ e = (e << 30) | (e >> 2);
+}
+
+__attribute__((noinline)) void
+f11 (void)
+{
+ e = (e << f) | (e >> (32 - f));
+}
+
+__attribute__((noinline, noclone)) void
+f12 (int x)
+{
+ e = (e << x) | (e >> (32 - x));
+}
+
+unsigned
+r (void)
+{
+ static unsigned x = 0xdeadbeefU;
+ static unsigned y = 0x12347654U;
+ static unsigned z = 0x1a2b3c4dU;
+ static unsigned w = 0x87654321U;
+ unsigned t = x ^ (x << 11);
+ x = y;
+ y = z;
+ z = w;
+ w = w ^ (w >> 19) ^ t ^ (t >> 8);
+ return w;
+}
+
+void
+init (unsigned int *p, int count, int mod)
+{
+ int i;
+ for (i = 0; i < count; i++)
+ {
+ unsigned int v = r ();
+ if (mod)
+ v = (v % 31) + 1;
+ p[i] = v;
+ }
+}
+
+void
+check (unsigned int *p, unsigned int *q, int count, unsigned int *s, int ss)
+{
+ int i;
+ for (i = 0; i < count; i++)
+ {
+ if (s)
+ ss = s[i];
+ if (p[i] != ((q[i] << ss) | (q[i] >> (32 - ss))))
+ __builtin_abort ();
+ }
+}
+
+int
+main ()
+{
+ init ((unsigned int *) &a, 4, 0);
+ init ((unsigned int *) &b, 4, 1);
+ init ((unsigned int *) &c, 8, 0);
+ init ((unsigned int *) &d, 8, 1);
+ init ((unsigned int *) &e, 16, 0);
+ init ((unsigned int *) &f, 16, 1);
+ g = a;
+ h = c;
+ j = e;
+ f1 ();
+ f5 ();
+ f9 ();
+ check ((unsigned int *) &a, (unsigned int *) &g, 4, 0, 2);
+ check ((unsigned int *) &c, (unsigned int *) &h, 8, 0, 2);
+ check ((unsigned int *) &e, (unsigned int *) &j, 16, 0, 2);
+ g = a;
+ h = c;
+ j = e;
+ f2 ();
+ f6 ();
+ f10 ();
+ check ((unsigned int *) &a, (unsigned int *) &g, 4, 0, 30);
+ check ((unsigned int *) &c, (unsigned int *) &h, 8, 0, 30);
+ check ((unsigned int *) &e, (unsigned int *) &j, 16, 0, 30);
+ g = a;
+ h = c;
+ j = e;
+ f3 ();
+ f7 ();
+ f11 ();
+ check ((unsigned int *) &a, (unsigned int *) &g, 4, (unsigned int *) &b, 0);
+ check ((unsigned int *) &c, (unsigned int *) &h, 8, (unsigned int *) &d, 0);
+ check ((unsigned int *) &e, (unsigned int *) &j, 16, (unsigned int *) &f, 0);
+ g = a;
+ h = c;
+ j = e;
+ f4 (5);
+ f8 (5);
+ f12 (5);
+ check ((unsigned int *) &a, (unsigned int *) &g, 4, 0, 5);
+ check ((unsigned int *) &c, (unsigned int *) &h, 8, 0, 5);
+ check ((unsigned int *) &e, (unsigned int *) &j, 16, 0, 5);
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/pr60844.c b/gcc-4.9/gcc/testsuite/gcc.dg/pr60844.c
new file mode 100644
index 0000000..16ed243
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/pr60844.c
@@ -0,0 +1,16 @@
+/* PR tree-optimization/60844 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -g" } */
+/* { dg-additional-options "-mtune=atom" { target { i?86-*-* x86_64-*-* } } } */
+
+void
+foo (int *x, int y, int z)
+{
+ int b, c = x[0], d = x[1];
+ for (b = 0; b < 1; b++)
+ {
+ int e = (y ? 1 : 0) | (d ? 2 : 0) | (z ? 1 : 0);
+ e |= (c ? 2 : 0) | ((1 >> b) ? 1 : 0);
+ x[2 + b] = e;
+ }
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/pr60866.c b/gcc-4.9/gcc/testsuite/gcc.dg/pr60866.c
new file mode 100644
index 0000000..020878d
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/pr60866.c
@@ -0,0 +1,18 @@
+/* { dg-do compile { target powerpc*-*-* ia64-*-* x86_64-*-* } } */
+/* { dg-options "-O -fselective-scheduling -fno-if-conversion -fschedule-insns" } */
+
+int n;
+
+void
+foo (int w, int **dnroot, int **dn)
+{
+ int *child;
+ int *xchild = xchild;
+ for (; w < n; w++)
+ if (!dnroot)
+ {
+ dnroot = dn;
+ for (child = *dn; child; child = xchild)
+ ;
+ }
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/pr61045.c b/gcc-4.9/gcc/testsuite/gcc.dg/pr61045.c
new file mode 100644
index 0000000..1808cdc
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/pr61045.c
@@ -0,0 +1,12 @@
+/* { dg-do run } */
+/* { dg-options "-fstrict-overflow" } */
+
+int main ()
+{
+ int a = 0;
+ int b = __INT_MAX__;
+ int t = (a - 2) > (b - 1);
+ if (t != 0)
+ __builtin_abort();
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/pr61053.c b/gcc-4.9/gcc/testsuite/gcc.dg/pr61053.c
new file mode 100644
index 0000000..4fd5319
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/pr61053.c
@@ -0,0 +1,75 @@
+/* PR c/61053 */
+/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
+/* { dg-options "-std=c11 -pedantic-errors" } */
+
+_Alignas (char) char cc;
+_Alignas (short int) char cs;
+_Alignas (int) char ci;
+_Alignas (long int) char cl;
+_Alignas (long long int) char cll;
+_Alignas (float) char cf;
+_Alignas (double) char cd;
+_Alignas (long double) char cld;
+
+_Alignas (char) short int sc; /* { dg-error "cannot reduce alignment" } */
+_Alignas (short int) short int ss;
+_Alignas (int) short int si;
+_Alignas (long int) short int sl;
+_Alignas (long long int) short int sll;
+_Alignas (float) short int sf;
+_Alignas (double) short int sd;
+_Alignas (long double) short int sld;
+
+_Alignas (char) int ic; /* { dg-error "cannot reduce alignment" } */
+_Alignas (short int) int is; /* { dg-error "cannot reduce alignment" } */
+_Alignas (int) int ii;
+_Alignas (long int) int il;
+_Alignas (long long int) int ill;
+_Alignas (float) int if_;
+_Alignas (double) int id;
+_Alignas (long double) int ild;
+
+_Alignas (char) long int lic; /* { dg-error "cannot reduce alignment" } */
+_Alignas (short int) long int lis; /* { dg-error "cannot reduce alignment" } */
+_Alignas (int) long int lii; /* { dg-error "cannot reduce alignment" "" { target { ! { ia32 } } } } */
+_Alignas (long int) long int lil;
+_Alignas (long long int) long int lill;
+_Alignas (float) long int lif; /* { dg-error "cannot reduce alignment" "" { target { ! { ia32 } } } } */
+_Alignas (double) long int lid;
+_Alignas (long double) long int lild;
+
+_Alignas (char) long long int llic; /* { dg-error "cannot reduce alignment" } */
+_Alignas (short int) long long int llis; /* { dg-error "cannot reduce alignment" } */
+_Alignas (int) long long int llii; /* { dg-error "cannot reduce alignment" "" { target { ! { ia32 } } } } */
+_Alignas (long int) long long int llil;
+_Alignas (long long int) long long int llill;
+_Alignas (float) long long int llif; /* { dg-error "cannot reduce alignment" "" { target { ! { ia32 } } } } */
+_Alignas (double) long long int llid;
+_Alignas (long double) long long int llild;
+
+_Alignas (char) float fc; /* { dg-error "cannot reduce alignment" } */
+_Alignas (short int) float fs; /* { dg-error "cannot reduce alignment" } */
+_Alignas (int) float fi;
+_Alignas (long int) float fl;
+_Alignas (long long int) float fll;
+_Alignas (float) float ff;
+_Alignas (double) float fd;
+_Alignas (long double) float fld;
+
+_Alignas (char) double dc; /* { dg-error "cannot reduce alignment" } */
+_Alignas (short int) double ds; /* { dg-error "cannot reduce alignment" } */
+_Alignas (int) double di; /* { dg-error "cannot reduce alignment" "" { target { ! { ia32 } } } } */
+_Alignas (long int) double dl;
+_Alignas (long long int) double dll;
+_Alignas (float) double df; /* { dg-error "cannot reduce alignment" "" { target { ! { ia32 } } } } */
+_Alignas (double) double dd;
+_Alignas (long double) double dld;
+
+_Alignas (char) long double ldc; /* { dg-error "cannot reduce alignment" } */
+_Alignas (short int) long double lds; /* { dg-error "cannot reduce alignment" } */
+_Alignas (int) long double ldi; /* { dg-error "cannot reduce alignment" "" { target { ! { ia32 } } } } */
+_Alignas (long int) long double ldl; /* { dg-error "cannot reduce alignment" "" { target { ! { ia32 } } } } */
+_Alignas (long long int) long double ldll; /* { dg-error "cannot reduce alignment" "" { target { ! { ia32 } } } } */
+_Alignas (float) long double ldf; /* { dg-error "cannot reduce alignment" "" { target { ! { ia32 } } } } */
+_Alignas (double) long double ldd; /* { dg-error "cannot reduce alignment" "" { target { ! { ia32 } } } } */
+_Alignas (long double) long double ldld;
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/pr61060.c b/gcc-4.9/gcc/testsuite/gcc.dg/pr61060.c
new file mode 100644
index 0000000..d2a1365
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/pr61060.c
@@ -0,0 +1,19 @@
+/* PR target/61060 */
+/* { dg-do compile } */
+/* { dg-options "-O0 -ftree-ter" } */
+
+typedef __SIZE_TYPE__ size_t;
+
+extern inline __attribute__ ((gnu_inline, always_inline, artificial))
+void *memset (void *dest, int ch, size_t len)
+{
+ return __builtin_memset (dest, ch, len);
+}
+
+char buf[10];
+
+void
+foo (void)
+{
+ memset (buf, sizeof (buf), 0);
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/pr61158.c b/gcc-4.9/gcc/testsuite/gcc.dg/pr61158.c
new file mode 100644
index 0000000..d0ba7f3
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/pr61158.c
@@ -0,0 +1,12 @@
+/* PR tree-optimization/61158 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-original" } */
+
+unsigned long long
+foo (unsigned int x)
+{
+ return ((unsigned long long) x & 0x00ff000000000000ULL) >> 40;
+}
+
+/* { dg-final { scan-tree-dump "return 0;" "original" { target { ilp32 || lp64 } } } } */
+/* { dg-final { cleanup-tree-dump "original" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/pr61583.c b/gcc-4.9/gcc/testsuite/gcc.dg/pr61583.c
new file mode 100644
index 0000000..8424293
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/pr61583.c
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fcompare-debug" } */
+
+void
+f1 (int n, int b)
+{
+ extern void f2 (int);
+ int j;
+
+ if (b)
+ n = 1;
+
+ if (n < 1)
+ __builtin_unreachable ();
+
+ for (j = 0; j < n; j++)
+ f2 (j);
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/record-compilation-info-in-elf-1.c b/gcc-4.9/gcc/testsuite/gcc.dg/record-compilation-info-in-elf-1.c
new file mode 100644
index 0000000..881281f
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/record-compilation-info-in-elf-1.c
@@ -0,0 +1,16 @@
+/* { dg-do compile} */
+/* { dg-options "-frecord-compilation-info-in-elf -Dtest -dA" } */
+
+void foobar(int);
+
+void
+foo (void)
+{
+ int i;
+ for (i = 0; i < 100; i++)
+ {
+ foobar(i);
+ }
+}
+
+/* { dg-final { scan-assembler-times "Dtest" 1 } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr56965-1.c b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr56965-1.c
new file mode 100644
index 0000000..2512db3
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr56965-1.c
@@ -0,0 +1,32 @@
+/* { dg-do run } */
+/* { dg-options "-fschedule-insns" { target scheduling } } */
+
+extern void abort (void);
+
+struct S {
+ int i;
+ int j;
+};
+
+struct U {
+ struct S s;
+} __attribute__((may_alias));
+
+int __attribute__((noinline,noclone))
+foo (struct U *p, struct U *q)
+{
+ int i;
+ q->s.j = 1;
+ i = p->s.i;
+ return i;
+}
+
+int main()
+{
+ int a[3];
+ int *p = a;
+ p[1] = 0;
+ if (foo ((struct U *)(p + 1), (struct U *)p) != 1)
+ abort ();
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr56965-2.c b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr56965-2.c
new file mode 100644
index 0000000..04f5591
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr56965-2.c
@@ -0,0 +1,34 @@
+extern void abort (void);
+
+struct S { int i; int j; };
+struct X { struct S s; int k; };
+struct Y { int k; struct S s; };
+union U { struct X x; struct Y y; } __attribute__((may_alias));
+
+int __attribute__((noinline))
+foo (union U *p, union U *q)
+{
+ p->x.s.j = 1;
+ q->y.s.i = 0;
+ return p->x.s.j;
+}
+
+struct R { int i; int j; } __attribute__((may_alias));
+
+int __attribute__((noinline))
+bar (struct R *p, struct R *q)
+{
+ p->i = 1;
+ q->j = 0;
+ return p->i;
+}
+
+int main()
+{
+ int a[3];
+ if (foo ((union U *)&a[0], (union U *)&a[0]) != 0)
+ abort ();
+ if (bar ((struct R *)&a[1], (struct R *)&a[0]) != 0)
+ abort ();
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr57864.c b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr57864.c
new file mode 100644
index 0000000..93962c2
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr57864.c
@@ -0,0 +1,37 @@
+/* { dg-do compile } */
+
+union U {
+ double val;
+ union U *ptr;
+};
+
+union U *d;
+double a;
+int b;
+int c;
+
+static void fn1(union U *p1, int p2, _Bool p3)
+{
+ union U *e;
+
+ if (p2 == 0)
+ a = ((union U*)((unsigned long)p1 & ~1))->val;
+
+ if (b) {
+ e = p1;
+ } else if (c) {
+ e = ((union U*)((unsigned long)p1 & ~1))->ptr;
+ d = e;
+ } else {
+ e = 0;
+ d = ((union U*)0)->ptr;
+ }
+
+ fn1 (e, 0, 0);
+ fn1 (0, 0, p3);
+}
+
+void fn2 (void)
+{
+ fn1 (0, 0, 0);
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr60891.c b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr60891.c
new file mode 100644
index 0000000..c8fec87
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr60891.c
@@ -0,0 +1,23 @@
+/* { dg-do compile } */
+/* { dg-additional-options "-fno-tree-ch -fno-tree-cselim -fno-tree-dominator-opts" } */
+
+int a, b, c, d, e, f;
+
+void foo (int x)
+{
+ for (;;)
+ {
+ int g = c;
+ if (x)
+ {
+ if (e)
+ while (a)
+ --f;
+ }
+ for (b = 5; b; b--)
+ {
+ }
+ if (!g)
+ x = 0;
+ }
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr60903.c b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr60903.c
new file mode 100644
index 0000000..5d93ae3
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr60903.c
@@ -0,0 +1,22 @@
+/* { dg-do compile } */
+
+extern int a, b, k, q;
+
+void
+foo ()
+{
+ if (a)
+ {
+ while (q)
+ {
+ lbl:
+ if (a)
+ {
+ a = 0;
+ goto lbl;
+ }
+ }
+ b = k;
+ }
+ goto lbl;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr60930.c b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr60930.c
new file mode 100644
index 0000000..5e35f19
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr60930.c
@@ -0,0 +1,22 @@
+/* { dg-do run } */
+
+int x = 1;
+
+__attribute__((noinline, noclone)) void
+foo (unsigned long long t)
+{
+ asm volatile ("" : : "r" (&t));
+ if (t == 1)
+ __builtin_abort ();
+}
+
+int
+main ()
+{
+#if __SIZEOF_LONG_LONG__ >= 8
+ unsigned long long t = 0xffffffffffffffffULL * (0xffffffffUL * x);
+ if (t != 0xffffffff00000001ULL)
+ foo (t);;
+#endif
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr61010.c b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr61010.c
new file mode 100644
index 0000000..ed56539
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr61010.c
@@ -0,0 +1,8 @@
+/* { dg-do compile } */
+
+int main (void)
+{
+ int a = 0;
+ unsigned b = (a * 64 & 192) | 63U;
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr61383-1.c b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr61383-1.c
new file mode 100644
index 0000000..d9a0a0b
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr61383-1.c
@@ -0,0 +1,35 @@
+/* { dg-do run } */
+
+int a, b = 1, c, d, e, f, g;
+
+int
+fn1 ()
+{
+ int h;
+ for (;;)
+ {
+ g = b;
+ g = g ? 0 : 1 % g;
+ e = a + 1;
+ for (; d < 1; d = e)
+ {
+ if (f == 0)
+ h = 0;
+ else
+ h = 1 % f;
+ if (f < 1)
+ c = 0;
+ else if (h)
+ break;
+ }
+ if (b)
+ return 0;
+ }
+}
+
+int
+main ()
+{
+ fn1 ();
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr61452.c b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr61452.c
new file mode 100644
index 0000000..a62de30
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr61452.c
@@ -0,0 +1,31 @@
+/* { dg-do run } */
+
+int a, b;
+short c, d;
+char e, f;
+
+int
+fn1 (int p1, char p2)
+{
+ return p1 || p2 ? 0 : p2;
+}
+
+void
+fn2 ()
+{
+ for (; a;)
+ {
+ int g;
+ g = c = e;
+ for (; a;)
+ b = fn1 (g = d = e, g);
+ f = g;
+ }
+}
+
+int
+main ()
+{
+ fn2 ();
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr61681.c b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr61681.c
new file mode 100644
index 0000000..226de0c
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr61681.c
@@ -0,0 +1,37 @@
+/* { dg-do run } */
+
+extern void abort (void);
+
+int a = 1, *e = &a, **f = &e, *l, *p, j;
+static int b;
+long d;
+short g;
+
+void
+fn1 (int *p)
+{
+ int m;
+ if (!(*p & j))
+ {
+ int *n = &m;
+ for (d = 6; d; d--)
+ {
+ for (g = 0; g < 1; g++)
+ {
+ n = l = *f;
+ b = *p;
+ }
+ *n = 0;
+ }
+ }
+}
+
+int
+main ()
+{
+ p = *f;
+ fn1 (p);
+ if (b != 0)
+ abort ();
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indircall-1a.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indircall-1a.c
index a94195c..520cad0 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indircall-1a.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indircall-1a.c
@@ -1,6 +1,7 @@
/* It seems there is no way to avoid the other source of mulitple
source testcase from being compiled independently. Just avoid
error. */
+/* { dg-require-effective-target lto } */
#ifdef DOJOB
extern int a;
void abort (void);
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/inliner-1.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/inliner-1.c
index e44887b..99398a6 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/inliner-1.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/inliner-1.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -fdump-tree-optimized" } */
+/* { dg-options "-O2 --param inline-hot-caller=0 -fdump-tree-optimized" } */
int a;
int b[100];
void abort (void);
@@ -34,7 +34,7 @@ main ()
return 0;
}
-/* cold function should be inlined, while hot function should not.
+/* cold function should be not inlined, while hot function should be.
Look for "cold_function () [tail call];" call statement not for the
declaration or other appearances of the string in dump. */
/* { dg-final-use { scan-tree-dump "cold_function ..;" "optimized"} } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/bb-reorg_0.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/bb-reorg_0.c
new file mode 100644
index 0000000..f850c9b
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/bb-reorg_0.c
@@ -0,0 +1,39 @@
+/* { dg-require-effective-target freorder } */
+/* { dg-options "-O2 -freorder-blocks-and-partition" } */
+
+#include <string.h>
+
+#define SIZE 1000
+int t0 = 0;
+const char *t2[SIZE];
+char buf[SIZE];
+
+void
+foo (void)
+{
+ char *s = buf;
+ t0 = 1;
+
+ for (;;)
+ {
+ if (*s == '\0')
+ break;
+ else
+ {
+ t2[t0] = s;
+ t0++;
+ }
+ *s++ = '\0';
+ }
+ t2[t0] = NULL;
+}
+
+
+int
+main ()
+{
+ strcpy (buf, "hello");
+ foo ();
+ return 0;
+}
+
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/ic-misattribution-1_0.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/ic-misattribution-1_0.c
new file mode 100644
index 0000000..ff103a8
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/ic-misattribution-1_0.c
@@ -0,0 +1,19 @@
+/* { dg-options "-O2 -fdump-ipa-profile" } */
+
+extern void callee (void);
+extern void caller (void (*func) (void));
+
+typedef void (*func_t) (void);
+func_t func;
+
+int
+main ()
+{
+ func = callee;
+ caller (callee);
+ func ();
+ return 0;
+}
+
+/* { dg-final-use { scan-ipa-dump-times "Indirect call -> direct call" 2 "profile" } } */
+/* { dg-final-use { cleanup-ipa-dump "profile" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/ic-misattribution-1_1.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/ic-misattribution-1_1.c
new file mode 100644
index 0000000..4948ec4
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/ic-misattribution-1_1.c
@@ -0,0 +1,18 @@
+/* { dg-options "-O2 -fdump-ipa-profile" } */
+
+extern void other_caller (void);
+
+void
+callee (void)
+{
+ return;
+}
+
+void
+caller(void (*func) (void))
+{
+ func ();
+}
+
+/* { dg-final-use { scan-ipa-dump "Indiret call -> direct call" "profile" } } */
+/* { dg-final-use { cleanup-ipa-dump "profile" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/indir-call-prof-single_0.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/indir-call-prof-single_0.c
new file mode 100644
index 0000000..29a216c
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/indir-call-prof-single_0.c
@@ -0,0 +1,43 @@
+/* { dg-options "-O2 -fdump-tree-optimized -fdump-ipa-profile" } */
+
+static int a1 (void)
+{
+ return 10;
+}
+
+static int a2 (void)
+{
+ return 0;
+}
+
+typedef int (*tp) (void);
+
+static tp aa [] = {a2, a1, a1, a1, a1};
+
+__attribute__((noinline)) void setp (int (**pp) (void), int i)
+{
+ if (!i)
+ *pp = aa [i];
+ else
+ *pp = aa [(i & 2) + 1];
+}
+
+int
+main (void)
+{
+ int (*p) (void);
+ int i;
+
+ for (i = 0; i < 10; i ++)
+ {
+ setp (&p, i);
+ p ();
+ }
+
+ return 0;
+}
+
+/* { dg-final-use { scan-ipa-dump "Indirect call -> direct call.* a1" "profile"} } */
+/* { dg-final-use { scan-tree-dump-not "Invalid sum" "optimized"} } */
+/* { dg-final-use { cleanup-tree-dump "optimized" } } */
+/* { dg-final-use { cleanup-ipa-dump "profile" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/indir-call-prof_0.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/indir-call-prof_0.c
new file mode 100644
index 0000000..6bd048d
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/indir-call-prof_0.c
@@ -0,0 +1,23 @@
+/* { dg-options "-O2 -fdump-tree-optimized -fdump-ipa-profile" } */
+
+extern void setp (int (**pp) (void), int i);
+
+int
+main (void)
+{
+ int (*p) (void);
+ int i;
+
+ for (i = 0; i < 10; i ++)
+ {
+ setp (&p, i);
+ p ();
+ }
+
+ return 0;
+}
+
+/* { dg-final-use { scan-ipa-dump "Indirect call -> direct call.* a1" "profile"} } */
+/* { dg-final-use { scan-tree-dump-not "Invalid sum" "optimized"} } */
+/* { dg-final-use { cleanup-tree-dump "optimized" } } */
+/* { dg-final-use { cleanup-ipa-dump "profile" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/indir-call-prof_1.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/indir-call-prof_1.c
new file mode 100644
index 0000000..0cdb607
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/indir-call-prof_1.c
@@ -0,0 +1,23 @@
+/* { dg-options "-O2 -fdump-tree-optimized -fdump-ipa-profile" } */
+
+int a1 (void)
+{
+ return 10;
+}
+
+int a2 (void)
+{
+ return 0;
+}
+
+typedef int (*tp) (void);
+
+tp aa [] = {a2, a1, a1, a1, a1};
+
+__attribute__((noinline)) void setp (int (**pp) (void), int i)
+{
+ if (!i)
+ *pp = aa [i];
+ else
+ *pp = aa [(i & 2) + 1];
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/inliner-1_0.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/inliner-1_0.c
new file mode 100644
index 0000000..a82b95d
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/inliner-1_0.c
@@ -0,0 +1,42 @@
+/* { dg-options "-O2 --param inline-hot-caller=0 -fdump-tree-optimized" } */
+int a;
+int b[100];
+void abort (void);
+
+inline void
+cold_function ()
+{
+ int i;
+ for (i = 0; i < 99; i++)
+ if (b[i] / (b[i+1] + 1))
+ abort ();
+}
+
+inline void
+hot_function ()
+{
+ int i;
+ for (i = 0; i < 99; i++)
+ if (b[i] / (b[i+1] + 1))
+ abort ();
+}
+
+main ()
+{
+ int i;
+ for (i = 0; i < 100; i++)
+ {
+ if (a)
+ cold_function ();
+ else
+ hot_function ();
+ }
+ return 0;
+}
+
+/* cold function should not be inlined, while hot function should be.
+ Look for "cold_function () [tail call];" call statement not for the
+ declaration or other apperances of the string in dump. */
+/* { dg-final-use { scan-tree-dump "cold_function ..;" "optimized"} } */
+/* { dg-final-use { scan-tree-dump-not "hot_function ..;" "optimized"} } */
+/* { dg-final-use { cleanup-tree-dump "optimized" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/lipo.exp b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/lipo.exp
new file mode 100644
index 0000000..26abc7f
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/lipo.exp
@@ -0,0 +1,60 @@
+# Copyright (C) 2001, 2002, 2004, 2005, 2007, 2008
+# Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3. If not see
+# <http://www.gnu.org/licenses/>.
+
+# Test the functionality of programs compiled with profile-directed block
+# ordering using -fprofile-generate followed by -fbranch-use.
+
+load_lib target-supports.exp
+
+# Some targets don't support tree profiling.
+if { ![check_profiling_available ""] } {
+ return
+}
+
+# The procedures in profopt.exp need these parameters.
+set tool gcc
+set prof_ext [list {gcda} {gcda.imports} ]
+
+# Override the list defined in profopt.exp.
+set PROFOPT_OPTIONS [list {}]
+
+if $tracelevel then {
+ strace $tracelevel
+}
+
+# Load support procs.
+load_lib profopt.exp
+
+# These are globals used by profopt-execute. The first is options
+# needed to generate profile data, the second is options to use the
+# profile data.
+set profile_option "-fprofile-generate -fripa -D_PROFILE_GENERATE"
+set feedback_option "-fprofile-use -fripa -D_PROFILE_USE"
+
+# Add -fno-section-anchors for powerpc. Workround for Google ref b/6663281
+if {[istarget powerpc*-*-*]} {
+ set profile_option "$profile_option -fno-section-anchors"
+ set feedback_option "$feedback_option -fno-section-anchors"
+}
+
+foreach src [lsort [glob -nocomplain $srcdir/$subdir/*_0.c]] {
+ # If we're only testing specific files and this isn't one of them, skip it.
+ if ![runtest_file_p $runtests $src] then {
+ continue
+ }
+ profopt-execute $src
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/lipo_inline1_0.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/lipo_inline1_0.c
new file mode 100644
index 0000000..d480809
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/lipo_inline1_0.c
@@ -0,0 +1,29 @@
+/* { dg-options "-O2 -fdump-tree-optimized-details-blocks -fdump-ipa-inline-details -fopt-info" } */
+
+extern int foo (void);
+extern int goo (void);
+
+
+int bar (void)
+{
+ return 2;
+}
+
+int g;
+int main ()
+{
+ int s = 0, i;
+
+ for (i = 0; i < 1000; i ++)
+ {
+ s += foo(); /* Should be inlined */
+ s += goo(); /* Should be inlined */
+ }
+
+ g = s;
+ return 0;
+}
+
+/* { dg-final-use { scan-tree-dump-not "foo" "optimized"} } */
+/* { dg-final-use { scan-tree-dump-not "goo" "optimized"} } */
+/* { dg-final-use { cleanup-tree-dump "optimized" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/lipo_inline1_1.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/lipo_inline1_1.c
new file mode 100644
index 0000000..9725ca7
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/lipo_inline1_1.c
@@ -0,0 +1,22 @@
+extern int bar(void);
+extern int blah(void);
+int foo (void)
+{
+ int i, s = 0;
+
+ for (i = 0; i < 2; i++)
+ {
+ s += bar(); /* Inlined */
+ s += blah(); /* Inlined */
+ }
+ return s;
+}
+
+int goo (void)
+{
+ return 10;
+}
+
+/* { dg-final-use { scan-tree-dump-not "bar" "optimized"} } */
+/* { dg-final-use { scan-tree-dump-not "blah" "optimized"} } */
+/* { dg-final-use { cleanup-tree-dump "optimized" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/lipo_inline1_2.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/lipo_inline1_2.c
new file mode 100644
index 0000000..9eeadb2
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/lipo_inline1_2.c
@@ -0,0 +1,6 @@
+int blah (void)
+{
+ return 2;
+}
+
+/* { dg-final-use { cleanup-tree-dump "optimized" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/pr34999_0.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/pr34999_0.c
new file mode 100644
index 0000000..4ec4279
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/pr34999_0.c
@@ -0,0 +1,45 @@
+/* Same test as built-in-setjmp.c. Includes the case where
+ the source block of a crossing fallthru edge ends with a call. */
+/* { dg-require-effective-target freorder } */
+/* { dg-options "-O2 -freorder-blocks-and-partition" } */
+
+extern int strcmp(const char *, const char *);
+extern char *strcpy(char *, const char *);
+extern void abort(void);
+extern void exit(int);
+
+void *buf[20];
+
+void __attribute__((noinline))
+sub2 (void)
+{
+ __builtin_longjmp (buf, 1);
+}
+
+int
+main ()
+{
+ char *p = (char *) __builtin_alloca (20);
+
+ strcpy (p, "test");
+
+ if (__builtin_setjmp (buf))
+ {
+ if (strcmp (p, "test") != 0)
+ abort ();
+
+ exit (0);
+ }
+
+ {
+ int *q = (int *) __builtin_alloca (p[2] * sizeof (int));
+ int i;
+
+ for (i = 0; i < p[2]; i++)
+ q[i] = 0;
+
+ while (1)
+ sub2 ();
+ }
+}
+
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/pr45354_0.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/pr45354_0.c
new file mode 100644
index 0000000..b30ad77
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/pr45354_0.c
@@ -0,0 +1,43 @@
+/* { dg-require-effective-target freorder } */
+/* { dg-options "-O -freorder-blocks-and-partition -fschedule-insns -fselective-scheduling" { target powerpc*-*-* ia64-*-* x86_64-*-* } } */
+
+extern void abort (void);
+
+int ifelse_val2;
+
+int __attribute__((noinline))
+test_ifelse2 (int i)
+{
+ int result = 0;
+ if (!i) /* count(6) */
+ result = 1; /* count(1) */
+ if (i == 1) /* count(6) */
+ result = 1024;
+ if (i == 2) /* count(6) */
+ result = 2; /* count(3) */
+ if (i == 3) /* count(6) */
+ return 8; /* count(2) */
+ if (i == 4) /* count(4) */
+ return 2048;
+ return result; /* count(4) */
+}
+
+void __attribute__((noinline))
+call_ifelse ()
+{
+ ifelse_val2 += test_ifelse2 (0);
+ ifelse_val2 += test_ifelse2 (2);
+ ifelse_val2 += test_ifelse2 (2);
+ ifelse_val2 += test_ifelse2 (2);
+ ifelse_val2 += test_ifelse2 (3);
+ ifelse_val2 += test_ifelse2 (3);
+}
+
+int
+main()
+{
+ call_ifelse ();
+ if (ifelse_val2 != 23)
+ abort ();
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/pr47187_0.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/pr47187_0.c
new file mode 100644
index 0000000..467ce25
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/pr47187_0.c
@@ -0,0 +1,23 @@
+/* PR bootstrap/47187 */
+/* { dg-options "-O2" } */
+
+char buf[64];
+char buf2[64];
+
+void *
+foo (char *p, long size)
+{
+ return __builtin_memcpy (buf, p, size);
+}
+
+int
+main (void)
+{
+ long i;
+ for (i = 0; i < 65536; i++)
+ if (foo ("abcdefghijkl", 12) != buf)
+ __builtin_abort ();
+ if (foo (buf2, 64) != buf)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/stringop-1_0.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/stringop-1_0.c
new file mode 100644
index 0000000..f730613
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/stringop-1_0.c
@@ -0,0 +1,22 @@
+/* { dg-options "-O2 -fdump-tree-optimized -fdump-ipa-profile" } */
+int a[1000];
+int b[1000];
+int size=1;
+int max=10000;
+main()
+{
+ int i;
+ for (i=0;i<max; i++)
+ {
+ __builtin_memcpy (a, b, size * sizeof (a[0]));
+ asm("");
+ }
+ return 0;
+}
+/* { dg-final-use { scan-ipa-dump "Single value 4 stringop" "profile"} } */
+/* Really this ought to simplify into assignment, but we are not there yet. */
+/* a[0] = b[0] is what we fold the resulting memcpy into. */
+/* { dg-final-use { scan-tree-dump " = MEM.*&b" "optimized"} } */
+/* { dg-final-use { scan-tree-dump "MEM.*&a\\\] = " "optimized"} } */
+/* { dg-final-use { cleanup-tree-dump "optimized" } } */
+/* { dg-final-use { cleanup-ipa-dump "profile" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/stringop-2_0.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/stringop-2_0.c
new file mode 100644
index 0000000..d5c5856
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/stringop-2_0.c
@@ -0,0 +1,20 @@
+/* { dg-options "-O2 -fdump-tree-optimized -fdump-ipa-profile" } */
+int a[1000];
+int b[1000];
+int size=1;
+int max=10000;
+main()
+{
+ int i;
+ for (i=0;i<max; i++)
+ {
+ __builtin_memset (a, 10, size * sizeof (a[0]));
+ asm("");
+ }
+ return 0;
+}
+/* { dg-final-use { scan-ipa-dump "Single value 4 stringop" "profile"} } */
+/* The versioned memset of size 4 should be optimized to an assignment. */
+/* { dg-final-use { scan-tree-dump "a\\\[0\\\] = 168430090" "optimized"} } */
+/* { dg-final-use { cleanup-tree-dump "optimized" } } */
+/* { dg-final-use { cleanup-ipa-dump "profile" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/tracer-1_0.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/tracer-1_0.c
new file mode 100644
index 0000000..385a1a5
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/tracer-1_0.c
@@ -0,0 +1,18 @@
+/* { dg-options "-O2 -ftracer -fdump-tree-tracer" } */
+volatile int a, b, c;
+int main ()
+{
+ int i;
+ for (i = 0; i < 1000; i++)
+ {
+ if (i % 17)
+ a++;
+ else
+ b++;
+ c++;
+ }
+ return 0;
+}
+/* Superblock formation should produce two copies of the increment of c */
+/* { dg-final-generate { scan-tree-dump-times "c =" 2 "tracer" } } */
+/* { dg-final-use { cleanup-tree-dump "tracer" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/update-cunroll-2_0.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/update-cunroll-2_0.c
new file mode 100644
index 0000000..d559b92
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/update-cunroll-2_0.c
@@ -0,0 +1,21 @@
+
+/* { dg-options "-O2 -fdump-tree-optimized-blocks" } */
+int a[8];
+__attribute__ ((noinline))
+int t()
+{
+ int i;
+ for (i = 0; i < 3; i++)
+ if (a[i])
+ break;
+ return i;
+}
+main ()
+{
+ int i;
+ for (i = 0; i < 1000; i++)
+ t ();
+ return 0;
+}
+/* { dg-final-use { scan-tree-dump-not "Invalid sum" "optimized"} } */
+/* { dg-final-use { cleanup-tree-dump "optimized" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/update-loopch_0.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/update-loopch_0.c
new file mode 100644
index 0000000..e45c674
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/update-loopch_0.c
@@ -0,0 +1,20 @@
+/* { dg-options "-O2 -fdump-ipa-profile-blocks -fdump-tree-optimized-blocks-details" } */
+int max = 33333;
+int a[8];
+int
+main ()
+{
+ int i;
+ for (i = 0; i < max; i++)
+ {
+ a[i % 8]++;
+ }
+ return 0;
+}
+/* Loop header copying will peel away the initial conditional, so the loop body
+ is once reached directly from entry point of function, rest via loopback
+ edge. */
+/* { dg-final-use { scan-ipa-dump "count:33333" "profile"} } */
+/* { dg-final-use { scan-tree-dump "count:33332" "optimized"} } */
+/* { dg-final-use { cleanup-ipa-dump "profile" } } */
+/* { dg-final-use { cleanup-tree-dump "optimized" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/update-tailcall_0.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/update-tailcall_0.c
new file mode 100644
index 0000000..2854914
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/update-tailcall_0.c
@@ -0,0 +1,20 @@
+/* { dg-options "-O2 -fdump-tree-tailc -fdump-tree-optimized" } */
+__attribute__ ((noinline))
+int factorial(int x)
+{
+ if (x == 1)
+ return 1;
+ else
+ return x*factorial(--x);
+}
+int gbl;
+int
+main()
+{
+ gbl = factorial(100);
+ return 0;
+}
+/* { dg-final-use { scan-tree-dump-not "Invalid sum" "tailc"} } */
+/* { dg-final-use { scan-tree-dump-not "Invalid sum" "optimized"} } */
+/* { dg-final-use { cleanup-tree-dump "tailc" } } */
+/* { dg-final-use { cleanup-tree-dump "optimized" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/val-prof-1_0.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/val-prof-1_0.c
new file mode 100644
index 0000000..d6f603e
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/val-prof-1_0.c
@@ -0,0 +1,22 @@
+/* { dg-options "-O2 -fdump-tree-optimized -fdump-ipa-profile" } */
+int a[1000];
+int b = 256;
+int c = 257;
+main ()
+{
+ int i;
+ int n;
+ for (i = 0; i < 1000; i++)
+ {
+ if (i % 17)
+ n = c;
+ else n = b;
+ a[i] /= n;
+ }
+ return 0;
+}
+/* { dg-final-use { scan-ipa-dump "Div.mod by constant n_\[0-9\]*=257 transformation on insn" "profile"} } */
+/* { dg-final-use { scan-tree-dump "if \\(n_\[0-9\]* != 257\\)" "optimized"} } */
+/* { dg-final-use { scan-tree-dump-not "Invalid sum" "optimized"} } */
+/* { dg-final-use { cleanup-tree-dump "optimized" } } */
+/* { dg-final-use { cleanup-ipa-dump "profile" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/val-prof-2_0.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/val-prof-2_0.c
new file mode 100644
index 0000000..1683961
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/val-prof-2_0.c
@@ -0,0 +1,32 @@
+/* { dg-options "-O2 -fdump-tree-optimized -fdump-ipa-profile" } */
+unsigned int a[1000];
+unsigned int b = 256;
+unsigned int c = 1024;
+unsigned int d = 17;
+main ()
+{
+ int i;
+ unsigned int n;
+ for (i = 0; i < 1000; i++)
+ {
+ a[i]=100*i;
+ }
+ for (i = 0; i < 1000; i++)
+ {
+ if (i % 2)
+ n = b;
+ else if (i % 3)
+ n = c;
+ else
+ n = d;
+ a[i] %= n;
+ }
+ return 0;
+}
+/* { dg-final-use { scan-ipa-dump "Mod power of 2 transformation on insn" "profile" } } */
+/* This is part of code checking that n is power of 2, so we are sure that the transformation
+ didn't get optimized out. */
+/* { dg-final-use { scan-tree-dump "n_\[0-9\]* \\+ (4294967295|0x0*ffffffff)" "optimized"} } */
+/* { dg-final-use { scan-tree-dump-not "Invalid sum" "optimized"} } */
+/* { dg-final-use { cleanup-tree-dump "optimized" } } */
+/* { dg-final-use { cleanup-ipa-dump "profile" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/val-prof-3_0.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/val-prof-3_0.c
new file mode 100644
index 0000000..d7b3914
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/val-prof-3_0.c
@@ -0,0 +1,32 @@
+/* { dg-options "-O2 -fdump-tree-optimized -fdump-ipa-profile" } */
+unsigned int a[1000];
+unsigned int b = 257;
+unsigned int c = 1023;
+unsigned int d = 19;
+main ()
+{
+ int i;
+ unsigned int n;
+ for (i = 0; i < 1000; i++)
+ {
+ a[i]=18;
+ }
+ for (i = 0; i < 1000; i++)
+ {
+ if (i % 2)
+ n = b;
+ else if (i % 3)
+ n = c;
+ else
+ n = d;
+ a[i] %= n;
+ }
+ return 0;
+}
+/* { dg-final-use { scan-ipa-dump "Mod subtract transformation on insn" "profile" } } */
+/* This is part of code checking that n is greater than the divisor so we are sure that it
+ didn't get optimized out. */
+/* { dg-final-use { scan-tree-dump "if \\(n_\[0-9\]* \\>" "optimized"} } */
+/* { dg-final-use { scan-tree-dump-not "Invalid sum" "optimized"} } */
+/* { dg-final-use { cleanup-tree-dump "optimized" } } */
+/* { dg-final-use { cleanup-ipa-dump "profile" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/val-prof-4_0.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/val-prof-4_0.c
new file mode 100644
index 0000000..239bf59
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/val-prof-4_0.c
@@ -0,0 +1,32 @@
+/* { dg-options "-O2 -fdump-tree-optimized -fdump-ipa-profile" } */
+unsigned int a[1000];
+unsigned int b = 999;
+unsigned int c = 1002;
+unsigned int d = 1003;
+main ()
+{
+ int i;
+ unsigned int n;
+ for (i = 0; i < 1000; i++)
+ {
+ a[i]=1000+i;
+ }
+ for (i = 0; i < 1000; i++)
+ {
+ if (i % 2)
+ n = b;
+ else if (i % 3)
+ n = c;
+ else
+ n = d;
+ a[i] %= n;
+ }
+ return 0;
+}
+/* { dg-final-use { scan-ipa-dump "Mod subtract transformation on insn" "profile" } } */
+/* This is part of code checking that n is greater than the divisor so we are sure that it
+ didn't get optimized out. */
+/* { dg-final-use { scan-tree-dump "if \\(n_\[0-9\]* \\>" "optimized"} } */
+/* { dg-final-use { scan-tree-dump-not "Invalid sum" "optimized"} } */
+/* { dg-final-use { cleanup-tree-dump "optimized" } } */
+/* { dg-final-use { cleanup-ipa-dump "profile" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/val-prof-5_0.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/val-prof-5_0.c
new file mode 100644
index 0000000..1a804a7
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/val-prof-5_0.c
@@ -0,0 +1,17 @@
+/* { dg-options "-O2 -fdump-tree-optimized -fdump-ipa-profile" } */
+int a[1000];
+int b=997;
+main()
+{
+ int i;
+ for (i = 0; i < 1000; i++)
+ if (a[i])
+ a[i]/=b;
+ else
+ a[i]/=b;
+ return 0;
+}
+/* { dg-final-use { scan-ipa-dump "Div.mod by constant b.*=997 transformation on insn" "profile" } } */
+/* { dg-final-use { scan-tree-dump-not "Invalid sum" "optimized"} } */
+/* { dg-final-use { cleanup-tree-dump "optimized" } } */
+/* { dg-final-use { cleanup-ipa-dump "profile" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/val-prof-6_0.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/val-prof-6_0.c
new file mode 100644
index 0000000..c439fcf
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/val-prof-6_0.c
@@ -0,0 +1,20 @@
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+char a[1000];
+char b[1000];
+int size=1000;
+__attribute__ ((noinline))
+t(int size)
+{
+ __builtin_memcpy(a,b,size);
+}
+int
+main()
+{
+ int i;
+ for (i=0; i < size; i++)
+ t(i);
+ return 0;
+}
+/* { dg-final-use { scan-tree-dump "Average value sum:499500" "optimized"} } */
+/* { dg-final-use { scan-tree-dump "IOR value" "optimized"} } */
+/* { dg-final-use { cleanup-tree-dump "optimized" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/val-prof-7_0.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/val-prof-7_0.c
new file mode 100644
index 0000000..5f53263
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/val-prof-7_0.c
@@ -0,0 +1,26 @@
+/* { dg-options "-O2 -fdump-ipa-profile -mtune=core2" } */
+/* { dg-skip-if "" { ! { i?86-*-* x86_64-*-* } } { "*" } { "" } } */
+
+#include <strings.h>
+
+int foo(int len)
+{
+ char array[1000];
+ bzero(array, len);
+ return 0;
+}
+
+int main() {
+ int i;
+ for (i = 0; i < 1000; i++)
+ {
+ if (i > 990)
+ foo(16);
+ else
+ foo(8);
+ }
+ return 0;
+}
+
+/* { dg-final-use { scan-ipa-dump "Single value 8 stringop transformation on bzero" "profile" } } */
+/* { dg-final-use { cleanup-ipa-dump "profile" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/wcoverage-mismatch_0.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/wcoverage-mismatch_0.c
new file mode 100644
index 0000000..e423105
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/lipo/wcoverage-mismatch_0.c
@@ -0,0 +1,20 @@
+/* { dg-options "-O2 -Wno-coverage-mismatch" } */
+
+int __attribute__((noinline)) bar (void)
+{
+}
+
+int foo (int i)
+{
+#ifdef _PROFILE_USE
+ if (i)
+ bar ();
+#endif
+ return 0;
+}
+
+int main(int argc, char **argv)
+{
+ foo (argc);
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/merge_block.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/merge_block.c
new file mode 100644
index 0000000..91bd474
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-prof/merge_block.c
@@ -0,0 +1,21 @@
+
+/* { dg-options "-O2 -fno-ipa-pure-const -fdump-tree-optimized-blocks -fno-early-inlining" } */
+int a[8];
+int t()
+{
+ int i;
+ for (i = 0; i < 3; i++)
+ if (a[i])
+ break;
+ return i;
+}
+main ()
+{
+ int i;
+ /* The loop will be optimized away after ipa-inline. */
+ for (i = 0; i < 1000; i++)
+ t ();
+ return 0;
+}
+/* { dg-final-use { scan-tree-dump-not "Invalid sum" "optimized"} } */
+/* { dg-final-use { cleanup-tree-dump "optimized" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ivopt_1.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ivopt_1.c
index 74b73da..c2f7ebd 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ivopt_1.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ivopt_1.c
@@ -1,5 +1,5 @@
/* { dg-do compile { target {{ i?86-*-* x86_64-*-* } && lp64 } } } */
-/* { dg-options "-O2 -m64 -fdump-tree-ivopts" } */
+/* { dg-options "-O2 -fno-tree-loop-vectorize -m64 -fdump-tree-ivopts" } */
#define TYPE char*
/* Testing that only one induction variable is selected after IVOPT on
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ivopt_2.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ivopt_2.c
index f27b900..87334c6 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ivopt_2.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ivopt_2.c
@@ -1,5 +1,5 @@
/* { dg-do compile { target {{ i?86-*-* x86_64-*-* } && lp64 } } } */
-/* { dg-options "-O2 -m64 -fdump-tree-ivopts" } */
+/* { dg-options "-O2 -fno-tree-loop-vectorize -m64 -fdump-tree-ivopts" } */
#define TYPE char*
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ivopt_4.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ivopt_4.c
index 330b3bf..bd6393e 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ivopt_4.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ivopt_4.c
@@ -1,5 +1,5 @@
/* { dg-do compile { target {{ i?86-*-* x86_64-*-* } && lp64 } } } */
-/* { dg-options "-O2 -m64 -fdump-tree-ivopts" } */
+/* { dg-options "-O2 -fno-tree-loop-vectorize -m64 -fdump-tree-ivopts" } */
#ifndef TYPE
#define TYPE char*
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ivopts-lt.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ivopts-lt.c
index 5188fed..d1e03e3 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ivopts-lt.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ivopts-lt.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-ivopts" } */
+/* { dg-options "-O2 -fno-tree-loop-vectorize -fdump-tree-ivopts" } */
/* { dg-require-effective-target stdint_types } */
#include "stdint.h"
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/loop-16.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/loop-16.c
index 50fa333..4b41ebe 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/loop-16.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/loop-16.c
@@ -2,7 +2,7 @@
at most 100 times, thus the (32-bit) induction variables do not overflow,
and we may use 64-bit variable to represent them. */
-/* { dg-options "-O2 -fdump-tree-optimized" } */
+/* { dg-options "-O2 -fno-tree-loop-vectorize -fdump-tree-optimized" } */
/* { dg-do compile { target x86_64-*-* } } */
unsigned a[100];
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/predcom-1.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/predcom-1.c
index f1e52e5..b4490d5 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/predcom-1.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/predcom-1.c
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-do run } */
-/* { dg-options "-O2 -funroll-loops --param max-unroll-times=8 -fpredictive-commoning -fdump-tree-pcom-details" } */
+/* { dg-options "-O2 -fno-tree-loop-vectorize -funroll-loops --param max-unroll-times=8 -fpredictive-commoning -fdump-tree-pcom-details" } */
void abort (void);
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/predcom-4.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/predcom-4.c
index c29a46a..3164c45 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/predcom-4.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/predcom-4.c
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-do run } */
-/* { dg-options "-O2 -funroll-loops --param max-unroll-times=8 -fpredictive-commoning -fdump-tree-pcom-details" } */
+/* { dg-options "-O2 -fno-tree-loop-vectorize -funroll-loops --param max-unroll-times=8 -fpredictive-commoning -fdump-tree-pcom-details" } */
/* Test for predictive commoning of expressions, without reassociation. */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/predcom-5.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/predcom-5.c
index 29444ab..b830c4d 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/predcom-5.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/predcom-5.c
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-do run } */
-/* { dg-options "-O2 -funroll-loops --param max-unroll-times=8 -fpredictive-commoning -fdump-tree-pcom-details" } */
+/* { dg-options "-O2 -fno-tree-loop-vectorize -funroll-loops --param max-unroll-times=8 -fpredictive-commoning -fdump-tree-pcom-details" } */
/* Test for predictive commoning of expressions, with reassociation. */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/prefetch-7.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/prefetch-7.c
index 5c469ba..3af204a 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/prefetch-7.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/prefetch-7.c
@@ -1,7 +1,7 @@
/* { dg-do compile { target { { i?86-*-* x86_64-*-* } && ia32 } } } */
/* { dg-require-effective-target sse2 } */
/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=athlon" } } */
-/* { dg-options "-O2 -fprefetch-loop-arrays -march=athlon -msse2 -mfpmath=sse --param simultaneous-prefetches=100 -fdump-tree-aprefetch-details -fdump-tree-optimized" } */
+/* { dg-options "-O2 -fno-tree-loop-vectorize -fprefetch-loop-arrays -march=athlon -msse2 -mfpmath=sse --param simultaneous-prefetches=100 -fdump-tree-aprefetch-details -fdump-tree-optimized" } */
#define K 1000000
int a[K];
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/prefetch-8.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/prefetch-8.c
index 705d35f..31dc314 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/prefetch-8.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/prefetch-8.c
@@ -1,7 +1,7 @@
/* { dg-do compile { target { { i?86-*-* x86_64-*-* } && ia32 } } } */
/* { dg-require-effective-target sse2 } */
/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=athlon" } } */
-/* { dg-options "-O2 -fprefetch-loop-arrays -march=athlon -msse2 -mfpmath=sse --param simultaneous-prefetches=100 -fdump-tree-aprefetch-details -fdump-tree-optimized" } */
+/* { dg-options "-O2 -fno-tree-loop-vectorize -fprefetch-loop-arrays -march=athlon -msse2 -mfpmath=sse --param simultaneous-prefetches=100 -fdump-tree-aprefetch-details -fdump-tree-optimized" } */
#define K 1000000
int a[K];
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/prefetch-9.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/prefetch-9.c
index f78bea3..afbb8a0 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/prefetch-9.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/prefetch-9.c
@@ -1,7 +1,7 @@
/* { dg-do compile { target { { i?86-*-* x86_64-*-* } && ia32 } } } */
/* { dg-require-effective-target sse2 } */
/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=athlon" } } */
-/* { dg-options "-O2 -fprefetch-loop-arrays -march=athlon -msse2 -mfpmath=sse --param simultaneous-prefetches=100 -fdump-tree-aprefetch-details -fdump-tree-optimized" } */
+/* { dg-options "-O2 -fno-tree-loop-vectorize -fprefetch-loop-arrays -march=athlon -msse2 -mfpmath=sse --param simultaneous-prefetches=100 -fdump-tree-aprefetch-details -fdump-tree-optimized" } */
#define K 1000000
int a[K], b[K];
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/vrp93.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/vrp93.c
new file mode 100644
index 0000000..d78c399
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/vrp93.c
@@ -0,0 +1,36 @@
+/* PR target/29776 */
+/* PR tree-optimization/61725 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-vrp1" } */
+/* { dg-final { scan-tree-dump-not "link_error" "vrp1"} } */
+/* { dg-final { cleanup-tree-dump "vrp1" } } */
+
+#define A(fn, arg, min, max) \
+ if (__builtin_##fn (arg) < min || __builtin_##fn (arg) > max) \
+ link_error ();
+#define B(fn, min, max) \
+ A (fn, a, min, max) A (fn##l, b, min, max) A (fn##ll, c, min, max)
+#define C(fn, min, sub) \
+ A (fn, a, min, ((int) sizeof (a) * __CHAR_BIT__ - sub)) \
+ A (fn##l, b, min, ((int) sizeof (b) * __CHAR_BIT__ - sub)) \
+ A (fn##ll, c, min, ((int) sizeof (c) * __CHAR_BIT__ - sub))
+
+extern void link_error (void);
+
+unsigned int d;
+unsigned long e;
+unsigned long long f;
+
+void
+foo (int a, long b, long long c)
+{
+ C (ffs, 0, 0)
+ a &= 63; b &= 63; c &= 63;
+ B (ffs, 0, 6)
+ a++; b++; c++;
+ B (ffs, 1, 7)
+ a -= 2; b -= 2; c -= 2;
+ C (ffs, 0, 0)
+ a -= 63; b -= 63; c -= 63;
+ C (ffs, 1, 0)
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/typeof-2.c b/gcc-4.9/gcc/testsuite/gcc.dg/typeof-2.c
new file mode 100644
index 0000000..e916900
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/typeof-2.c
@@ -0,0 +1,28 @@
+/* Test qualifier discard of typeof for atomic types. */
+/* { dg-do compile } */
+/* { dg-options "-std=c11" } */
+
+extern int i;
+
+extern int * p;
+
+extern int _Atomic const ci;
+extern __typeof (ci) i;
+
+extern int _Atomic volatile vi;
+extern __typeof (vi) i;
+
+extern int * _Atomic restrict ri;
+extern __typeof (ri) p;
+
+void f(void)
+{
+ __auto_type aci = ci;
+ int *paci = &aci;
+
+ __auto_type avi = vi;
+ int *pavi = &avi;
+
+ __auto_type ari = ri;
+ int **pari = &ari;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/unused-8b.c b/gcc-4.9/gcc/testsuite/gcc.dg/unused-8b.c
new file mode 100644
index 0000000..5b4b894
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/unused-8b.c
@@ -0,0 +1,4 @@
+/* { dg-do compile } */
+/* { dg-options "-Wall -Wno-unused -Wextra" } */
+
+void foo(int x) { }
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/var-expand1.c b/gcc-4.9/gcc/testsuite/gcc.dg/var-expand1.c
index a784ea1..b4580ea 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/var-expand1.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/var-expand1.c
@@ -2,7 +2,7 @@
/* We don't (and don't want to) perform this optimisation on soft-float
targets, where each addition is a library call. */
/* { dg-require-effective-target hard_float } */
-/* { dg-options "-O2 -funroll-loops --fast-math -fvariable-expansion-in-unroller -fdump-rtl-loop2_unroll" } */
+/* { dg-options "-O2 -fno-tree-loop-vectorize -funroll-loops --fast-math -fvariable-expansion-in-unroller -fdump-rtl-loop2_unroll" } */
extern void abort (void);
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/vect/pr60841.c b/gcc-4.9/gcc/testsuite/gcc.dg/vect/pr60841.c
new file mode 100644
index 0000000..44b5d01
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/vect/pr60841.c
@@ -0,0 +1,183 @@
+/* { dg-do compile } */
+/* { dg-additional-options "-ffast-math" } */
+
+/* This testcase shouldn't consume much memory or produce a 1GB vectorizer
+ dump file due to SLP tree explosion. */
+
+struct S { int f1, f2, f3, f4; } a;
+struct T { short f3, f2, f1, f4; };
+int b, c, d, e, f, g;
+unsigned long z;
+
+void
+foo (struct T *p, struct T *q, int x, int w)
+{
+ for (; x; x++)
+ {
+ struct S h;
+ int i;
+ struct T j;
+ struct T *r;
+ h = a;
+ g = 0;
+ r = p + 2 * (c + 4) + 1;
+ j = *r;
+ r = p;
+ f = r->f1 - 1;
+ b = +1.0 + f * f;
+ i = (r->f2 + j.f2) / 2;
+ f = r->f3 - 1;
+ b += 1.0 - i * f * f;
+ f = r->f4 - 1;
+ if (b)
+ b += -1.0 - i * f;
+ if (b / w)
+ {
+ h.f1 += 8.0 * r->f1;
+ h.f2 += 8.0 * r->f2;
+ h.f3 += 8.0 * r->f3;
+ h.f4 += 8.0 * r->f4;
+ g = 1;
+ }
+ r++;
+ f = r->f1;
+ i = (r->f2 + j.f2) / 2;
+ f = r->f3 - 1;
+ b += 1.0 - i * f * f;
+ i = (r->f4);
+ if (b * 65535UL / w)
+ {
+ h.f1 += 10.0 * r->f1;
+ h.f2 += 10.0 * r->f2;
+ h.f3 += 10.0 * r->f3;
+ h.f4 += 10.0 * r->f4;
+ g += 10.0;
+ }
+ r++;
+ f = r->f1;
+ z = 5UL * i;
+ f = r->f2;
+ i = (r->f3 + j.f3) / 2;
+ b = -i * f * f;
+ i = (r->f4 + j.f4) / 2;
+ if (b * 65535UL / 25.0f)
+ {
+ h.f1 += 8.0 * r->f1;
+ h.f2 += 8.0 * r->f2;
+ h.f3 += 8.0 * r->f3;
+ h.f4 += 8.0 * r->f4;
+ g += 8.0;
+ }
+ r++;
+ f = r->f1 - j.f1;
+ b = 1 * 2.0 * i * f * f;
+ f = r->f2;
+ b += 4.0 * f;
+ i = r->f3 / 2;
+ f = r->f4 - 1;
+ if (b * 1)
+ {
+ h.f1 += 8.0 * r->f1;
+ h.f2 += 8.0 * r->f2;
+ h.f3 += 8.0 * r->f3;
+ h.f4 += 8.0 * r->f4;
+ g += 8.0;
+ }
+ b = 4.0 * 1 * f;
+ if (b * 65535UL / 25.0f)
+ {
+ h.f1 += 20.0 * r->f1;
+ h.f2 += 20.0 * r->f2;
+ h.f3 += 20.0 * r->f3;
+ h.f4 += 20.0 * r->f4;
+ g += 20.0;
+ }
+ b = 5 * (0.0 - i);
+ if (b < 0)
+ {
+ h.f1 += 8.0 * r->f1;
+ h.f2 += 8.0 * r->f2;
+ h.f3 += 8.0 * r->f3;
+ h.f4 += 8.0 * r->f4;
+ g += 8.0;
+ }
+ r = p + 2 * (c + 4);
+ i = (r->f1 + j.f1);
+ b = 1 * 2.0 * i * 1;
+ f = r->f2 - 1;
+ i = (r->f3 + j.f3) / 2;
+ b = 5 * (0.0 - i) * f * f;
+ i = (r->f4 + j.f4) / 2;
+ if (b * 65535UL / 25.0f)
+ {
+ h.f1 += 10.0 * r->f1;
+ h.f2 += 10.0 * r->f2;
+ h.f3 += 10.0 * r->f3;
+ h.f4 += 10.0 * r->f4;
+ g += 10.0;
+ }
+ r++;
+ f = r->f1;
+ b = 5UL * i * f;
+ i = (r->f2 + j.f2) / 2;
+ f = r->f3 - 1;
+ b = 5 * (0.0 - i) * f * f;
+ f = r->f4 - 1;
+ if (b * 65535UL / 25.0f)
+ {
+ h.f1 += 40.0 * r->f1;
+ h.f2 += 40.0 * r->f2;
+ h.f3 += 40.0 * r->f3;
+ h.f4 += 40.0 * r->f4;
+ g += 40.0;
+ }
+ r++;
+ i = (r->f1 + j.f1);
+ b = 5 * i * f;
+ f = r->f2;
+ b = 4.0 * f * f;
+ f = r->f3;
+ i = (r->f4 + j.f4) / 2;
+ b = 5 * (0.0 - i) * f * f;
+ if (b * 25.0f)
+ {
+ h.f1 += 8.0 * r->f1;
+ h.f2 += 8.0 * r->f2;
+ h.f3 += 8.0 * r->f3;
+ h.f4 += 8.0 * r->f4;
+ g += 8.0;
+ }
+ r = p + 4 * (c + 4);
+ i = r->f1 / 2;
+ b = 5 * (1.0 + i);
+ i = r->f2 + j.f2;
+ f = r->f3 - 1;
+ b = 5 * (0.0 - i) * f * f;
+ i = (r->f4 + j.f4) / 2;
+ if (b * 65535UL / 25.0f)
+ {
+ h.f1 += 5.0 * r->f1;
+ h.f2 += 5.0 * r->f2;
+ h.f3 += 5.0 * r->f3;
+ h.f4 += 5.0 * r->f4;
+ g += 5.0;
+ }
+ b = 5 * (1.0 + i);
+ if (b < 0)
+ {
+ h.f1 += 5.0 * r->f1;
+ h.f2 += 5.0 * r->f2;
+ h.f3 += 5.0 * r->f3;
+ h.f4 += 5.0 * r->f4;
+ g += 5.0;
+ }
+ q->f1 = (h.f1 + g / 2 - 1) / g;
+ q->f2 = (h.f2 + g / 2 - 1) / g;
+ q->f3 = (h.f3 + g / 2 - 1) / g;
+ q->f4 = (h.f4 + g / 2 - 1) / g;
+ p++;
+ q++;
+ }
+}
+
+/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/vect/pr61680.c b/gcc-4.9/gcc/testsuite/gcc.dg/vect/pr61680.c
new file mode 100644
index 0000000..605a651
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/vect/pr61680.c
@@ -0,0 +1,51 @@
+/* { dg-do run } */
+
+#include "tree-vect.h"
+
+double v[4096][4];
+
+__attribute__((noinline, noclone)) void
+bar (double p[][4])
+{
+ int i;
+ double d = 172.0;
+ for (i = 0; i < 4096; i++)
+ {
+ if (p[i][0] != 6.0 || p[i][1] != 6.0 || p[i][2] != 10.0)
+ __builtin_abort ();
+ if (__builtin_fabs (p[i][3] - d) > 0.25)
+ __builtin_abort ();
+ }
+}
+
+__attribute__((noinline, noclone)) void
+foo (void)
+{
+ int i;
+ double w[4096][4], t;
+ for (i = 0; i < 4096; i++)
+ {
+ w[i][0] = v[i][0] + 2.0;
+ w[i][1] = v[i][1] + 1.0;
+ w[i][2] = v[i][2] + 4.0;
+ w[i][3] = (w[i][0] * w[i][0] + w[i][1] * w[i][1] + w[i][2] * w[i][2]);
+ }
+ bar (w);
+}
+
+int
+main ()
+{
+ int i;
+
+ check_vect ();
+
+ for (i = 0; i < 4096; i++)
+ {
+ v[i][0] = 4.0;
+ v[i][1] = 5.0;
+ v[i][2] = 6.0;
+ }
+ foo ();
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/vect/vect-reduc-sad.c b/gcc-4.9/gcc/testsuite/gcc.dg/vect/vect-reduc-sad.c
new file mode 100644
index 0000000..15a625f
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/vect/vect-reduc-sad.c
@@ -0,0 +1,54 @@
+/* { dg-require-effective-target vect_usad_char } */
+
+#include <stdarg.h>
+#include "tree-vect.h"
+
+#define N 64
+#define SAD N*N/2
+
+unsigned char X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+unsigned char Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+
+/* Sum of absolute differences between arrays of unsigned char types.
+ Detected as a sad pattern.
+ Vectorized on targets that support sad for unsigned chars. */
+
+__attribute__ ((noinline)) int
+foo (int len)
+{
+ int i;
+ int result = 0;
+
+ for (i = 0; i < len; i++)
+ result += abs (X[i] - Y[i]);
+
+ return result;
+}
+
+
+int
+main (void)
+{
+ int i;
+ int sad;
+
+ check_vect ();
+
+ for (i = 0; i < N; i++)
+ {
+ X[i] = i;
+ Y[i] = N - i;
+ __asm__ volatile ("");
+ }
+
+ sad = foo (N);
+ if (sad != SAD)
+ abort ();
+
+ return 0;
+}
+
+/* { dg-final { scan-tree-dump-times "vect_recog_sad_pattern: detected" 1 "vect" } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+/* { dg-final { cleanup-tree-dump "vect" } } */
+
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/vect/vect-singleton_1.c b/gcc-4.9/gcc/testsuite/gcc.dg/vect/vect-singleton_1.c
new file mode 100644
index 0000000..6c2ff49
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/vect/vect-singleton_1.c
@@ -0,0 +1,38 @@
+/* PR target/59843 ICE on function taking/returning vector of one float64_t. */
+
+/* { dg-do compile } */
+/* { dg-options "-Warray-bounds -O2 -fno-inline -std=c99" } */
+
+#define TEST(BASETYPE, VECTYPE, SUFFIX) \
+ typedef BASETYPE VECTYPE \
+ __attribute__ ((__vector_size__ (sizeof (BASETYPE)))); \
+ VECTYPE \
+ test_vadd_##SUFFIX (VECTYPE a, VECTYPE b) \
+ { \
+ return a + b; \
+ } \
+ \
+ void \
+ test_##SUFFIX (BASETYPE val) \
+ { \
+ VECTYPE var = { val }; \
+ BASETYPE v0 = var[0]; \
+ BASETYPE v1 = var[1]; /* { dg-warning "index value is out of bound" } */ \
+ }
+
+TEST (double, float64x1_t, f64)
+
+/* Original bug was for above type;
+ in a nod to completeness, test other types too. */
+
+TEST (long long, int64x1_t, s64)
+
+TEST (float, float32x1_t, f32)
+
+TEST (long, longx1_t, l)
+
+TEST (int, intx1_t, i)
+
+TEST (short, int16x1_t, s16)
+
+TEST (char, int8x1_t, s8)
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/vect/vect.exp b/gcc-4.9/gcc/testsuite/gcc.dg/vect/vect.exp
index fa11e7e..e8d866b 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/vect/vect.exp
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/vect/vect.exp
@@ -18,6 +18,7 @@
# Load support procs.
load_lib gcc-dg.exp
+load_lib clearcap.exp
# Set up flags used for tests that don't specify options.
global DEFAULT_VECTCFLAGS
@@ -41,30 +42,9 @@ if ![check_vect_support_and_set_flags] {
# These flags are used for all targets.
lappend DEFAULT_VECTCFLAGS "-ftree-vectorize" "-fno-vect-cost-model" "-fno-common"
-# If the linker used understands -M <mapfile>, pass it to clear hardware
-# capabilities set by the Sun assembler.
-# Try mapfile syntax v2 first which is the only way to clear hwcap_2 flags.
-set clearcap_ldflags "-Wl,-M,$srcdir/gcc.target/i386/clearcapv2.map"
-
-if ![check_no_compiler_messages mapfilev2 executable {
- int main (void) { return 0; }
-} $clearcap_ldflags ] {
- # If this doesn't work, fall back to the less capable v1 syntax.
- set clearcap_ldflags "-Wl,-M,$srcdir/gcc.target/i386/clearcap.map"
-
- if ![check_no_compiler_messages mapfile executable {
- int main (void) { return 0; }
- } $clearcap_ldflags ] {
- unset clearcap_ldflags
- }
-}
-
-if [info exists clearcap_ldflags] {
- lappend DEFAULT_VECTCFLAGS $clearcap_ldflags
-}
-
# Initialize `dg'.
dg-init
+clearcap-init
global VEC_FLAGS
set VEC_FLAGS $DEFAULT_VECTCFLAGS
@@ -308,4 +288,5 @@ dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/no-tree-sra-bb-slp-*.\[cS\]]
set dg-do-what-default ${save-dg-do-what-default}
# All done.
+clearcap-finish
dg-finish
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/wself-assign-1.c b/gcc-4.9/gcc/testsuite/gcc.dg/wself-assign-1.c
new file mode 100644
index 0000000..19324a6
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/wself-assign-1.c
@@ -0,0 +1,27 @@
+/* Test the self-assignemnt detection and warning. */
+/* { dg-do compile } */
+/* { dg-options "-Wself-assign" } */
+
+struct Bar {
+ int b_;
+ int c_;
+};
+
+int g;
+
+int main()
+{
+ struct Bar *bar;
+ int x = x; /* { dg-warning "assigned to itself" } */
+ static int y;
+ struct Bar b_array[5];
+
+ b_array[x+g].b_ = b_array[x+g].b_; /* { dg-warning "assigned to itself" } */
+ g = g; /* { dg-warning "assigned to itself" } */
+ y = y; /* { dg-warning "assigned to itself" } */
+ bar->b_ = bar->b_; /* { dg-warning "assigned to itself" } */
+ x += 0; /* should not warn */
+ y -= 0; /* should not warn */
+ x /= x; /* should not warn */
+ y *= y; /* should not warn */
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/wself-assign-2.c b/gcc-4.9/gcc/testsuite/gcc.dg/wself-assign-2.c
new file mode 100644
index 0000000..d0f69cb
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/wself-assign-2.c
@@ -0,0 +1,24 @@
+/* Test how self-assignment detection handles constant-folding happening */
+/* when parsing the RHS or the initializer. */
+/* { dg-do compile } */
+/* { dg-options "-Wself-assign" } */
+
+struct Bar {
+ int b_;
+ float c_;
+};
+
+int g;
+
+int main()
+{
+ struct Bar *bar;
+ int x = x - 0; /* should not warn */
+ static int y;
+ struct Bar b_array[5];
+
+ b_array[x+g].b_ = b_array[x+g].b_ * 1; /* should no warn */
+ g = g + 0; /* should not warn */
+ y = y / 1; /* should not warn */
+ bar->b_ = bar->b_ - 0; /* should not warn */
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.misc-tests/help.exp b/gcc-4.9/gcc/testsuite/gcc.misc-tests/help.exp
index e18912c..74f7eeb 100644
--- a/gcc-4.9/gcc/testsuite/gcc.misc-tests/help.exp
+++ b/gcc-4.9/gcc/testsuite/gcc.misc-tests/help.exp
@@ -55,7 +55,7 @@ check_for_options c "--help=target,optimizers" "" "" ""
check_for_options c "--help=warnings,^joined,^undocumented" "" "" ""
check_for_options c "-Q -O2 --help=optimizers" {
-O
--ftree-loop-vectorize[^\n]*disabled
+-ftree-loop-vectorize[^\n]*enabled
} " -g " ""
check_for_options c "-Q -O3 --help=optimizers" {
-O
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/aapcs64/type-def.h b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/aapcs64/type-def.h
index a95d06a..07e56ff 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/aapcs64/type-def.h
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/aapcs64/type-def.h
@@ -34,6 +34,13 @@ struct hfa_fx2_t
float b;
};
+struct hfa_fx3_t
+{
+ float a;
+ float b;
+ float c;
+};
+
struct hfa_dx2_t
{
double a;
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-13.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-13.c
new file mode 100644
index 0000000..ae1e3ec
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-13.c
@@ -0,0 +1,59 @@
+/* Test AAPCS64 layout and __builtin_va_start.
+
+ Pass named HFA/HVA argument on stack. */
+
+/* { dg-do run { target aarch64*-*-* } } */
+
+#ifndef IN_FRAMEWORK
+#define AAPCS64_TEST_STDARG
+#define TESTFILE "va_arg-13.c"
+
+struct float_float_t
+{
+ float a;
+ float b;
+} float_float;
+
+union float_int_t
+{
+ float b8;
+ int b5;
+} float_int;
+
+#define HAS_DATA_INIT_FUNC
+void
+init_data ()
+{
+ float_float.a = 1.2f;
+ float_float.b = 2.2f;
+
+ float_int.b8 = 4983.80f;
+}
+
+#include "abitest.h"
+#else
+ ARG (float, 1.0f, S0, 0)
+ ARG (float, 2.0f, S1, 1)
+ ARG (float, 3.0f, S2, 2)
+ ARG (float, 4.0f, S3, 3)
+ ARG (float, 5.0f, S4, 4)
+ ARG (float, 6.0f, S5, 5)
+ ARG (float, 7.0f, S6, 6)
+ ARG (struct float_float_t, float_float, STACK, 7)
+ ARG (int, 9, W0, 8)
+ ARG (int, 10, W1, 9)
+ ARG (int, 11, W2, 10)
+ ARG (int, 12, W3, 11)
+ ARG (int, 13, W4, 12)
+ ARG (int, 14, W5, 13)
+ ARG (int, 15, W6, LAST_NAMED_ARG_ID)
+ DOTS
+ /* Note on the reason of using 'X7' instead of 'W7' here:
+ Using 'X7' makes sure the test works in the big-endian mode.
+ According to PCS rules B.4 and C.10, the size of float_int is rounded
+ to 8 bytes and prepared in the register X7 as if loaded via LDR from
+ the memory, with the content of the other 4 bytes unspecified. The
+ test framework will only compare the 4 relavent bytes. */
+ ANON (union float_int_t, float_int, X7, 15)
+ LAST_ANON (long long, 12683143434LL, STACK + 8, 16)
+#endif
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-14.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-14.c
new file mode 100644
index 0000000..91080d5
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-14.c
@@ -0,0 +1,35 @@
+/* Test AAPCS64 layout and __builtin_va_start.
+
+ Pass named HFA/HVA argument on stack. */
+
+/* { dg-do run { target aarch64*-*-* } } */
+
+#ifndef IN_FRAMEWORK
+#define AAPCS64_TEST_STDARG
+#define TESTFILE "va_arg-14.c"
+#include "type-def.h"
+
+struct hfa_fx2_t hfa_fx2 = {1.2f, 2.2f};
+struct hfa_fx3_t hfa_fx3 = {3.2f, 4.2f, 5.2f};
+vf4_t float32x4 = {6.2f, 7.2f, 8.2f, 9.2f};
+vf4_t float32x4_2 = {10.2f, 11.2f, 12.2f, 13.2f};
+
+#include "abitest.h"
+#else
+ ARG (float, 1.0f, S0, 0)
+ ARG (float, 2.0f, S1, 1)
+ ARG (float, 3.0f, S2, 2)
+ ARG (float, 4.0f, S3, 3)
+ ARG (float, 5.0f, S4, 4)
+ ARG (float, 6.0f, S5, 5)
+ ARG (float, 7.0f, S6, 6)
+ ARG (struct hfa_fx3_t, hfa_fx3, STACK, 7)
+ /* Previous argument size has been rounded up to the nearest multiple of
+ 8 bytes. */
+ ARG (struct hfa_fx2_t, hfa_fx2, STACK + 16, 8)
+ /* NSAA is rounded up to the nearest natural alignment of float32x4. */
+ ARG (vf4_t, float32x4, STACK + 32, 9)
+ ARG (vf4_t, float32x4_2, STACK + 48, LAST_NAMED_ARG_ID)
+ DOTS
+ LAST_ANON (double, 123456789.987, STACK + 64, 11)
+#endif
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-15.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-15.c
new file mode 100644
index 0000000..d8fdb32
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-15.c
@@ -0,0 +1,39 @@
+/* Test AAPCS64 layout and __builtin_va_start.
+
+ Pass named __128int argument on stack. */
+
+/* { dg-do run { target aarch64*-*-* } } */
+
+#ifndef IN_FRAMEWORK
+#define AAPCS64_TEST_STDARG
+#define TESTFILE "va_arg-15.c"
+#include "type-def.h"
+
+union int128_t qword;
+
+#define HAS_DATA_INIT_FUNC
+void
+init_data ()
+{
+ /* Init signed quad-word integer. */
+ qword.l64 = 0xfdb9753102468aceLL;
+ qword.h64 = 0xeca8642013579bdfLL;
+}
+
+#include "abitest.h"
+#else
+ ARG (int, 1, W0, 0)
+ ARG (int, 2, W1, 1)
+ ARG (int, 3, W2, 2)
+ ARG (int, 4, W3, 3)
+ ARG (int, 5, W4, 4)
+ ARG (int, 6, W5, 5)
+ ARG (int, 7, W6, 6)
+ ARG (__int128, qword.i, STACK, LAST_NAMED_ARG_ID)
+ DOTS
+#ifndef __AAPCS64_BIG_ENDIAN__
+ LAST_ANON (int, 8, STACK + 16, 8)
+#else
+ LAST_ANON (int, 8, STACK + 20, 8)
+#endif
+#endif
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/pr61325.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/pr61325.c
new file mode 100644
index 0000000..45ece53
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/pr61325.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+typedef unsigned int wchar_t;
+typedef long unsigned int size_t;
+
+size_t
+wcstombs(char *s , const wchar_t *pwcs , size_t n)
+{
+ int count = 0;
+
+ if (n != 0) {
+ do {
+ if ((*s++ = (char) *pwcs++) == 0)
+ break;
+ count++;
+ } while (--n != 0);
+ }
+ return count;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/scalar_intrinsics.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/scalar_intrinsics.c
index aa041cc..782f6d1 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/scalar_intrinsics.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/scalar_intrinsics.c
@@ -387,7 +387,7 @@ test_vqdmlalh_s16 (int32x1_t a, int16x1_t b, int16x1_t c)
/* { dg-final { scan-assembler-times "\\tsqdmlal\\ts\[0-9\]+, h\[0-9\]+, v" 1 } } */
int32x1_t
-test_vqdmlalh_lane_s16 (int32x1_t a, int16x1_t b, int16x8_t c)
+test_vqdmlalh_lane_s16 (int32x1_t a, int16x1_t b, int16x4_t c)
{
return vqdmlalh_lane_s16 (a, b, c, 3);
}
@@ -403,7 +403,7 @@ test_vqdmlals_s32 (int64x1_t a, int32x1_t b, int32x1_t c)
/* { dg-final { scan-assembler-times "\\tsqdmlal\\td\[0-9\]+, s\[0-9\]+, v" 1 } } */
int64x1_t
-test_vqdmlals_lane_s32 (int64x1_t a, int32x1_t b, int32x4_t c)
+test_vqdmlals_lane_s32 (int64x1_t a, int32x1_t b, int32x2_t c)
{
return vqdmlals_lane_s32 (a, b, c, 1);
}
@@ -419,7 +419,7 @@ test_vqdmlslh_s16 (int32x1_t a, int16x1_t b, int16x1_t c)
/* { dg-final { scan-assembler-times "\\tsqdmlsl\\ts\[0-9\]+, h\[0-9\]+, v" 1 } } */
int32x1_t
-test_vqdmlslh_lane_s16 (int32x1_t a, int16x1_t b, int16x8_t c)
+test_vqdmlslh_lane_s16 (int32x1_t a, int16x1_t b, int16x4_t c)
{
return vqdmlslh_lane_s16 (a, b, c, 3);
}
@@ -435,7 +435,7 @@ test_vqdmlsls_s32 (int64x1_t a, int32x1_t b, int32x1_t c)
/* { dg-final { scan-assembler-times "\\tsqdmlsl\\td\[0-9\]+, s\[0-9\]+, v" 1 } } */
int64x1_t
-test_vqdmlsls_lane_s32 (int64x1_t a, int32x1_t b, int32x4_t c)
+test_vqdmlsls_lane_s32 (int64x1_t a, int32x1_t b, int32x2_t c)
{
return vqdmlsls_lane_s32 (a, b, c, 1);
}
@@ -451,7 +451,7 @@ test_vqdmulhh_s16 (int16x1_t a, int16x1_t b)
/* { dg-final { scan-assembler-times "\\tsqdmulh\\th\[0-9\]+, h\[0-9\]+, v" 1 } } */
int16x1_t
-test_vqdmulhh_lane_s16 (int16x1_t a, int16x8_t b)
+test_vqdmulhh_lane_s16 (int16x1_t a, int16x4_t b)
{
return vqdmulhh_lane_s16 (a, b, 3);
}
@@ -467,9 +467,9 @@ test_vqdmulhs_s32 (int32x1_t a, int32x1_t b)
/* { dg-final { scan-assembler-times "\\tsqdmulh\\ts\[0-9\]+, s\[0-9\]+, v" 1 } } */
int32x1_t
-test_vqdmulhs_lane_s32 (int32x1_t a, int32x4_t b)
+test_vqdmulhs_lane_s32 (int32x1_t a, int32x2_t b)
{
- return vqdmulhs_lane_s32 (a, b, 3);
+ return vqdmulhs_lane_s32 (a, b, 1);
}
/* { dg-final { scan-assembler-times "\\tsqdmull\\ts\[0-9\]+, h\[0-9\]+, h\[0-9\]+" 1 } } */
@@ -483,7 +483,7 @@ test_vqdmullh_s16 (int16x1_t a, int16x1_t b)
/* { dg-final { scan-assembler-times "\\tsqdmull\\ts\[0-9\]+, h\[0-9\]+, v" 1 } } */
int32x1_t
-test_vqdmullh_lane_s16 (int16x1_t a, int16x8_t b)
+test_vqdmullh_lane_s16 (int16x1_t a, int16x4_t b)
{
return vqdmullh_lane_s16 (a, b, 3);
}
@@ -499,7 +499,7 @@ test_vqdmulls_s32 (int32x1_t a, int32x1_t b)
/* { dg-final { scan-assembler-times "\\tsqdmull\\td\[0-9\]+, s\[0-9\]+, v" 1 } } */
int64x1_t
-test_vqdmulls_lane_s32 (int32x1_t a, int32x4_t b)
+test_vqdmulls_lane_s32 (int32x1_t a, int32x2_t b)
{
return vqdmulls_lane_s32 (a, b, 1);
}
@@ -515,9 +515,9 @@ test_vqrdmulhh_s16 (int16x1_t a, int16x1_t b)
/* { dg-final { scan-assembler-times "\\tsqrdmulh\\th\[0-9\]+, h\[0-9\]+, v" 1 } } */
int16x1_t
-test_vqrdmulhh_lane_s16 (int16x1_t a, int16x8_t b)
+test_vqrdmulhh_lane_s16 (int16x1_t a, int16x4_t b)
{
- return vqrdmulhh_lane_s16 (a, b, 6);
+ return vqrdmulhh_lane_s16 (a, b, 3);
}
/* { dg-final { scan-assembler-times "\\tsqrdmulh\\ts\[0-9\]+, s\[0-9\]+, s\[0-9\]+" 1 } } */
@@ -531,9 +531,9 @@ test_vqrdmulhs_s32 (int32x1_t a, int32x1_t b)
/* { dg-final { scan-assembler-times "\\tsqrdmulh\\ts\[0-9\]+, s\[0-9\]+, v" 1 } } */
int32x1_t
-test_vqrdmulhs_lane_s32 (int32x1_t a, int32x4_t b)
+test_vqrdmulhs_lane_s32 (int32x1_t a, int32x2_t b)
{
- return vqrdmulhs_lane_s32 (a, b, 2);
+ return vqrdmulhs_lane_s32 (a, b, 1);
}
/* { dg-final { scan-assembler-times "\\tsuqadd\\tb\[0-9\]+" 1 } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vector_intrinsics.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vector_intrinsics.c
index affb8a8..52b0496 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vector_intrinsics.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vector_intrinsics.c
@@ -1,7 +1,7 @@
/* { dg-do compile } */
/* { dg-options "-O2" } */
-#include "../../../config/aarch64/arm_neon.h"
+#include "arm_neon.h"
/* { dg-final { scan-assembler-times "\\tfmax\\tv\[0-9\]+\.2s, v\[0-9\].2s, v\[0-9\].2s" 1 } } */
@@ -305,7 +305,7 @@ test_vqdmlal_high_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c)
/* { dg-final { scan-assembler-times "\\tsqdmlal2\\tv\[0-9\]+\.4s, v\[0-9\]+\.8h, v\[0-9\]+\.h" 3 } } */
int32x4_t
-test_vqdmlal_high_lane_s16 (int32x4_t a, int16x8_t b, int16x8_t c)
+test_vqdmlal_high_lane_s16 (int32x4_t a, int16x8_t b, int16x4_t c)
{
return vqdmlal_high_lane_s16 (a, b, c, 3);
}
@@ -361,7 +361,7 @@ test_vqdmlal_high_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c)
/* { dg-final { scan-assembler-times "\\tsqdmlal2\\tv\[0-9\]+\.2d, v\[0-9\]+\.4s, v\[0-9\]+\.s" 3 } } */
int64x2_t
-test_vqdmlal_high_lane_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c)
+test_vqdmlal_high_lane_s32 (int64x2_t __a, int32x4_t __b, int32x2_t __c)
{
return vqdmlal_high_lane_s32 (__a, __b, __c, 1);
}
@@ -417,7 +417,7 @@ test_vqdmlsl_high_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c)
/* { dg-final { scan-assembler-times "\\tsqdmlsl2\\tv\[0-9\]+\.4s, v\[0-9\]+\.8h, v\[0-9\]+\.h" 3 } } */
int32x4_t
-test_vqdmlsl_high_lane_s16 (int32x4_t a, int16x8_t b, int16x8_t c)
+test_vqdmlsl_high_lane_s16 (int32x4_t a, int16x8_t b, int16x4_t c)
{
return vqdmlsl_high_lane_s16 (a, b, c, 3);
}
@@ -473,7 +473,7 @@ test_vqdmlsl_high_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c)
/* { dg-final { scan-assembler-times "\\tsqdmlsl2\\tv\[0-9\]+\.2d, v\[0-9\]+\.4s, v\[0-9\]+\.s" 3 } } */
int64x2_t
-test_vqdmlsl_high_lane_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c)
+test_vqdmlsl_high_lane_s32 (int64x2_t __a, int32x4_t __b, int32x2_t __c)
{
return vqdmlsl_high_lane_s32 (__a, __b, __c, 1);
}
@@ -529,7 +529,7 @@ test_vqdmull_high_s16 (int16x8_t __a, int16x8_t __b)
/* { dg-final { scan-assembler-times "\\tsqdmull2\\tv\[0-9\]+\.4s, v\[0-9\]+\.8h, v\[0-9\]+\.h" 3 } } */
int32x4_t
-test_vqdmull_high_lane_s16 (int16x8_t a, int16x8_t b)
+test_vqdmull_high_lane_s16 (int16x8_t a, int16x4_t b)
{
return vqdmull_high_lane_s16 (a, b, 3);
}
@@ -585,7 +585,7 @@ test_vqdmull_high_s32 (int32x4_t __a, int32x4_t __b)
/* { dg-final { scan-assembler-times "\\tsqdmull2\\tv\[0-9\]+\.2d, v\[0-9\]+\.4s, v\[0-9\]+\.s" 3 } } */
int64x2_t
-test_vqdmull_high_lane_s32 (int32x4_t __a, int32x4_t __b)
+test_vqdmull_high_lane_s32 (int32x4_t __a, int32x2_t __b)
{
return vqdmull_high_lane_s32 (__a, __b, 1);
}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlal_high_lane_s16.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlal_high_lane_s16.c
new file mode 100644
index 0000000..1388c3b
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlal_high_lane_s16.c
@@ -0,0 +1,15 @@
+/* Test the vqdmlal_high_lane_s16 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int32x4_t
+t_vqdmlal_high_lane_s16 (int32x4_t a, int16x8_t b, int16x4_t c)
+{
+ return vqdmlal_high_lane_s16 (a, b, c, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqdmlal2\[ \t\]+\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.8\[hH\], ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlal_high_lane_s32.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlal_high_lane_s32.c
new file mode 100644
index 0000000..f90387d
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlal_high_lane_s32.c
@@ -0,0 +1,15 @@
+/* Test the vqdmlal_high_lane_s32 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int64x2_t
+t_vqdmlal_high_lane_s32 (int64x2_t a, int32x4_t b, int32x2_t c)
+{
+ return vqdmlal_high_lane_s32 (a, b, c, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqdmlal2\[ \t\]+\[vV\]\[0-9\]+\.2\[dD\], ?\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlal_high_laneq_s16.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlal_high_laneq_s16.c
new file mode 100644
index 0000000..5399ce9
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlal_high_laneq_s16.c
@@ -0,0 +1,15 @@
+/* Test the vqdmlal_high_laneq_s16 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int32x4_t
+t_vqdmlal_high_laneq_s16 (int32x4_t a, int16x8_t b, int16x8_t c)
+{
+ return vqdmlal_high_laneq_s16 (a, b, c, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqdmlal2\[ \t\]+\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.8\[hH\], ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlal_high_laneq_s32.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlal_high_laneq_s32.c
new file mode 100644
index 0000000..e4b5558
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlal_high_laneq_s32.c
@@ -0,0 +1,15 @@
+/* Test the vqdmlal_high_laneq_s32 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int64x2_t
+t_vqdmlal_high_laneq_s32 (int64x2_t a, int32x4_t b, int32x4_t c)
+{
+ return vqdmlal_high_laneq_s32 (a, b, c, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqdmlal2\[ \t\]+\[vV\]\[0-9\]+\.2\[dD\], ?\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlal_lane_s16.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlal_lane_s16.c
new file mode 100644
index 0000000..7e60c82
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlal_lane_s16.c
@@ -0,0 +1,15 @@
+/* Test the vqdmlal_lane_s16 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int32x4_t
+t_vqdmlal_lane_s16 (int32x4_t a, int16x4_t b, int16x4_t c)
+{
+ return vqdmlal_lane_s16 (a, b, c, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqdmlal\[ \t\]+\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.4\[hH\], ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlal_lane_s32.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlal_lane_s32.c
new file mode 100644
index 0000000..c0f508d
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlal_lane_s32.c
@@ -0,0 +1,15 @@
+/* Test the vqdmlal_lane_s32 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int64x2_t
+t_vqdmlal_lane_s32 (int64x2_t a, int32x2_t b, int32x2_t c)
+{
+ return vqdmlal_lane_s32 (a, b, c, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqdmlal\[ \t\]+\[vV\]\[0-9\]+\.2\[dD\], ?\[vV\]\[0-9\]+\.2\[sS\], ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlal_laneq_s16.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlal_laneq_s16.c
new file mode 100644
index 0000000..9bf1304
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlal_laneq_s16.c
@@ -0,0 +1,15 @@
+/* Test the vqdmlal_laneq_s16 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int32x4_t
+t_vqdmlal_laneq_s16 (int32x4_t a, int16x4_t b, int16x8_t c)
+{
+ return vqdmlal_laneq_s16 (a, b, c, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqdmlal\[ \t\]+\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.4\[hH\], ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlal_laneq_s32.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlal_laneq_s32.c
new file mode 100644
index 0000000..5fd9c56
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlal_laneq_s32.c
@@ -0,0 +1,15 @@
+/* Test the vqdmlal_laneq_s32 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int64x2_t
+t_vqdmlal_laneq_s32 (int64x2_t a, int32x2_t b, int32x4_t c)
+{
+ return vqdmlal_laneq_s32 (a, b, c, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqdmlal\[ \t\]+\[vV\]\[0-9\]+\.2\[dD\], ?\[vV\]\[0-9\]+\.2\[sS\], ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlalh_lane_s16.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlalh_lane_s16.c
new file mode 100644
index 0000000..83f5af5
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlalh_lane_s16.c
@@ -0,0 +1,15 @@
+/* Test the vqdmlalh_lane_s16 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int32x1_t
+t_vqdmlalh_lane_s16 (int32x1_t a, int16x1_t b, int16x4_t c)
+{
+ return vqdmlalh_lane_s16 (a, b, c, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqdmlal\[ \t\]+\[sS\]\[0-9\]+, ?\[hH\]\[0-9\]+, ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlals_lane_s32.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlals_lane_s32.c
new file mode 100644
index 0000000..ef94e95
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlals_lane_s32.c
@@ -0,0 +1,15 @@
+/* Test the vqdmlals_lane_s32 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int64x1_t
+t_vqdmlals_lane_s32 (int64x1_t a, int32x1_t b, int32x2_t c)
+{
+ return vqdmlals_lane_s32 (a, b, c, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqdmlal\[ \t\]+\[dD\]\[0-9\]+, ?\[sS\]\[0-9\]+, ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlsl_high_lane_s16.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlsl_high_lane_s16.c
new file mode 100644
index 0000000..276a1a2
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlsl_high_lane_s16.c
@@ -0,0 +1,15 @@
+/* Test the vqdmlsl_high_lane_s16 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int32x4_t
+t_vqdmlsl_high_lane_s16 (int32x4_t a, int16x8_t b, int16x4_t c)
+{
+ return vqdmlsl_high_lane_s16 (a, b, c, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqdmlsl2\[ \t\]+\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.8\[hH\], ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlsl_high_lane_s32.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlsl_high_lane_s32.c
new file mode 100644
index 0000000..2ae58ef
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlsl_high_lane_s32.c
@@ -0,0 +1,15 @@
+/* Test the vqdmlsl_high_lane_s32 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int64x2_t
+t_vqdmlsl_high_lane_s32 (int64x2_t a, int32x4_t b, int32x2_t c)
+{
+ return vqdmlsl_high_lane_s32 (a, b, c, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqdmlsl2\[ \t\]+\[vV\]\[0-9\]+\.2\[dD\], ?\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlsl_high_laneq_s16.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlsl_high_laneq_s16.c
new file mode 100644
index 0000000..1db5db4
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlsl_high_laneq_s16.c
@@ -0,0 +1,15 @@
+/* Test the vqdmlsl_high_laneq_s16 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int32x4_t
+t_vqdmlsl_high_laneq_s16 (int32x4_t a, int16x8_t b, int16x8_t c)
+{
+ return vqdmlsl_high_laneq_s16 (a, b, c, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqdmlsl2\[ \t\]+\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.8\[hH\], ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlsl_high_laneq_s32.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlsl_high_laneq_s32.c
new file mode 100644
index 0000000..3a72a7b
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlsl_high_laneq_s32.c
@@ -0,0 +1,15 @@
+/* Test the vqdmlsl_high_laneq_s32 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int64x2_t
+t_vqdmlsl_high_laneq_s32 (int64x2_t a, int32x4_t b, int32x4_t c)
+{
+ return vqdmlsl_high_laneq_s32 (a, b, c, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqdmlsl2\[ \t\]+\[vV\]\[0-9\]+\.2\[dD\], ?\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlsl_lane_s16.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlsl_lane_s16.c
new file mode 100644
index 0000000..0535378
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlsl_lane_s16.c
@@ -0,0 +1,15 @@
+/* Test the vqdmlsl_lane_s16 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int32x4_t
+t_vqdmlsl_lane_s16 (int32x4_t a, int16x4_t b, int16x4_t c)
+{
+ return vqdmlsl_lane_s16 (a, b, c, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqdmlsl\[ \t\]+\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.4\[hH\], ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlsl_lane_s32.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlsl_lane_s32.c
new file mode 100644
index 0000000..b52e51e
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlsl_lane_s32.c
@@ -0,0 +1,15 @@
+/* Test the vqdmlsl_lane_s32 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int64x2_t
+t_vqdmlsl_lane_s32 (int64x2_t a, int32x2_t b, int32x2_t c)
+{
+ return vqdmlsl_lane_s32 (a, b, c, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqdmlsl\[ \t\]+\[vV\]\[0-9\]+\.2\[dD\], ?\[vV\]\[0-9\]+\.2\[sS\], ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlsl_laneq_s32.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlsl_laneq_s32.c
new file mode 100644
index 0000000..7009a35
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlsl_laneq_s32.c
@@ -0,0 +1,15 @@
+/* Test the vqdmlsl_laneq_s32 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int64x2_t
+t_vqdmlsl_lane_s32 (int64x2_t a, int32x2_t b, int32x4_t c)
+{
+ return vqdmlsl_laneq_s32 (a, b, c, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqdmlsl\[ \t\]+\[vV\]\[0-9\]+\.2\[dD\], ?\[vV\]\[0-9\]+\.2\[sS\], ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlslh_lane_s16.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlslh_lane_s16.c
new file mode 100644
index 0000000..056dfbb
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlslh_lane_s16.c
@@ -0,0 +1,15 @@
+/* Test the vqdmlslh_lane_s16 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int32x1_t
+t_vqdmlslh_lane_s16 (int32x1_t a, int16x1_t b, int16x4_t c)
+{
+ return vqdmlslh_lane_s16 (a, b, c, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqdmlsl\[ \t\]+\[sS\]\[0-9\]+, ?\[hH\]\[0-9\]+, ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlsls_lane_s32.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlsls_lane_s32.c
new file mode 100644
index 0000000..9e351bc
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmlsls_lane_s32.c
@@ -0,0 +1,15 @@
+/* Test the vqdmlsls_lane_s32 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int64x1_t
+t_vqdmlsls_lane_s32 (int64x1_t a, int32x1_t b, int32x2_t c)
+{
+ return vqdmlsls_lane_s32 (a, b, c, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqdmlsl\[ \t\]+\[dD\]\[0-9\]+, ?\[sS\]\[0-9\]+, ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmulh_laneq_s16.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmulh_laneq_s16.c
new file mode 100644
index 0000000..d3c699b
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmulh_laneq_s16.c
@@ -0,0 +1,15 @@
+/* Test the vqdmulh_laneq_s16 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int16x4_t
+t_vqdmulh_laneq_s16 (int16x4_t a, int16x8_t b)
+{
+ return vqdmulh_laneq_s16 (a, b, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqdmulh\[ \t\]+\[vV\]\[0-9\]+\.4\[hH\], ?\[vV\]\[0-9\]+\.4\[hH\], ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmulh_laneq_s32.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmulh_laneq_s32.c
new file mode 100644
index 0000000..c6202ce
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmulh_laneq_s32.c
@@ -0,0 +1,15 @@
+/* Test the vqdmulh_laneq_s32 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int32x2_t
+t_vqdmulh_laneq_s32 (int32x2_t a, int32x4_t b)
+{
+ return vqdmulh_laneq_s32 (a, b, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqdmulh\[ \t\]+\[vV\]\[0-9\]+\.2\[sS\], ?\[vV\]\[0-9\]+\.2\[sS\], ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmulhh_lane_s16.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmulhh_lane_s16.c
new file mode 100644
index 0000000..7635851
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmulhh_lane_s16.c
@@ -0,0 +1,36 @@
+/* Test the vqdmulhh_lane_s16 AArch64 SIMD intrinsic. */
+
+/* { dg-do run } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+#include <stdio.h>
+
+extern void abort (void);
+
+int
+main (void)
+{
+ int16_t arg1;
+ int16x4_t arg2;
+ int16_t result;
+ int16_t actual;
+ int16_t expected;
+
+ arg1 = -32768;
+ arg2 = vcreate_s16 (0x0000ffff2489e398ULL);
+ actual = vqdmulhh_lane_s16 (arg1, arg2, 2);
+ expected = 1;
+
+ if (expected != actual)
+ {
+ fprintf (stderr, "Expected: %xd, got %xd\n", expected, actual);
+ abort ();
+ }
+
+ return 0;
+}
+
+
+/* { dg-final { scan-assembler-times "sqdmulh\[ \t\]+\[hH\]\[0-9\]+, ?\[hH\]\[0-9\]+, ?\[vV\]\[0-9\]+\.\[hH\]\\\[2\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmulhq_laneq_s16.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmulhq_laneq_s16.c
new file mode 100644
index 0000000..809c85a
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmulhq_laneq_s16.c
@@ -0,0 +1,15 @@
+/* Test the vqdmulhq_laneq_s16 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int16x8_t
+t_vqdmulhq_laneq_s16 (int16x8_t a, int16x8_t b)
+{
+ return vqdmulhq_laneq_s16 (a, b, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqdmulh\[ \t\]+\[vV\]\[0-9\]+\.8\[hH\], ?\[vV\]\[0-9\]+\.8\[hH\], ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmulhq_laneq_s32.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmulhq_laneq_s32.c
new file mode 100644
index 0000000..d375fe8
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmulhq_laneq_s32.c
@@ -0,0 +1,15 @@
+/* Test the vqdmulhq_laneq_s32 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int32x4_t
+t_vqdmulhq_laneq_s32 (int32x4_t a, int32x4_t b)
+{
+ return vqdmulhq_laneq_s32 (a, b, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqdmulh\[ \t\]+\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmulhs_lane_s32.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmulhs_lane_s32.c
new file mode 100644
index 0000000..9c27f5f
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmulhs_lane_s32.c
@@ -0,0 +1,34 @@
+/* Test the vqdmulhs_lane_s32 AArch64 SIMD intrinsic. */
+
+/* { dg-do run } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+#include <stdio.h>
+
+extern void abort (void);
+
+int
+main (void)
+{
+ int32_t arg1;
+ int32x2_t arg2;
+ int32_t result;
+ int32_t actual;
+ int32_t expected;
+
+ arg1 = 57336;
+ arg2 = vcreate_s32 (0x55897fff7fff0000ULL);
+ actual = vqdmulhs_lane_s32 (arg1, arg2, 0);
+ expected = 57334;
+
+ if (expected != actual)
+ {
+ fprintf (stderr, "Expected: %xd, got %xd\n", expected, actual);
+ abort ();
+ }
+
+ return 0;
+}
+/* { dg-final { scan-assembler-times "sqdmulh\[ \t\]+\[sS\]\[0-9\]+, ?\[sS\]\[0-9\]+, ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmull_high_lane_s16.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmull_high_lane_s16.c
new file mode 100644
index 0000000..0af320e
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmull_high_lane_s16.c
@@ -0,0 +1,15 @@
+/* Test the vqdmull_high_lane_s16 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int32x4_t
+t_vqdmull_high_lane_s16 (int16x8_t a, int16x4_t b)
+{
+ return vqdmull_high_lane_s16 (a, b, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqdmull2\[ \t\]+\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.8\[hH\], ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmull_high_lane_s32.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmull_high_lane_s32.c
new file mode 100644
index 0000000..583e8a1
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmull_high_lane_s32.c
@@ -0,0 +1,15 @@
+/* Test the vqdmull_high_lane_s32 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int64x2_t
+t_vqdmull_high_lane_s32 (int32x4_t a, int32x2_t b)
+{
+ return vqdmull_high_lane_s32 (a, b, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqdmull2\[ \t\]+\[vV\]\[0-9\]+\.2\[dD\], ?\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmull_high_laneq_s16.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmull_high_laneq_s16.c
new file mode 100644
index 0000000..dcfd14c
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmull_high_laneq_s16.c
@@ -0,0 +1,15 @@
+/* Test the vqdmull_high_laneq_s16 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int32x4_t
+t_vqdmull_high_laneq_s16 (int16x8_t a, int16x8_t b)
+{
+ return vqdmull_high_laneq_s16 (a, b, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqdmull2\[ \t\]+\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.8\[hH\], ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmull_high_laneq_s32.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmull_high_laneq_s32.c
new file mode 100644
index 0000000..3e8b652
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmull_high_laneq_s32.c
@@ -0,0 +1,15 @@
+/* Test the vqdmull_high_laneq_s32 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int64x2_t
+t_vqdmull_high_laneq_s32 (int32x4_t a, int32x4_t b)
+{
+ return vqdmull_high_laneq_s32 (a, b, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqdmull2\[ \t\]+\[vV\]\[0-9\]+\.2\[dD\], ?\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmull_lane_s16.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmull_lane_s16.c
new file mode 100644
index 0000000..695d4e3
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmull_lane_s16.c
@@ -0,0 +1,15 @@
+/* Test the vqdmull_lane_s16 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int32x4_t
+t_vqdmull_lane_s16 (int16x4_t a, int16x4_t b)
+{
+ return vqdmull_lane_s16 (a, b, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqdmull\[ \t\]+\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.4\[hH\], ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmull_lane_s32.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmull_lane_s32.c
new file mode 100644
index 0000000..e6a02b5
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmull_lane_s32.c
@@ -0,0 +1,15 @@
+/* Test the vqdmull_lane_s32 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int64x2_t
+t_vqdmull_lane_s32 (int32x2_t a, int32x2_t b)
+{
+ return vqdmull_lane_s32 (a, b, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqdmull\[ \t\]+\[vV\]\[0-9\]+\.2\[dD\], ?\[vV\]\[0-9\]+\.2\[sS\], ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmull_laneq_s16.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmull_laneq_s16.c
new file mode 100644
index 0000000..ba761b2
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmull_laneq_s16.c
@@ -0,0 +1,15 @@
+/* Test the vqdmull_laneq_s16 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int32x4_t
+t_vqdmull_laneq_s16 (int16x4_t a, int16x8_t b)
+{
+ return vqdmull_laneq_s16 (a, b, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqdmull\[ \t\]+\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.4\[hH\], ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmull_laneq_s32.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmull_laneq_s32.c
new file mode 100644
index 0000000..82b8e19
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmull_laneq_s32.c
@@ -0,0 +1,15 @@
+/* Test the vqdmull_laneq_s32 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int64x2_t
+t_vqdmull_laneq_s32 (int32x2_t a, int32x4_t b)
+{
+ return vqdmull_laneq_s32 (a, b, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqdmull\[ \t\]+\[vV\]\[0-9\]+\.2\[dD\], ?\[vV\]\[0-9\]+\.2\[sS\], ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmullh_lane_s16.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmullh_lane_s16.c
new file mode 100644
index 0000000..fd271e0
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmullh_lane_s16.c
@@ -0,0 +1,15 @@
+/* Test the vqdmullh_lane_s16 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int32x1_t
+t_vqdmullh_lane_s16 (int16x1_t a, int16x4_t b)
+{
+ return vqdmullh_lane_s16 (a, b, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqdmull\[ \t\]+\[sS\]\[0-9\]+, ?\[hH\]\[0-9\]+, ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmulls_lane_s32.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmulls_lane_s32.c
new file mode 100644
index 0000000..1103333
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqdmulls_lane_s32.c
@@ -0,0 +1,15 @@
+/* Test the vqdmulls_lane_s32 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int64x1_t
+t_vqdmulls_lane_s32 (int32x1_t a, int32x2_t b)
+{
+ return vqdmulls_lane_s32 (a, b, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqdmull\[ \t\]+\[dD\]\[0-9\]+, ?\[sS\]\[0-9\]+, ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqrdmulh_laneq_s16.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqrdmulh_laneq_s16.c
new file mode 100644
index 0000000..0313f1c
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqrdmulh_laneq_s16.c
@@ -0,0 +1,15 @@
+/* Test the vqrdmulh_laneq_s16 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int16x4_t
+t_vqrdmulh_laneq_s16 (int16x4_t a, int16x8_t b)
+{
+ return vqrdmulh_laneq_s16 (a, b, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqrdmulh\[ \t\]+\[vV\]\[0-9\]+\.4\[hH\], ?\[vV\]\[0-9\]+\.4\[hH\], ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqrdmulh_laneq_s32.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqrdmulh_laneq_s32.c
new file mode 100644
index 0000000..a9124ee
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqrdmulh_laneq_s32.c
@@ -0,0 +1,15 @@
+/* Test the vqrdmulh_laneq_s32 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int32x2_t
+t_vqrdmulh_laneq_s32 (int32x2_t a, int32x4_t b)
+{
+ return vqrdmulh_laneq_s32 (a, b, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqrdmulh\[ \t\]+\[vV\]\[0-9\]+\.2\[sS\], ?\[vV\]\[0-9\]+\.2\[sS\], ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqrdmulhh_lane_s16.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqrdmulhh_lane_s16.c
new file mode 100644
index 0000000..f21863a
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqrdmulhh_lane_s16.c
@@ -0,0 +1,35 @@
+/* Test the vqrdmulhh_lane_s16 AArch64 SIMD intrinsic. */
+
+/* { dg-do run } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+#include <stdio.h>
+
+extern void abort (void);
+
+int
+main (void)
+{
+ int16_t arg1;
+ int16x4_t arg2;
+ int16_t result;
+ int16_t actual;
+ int16_t expected;
+
+ arg1 = -32768;
+ arg2 = vcreate_s16 (0xd78e000005d78000ULL);
+ actual = vqrdmulhh_lane_s16 (arg1, arg2, 3);
+ expected = 10354;
+
+ if (expected != actual)
+ {
+ fprintf (stderr, "Expected: %xd, got %xd\n", expected, actual);
+ abort ();
+ }
+
+ return 0;
+}
+
+/* { dg-final { scan-assembler-times "sqrdmulh\[ \t\]+\[hH\]\[0-9\]+, ?\[hH\]\[0-9\]+, ?\[vV\]\[0-9\]+\.\[hH\]\\\[3\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqrdmulhq_laneq_s16.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqrdmulhq_laneq_s16.c
new file mode 100644
index 0000000..488e694
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqrdmulhq_laneq_s16.c
@@ -0,0 +1,15 @@
+/* Test the vqrdmulhq_laneq_s16 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int16x8_t
+t_vqrdmulhq_laneq_s16 (int16x8_t a, int16x8_t b)
+{
+ return vqrdmulhq_laneq_s16 (a, b, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqrdmulh\[ \t\]+\[vV\]\[0-9\]+\.8\[hH\], ?\[vV\]\[0-9\]+\.8\[hH\], ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqrdmulhq_laneq_s32.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqrdmulhq_laneq_s32.c
new file mode 100644
index 0000000..42519f6
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqrdmulhq_laneq_s32.c
@@ -0,0 +1,15 @@
+/* Test the vqrdmulhq_laneq_s32 AArch64 SIMD intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+
+int32x4_t
+t_vqrdmulhq_laneq_s32 (int32x4_t a, int32x4_t b)
+{
+ return vqrdmulhq_laneq_s32 (a, b, 0);
+}
+
+/* { dg-final { scan-assembler-times "sqrdmulh\[ \t\]+\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqrdmulhs_lane_s32.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqrdmulhs_lane_s32.c
new file mode 100644
index 0000000..83d2ba2
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vqrdmulhs_lane_s32.c
@@ -0,0 +1,35 @@
+/* Test the vqrdmulhs_lane_s32 AArch64 SIMD intrinsic. */
+
+/* { dg-do run } */
+/* { dg-options "-save-temps -O3 -fno-inline" } */
+
+#include "arm_neon.h"
+#include <stdio.h>
+
+extern void abort (void);
+
+int
+main (void)
+{
+ int32_t arg1;
+ int32x2_t arg2;
+ int32_t result;
+ int32_t actual;
+ int32_t expected;
+
+ arg1 = -2099281921;
+ arg2 = vcreate_s32 (0x000080007fff0000ULL);
+ actual = vqrdmulhs_lane_s32 (arg1, arg2, 1);
+ expected = -32033;
+
+ if (expected != actual)
+ {
+ fprintf (stderr, "Expected: %xd, got %xd\n", expected, actual);
+ abort ();
+ }
+
+ return 0;
+}
+
+/* { dg-final { scan-assembler-times "sqrdmulh\[ \t\]+\[sS\]\[0-9\]+, ?\[sS\]\[0-9\]+, ?\[vV\]\[0-9\]+\.\[sS\]\\\[1\\\]\n" 1 } } */
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/alpha/pr61586.c b/gcc-4.9/gcc/testsuite/gcc.target/alpha/pr61586.c
new file mode 100644
index 0000000..afb1af3
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/alpha/pr61586.c
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mieee" } */
+
+void foo (int *dimensions, double **params, int hh)
+{
+ if (params[hh])
+ ;
+ else if (dimensions[hh] > 0)
+ params[hh][0] = 1.0f;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/arm/pr48252.c b/gcc-4.9/gcc/testsuite/gcc.target/arm/pr48252.c
index 17f729b..250d5e4 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/arm/pr48252.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/arm/pr48252.c
@@ -15,7 +15,6 @@ int main(void)
uint8x8x2_t vd1, vd2;
union {uint8x8_t v; uint8_t buf[8];} d1, d2, d3, d4;
int i;
- uint8_t odd, even;
vd1 = vzip_u8(v1, vdup_n_u8(0));
vd2 = vzip_u8(v2, vdup_n_u8(0));
@@ -25,17 +24,9 @@ int main(void)
vst1_u8(d3.buf, vd2.val[0]);
vst1_u8(d4.buf, vd2.val[1]);
-#ifdef __ARMEL__
- odd = 1;
- even = 0;
-#else
- odd = 0;
- even = 1;
-#endif
-
for (i = 0; i < 8; i++)
- if ((i % 2 == even && d4.buf[i] != 2)
- || (i % 2 == odd && d4.buf[i] != 0))
+ if ((i % 2 == 0 && d4.buf[i] != 2)
+ || (i % 2 == 1 && d4.buf[i] != 0))
abort ();
return 0;
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/avr/pr60991.c b/gcc-4.9/gcc/testsuite/gcc.target/avr/pr60991.c
new file mode 100644
index 0000000..a09f42a
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/avr/pr60991.c
@@ -0,0 +1,21 @@
+/* { dg-do run } */
+/* { dg-options "-O1" } */
+
+/* This testcase (simplified from the original bug report) exposes
+ PR60991. The code generated for writing the __int24 value corrupts
+ the frame pointer if the offset is <= 63 + MAX_LD_OFFSET */
+
+#include <stdlib.h>
+
+int main(void)
+{
+ volatile char junk[62];
+ junk[0] = 5;
+ volatile __int24 staticConfig = 0;
+
+ if (junk[0] != 5)
+ abort();
+
+ exit(0);
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/avr/torture/pr61055.c b/gcc-4.9/gcc/testsuite/gcc.target/avr/torture/pr61055.c
new file mode 100644
index 0000000..9dd1f42
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/avr/torture/pr61055.c
@@ -0,0 +1,88 @@
+/* { dg-do run } */
+/* { dg-options { -fno-peephole2 } } */
+
+#include <stdlib.h>
+
+typedef __UINT16_TYPE__ uint16_t;
+typedef __INT16_TYPE__ int16_t;
+typedef __UINT8_TYPE__ uint8_t;
+
+uint8_t __attribute__((noinline,noclone))
+fun_inc (uint8_t c0)
+{
+ register uint8_t c asm ("r15") = c0;
+
+ /* Force target value into R15 (lower register) */
+ asm ("" : "+l" (c));
+
+ c++;
+ if (c >= 0x80)
+ c = 0;
+
+ asm ("" : "+l" (c));
+
+ return c;
+}
+
+uint8_t __attribute__((noinline,noclone))
+fun_dec (uint8_t c0)
+{
+ register uint8_t c asm ("r15") = c0;
+
+ /* Force target value into R15 (lower register) */
+ asm ("" : "+l" (c));
+
+ c--;
+ if (c < 0x80)
+ c = 0;
+
+ asm ("" : "+l" (c));
+
+ return c;
+}
+
+
+uint8_t __attribute__((noinline,noclone))
+fun_neg (uint8_t c0)
+{
+ register uint8_t c asm ("r15") = c0;
+
+ c = -c;
+ if (c >= 0x80)
+ c = 0;
+
+ return c;
+}
+
+uint16_t __attribute__((noinline,noclone))
+fun_adiw (uint16_t c0)
+{
+ register uint16_t c asm ("r24") = c0;
+
+ /* Force target value into R24 (for ADIW) */
+ asm ("" : "+r" (c));
+
+ c += 2;
+ if (c >= 0x8000)
+ c = 0;
+
+ asm ("" : "+r" (c));
+
+ return c;
+}
+
+
+int main()
+{
+ if (fun_inc (0x7f) != 0)
+ abort();
+
+ if (fun_neg (0x80) != 0)
+ abort();
+
+ if (fun_adiw (0x7ffe) != 0)
+ abort();
+
+ exit (0);
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/avr/torture/pr61443.c b/gcc-4.9/gcc/testsuite/gcc.target/avr/torture/pr61443.c
new file mode 100644
index 0000000..12c6bca
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/avr/torture/pr61443.c
@@ -0,0 +1,134 @@
+/* { dg-do run } */
+/* { dg-options "-std=gnu99" } */
+
+#include <stdlib.h>
+#include <stdarg.h>
+
+#define NC __attribute__((noinline,noclone))
+
+void NC vfun (char n, ...)
+{
+ va_list ap;
+
+ va_start (ap, n);
+
+ switch (n)
+ {
+ default:
+ abort();
+ case 1:
+ if (11 != va_arg (ap, int))
+ abort();
+ break;
+ case 2:
+ if (2222 != va_arg (ap, int))
+ abort();
+ break;
+ case 3:
+ if (333333 != va_arg (ap, __int24))
+ abort();
+ break;
+ case 4:
+ if (44444444 != va_arg (ap, long))
+ abort();
+ break;
+ case 8:
+ if (8888888888888888 != va_arg (ap, long long))
+ abort();
+ break;
+ }
+
+ va_end (ap);
+}
+
+
+void NC boo_qi (const __flash char *p)
+{
+ vfun (1, *p);
+}
+
+void NC boox_qi (const __memx char *p)
+{
+ vfun (1, *p);
+}
+
+void NC boo_hi (const __flash int *p)
+{
+ vfun (2, *p);
+}
+
+void NC boox_hi (const __memx int *p)
+{
+ vfun (2, *p);
+}
+
+void NC boo_psi (const __flash __int24 *p)
+{
+ vfun (3, *p);
+}
+
+void NC boox_psi (const __memx __int24 *p)
+{
+ vfun (3, *p);
+}
+
+void NC boo_si (const __flash long *p)
+{
+ vfun (4, *p);
+}
+
+void NC boox_si (const __memx long *p)
+{
+ vfun (4, *p);
+}
+
+void NC boo_di (const __flash long long *p)
+{
+ vfun (8, *p);
+}
+
+void NC boox_di (const __memx long long *p)
+{
+ vfun (8, *p);
+}
+
+const __flash char f_qi = 11;
+const __flash int f_hi = 2222;
+const __flash __int24 f_psi = 333333;
+const __flash long f_si = 44444444;
+const __flash long long f_di = 8888888888888888;
+
+const __memx char x_qi = 11;
+const __memx int x_hi = 2222;
+const __memx __int24 x_psi = 333333;
+const __memx long x_si = 44444444;
+const __memx long long x_di = 8888888888888888;
+
+char r_qi = 11;
+int r_hi = 2222;
+__int24 r_psi = 333333;
+long r_si = 44444444;
+long long r_di = 8888888888888888;
+
+int main (void)
+{
+ boo_qi (&f_qi);
+ boo_hi (&f_hi);
+ boo_psi (&f_psi);
+ boo_si (&f_si);
+ boo_di (&f_di);
+
+ boox_qi (&x_qi);
+ boox_hi (&x_hi);
+ boox_psi (&x_psi);
+ boox_si (&x_si);
+ boox_di (&x_di);
+
+ boox_qi (&r_qi);
+ boox_hi (&r_hi);
+ boox_psi (&r_psi);
+ boox_si (&r_si);
+ boox_di (&r_di);
+
+ exit (0);
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx-pr57233.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx-pr57233.c
new file mode 100644
index 0000000..ffc71d9
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx-pr57233.c
@@ -0,0 +1,16 @@
+/* PR tree-optimization/57233 */
+/* { dg-do run { target avx } } */
+/* { dg-options "-O2 -mavx" } */
+
+#include "avx-check.h"
+
+static void
+avx_test (void)
+{
+ do_main ();
+}
+
+#undef main
+#define main() do_main ()
+
+#include "../../gcc.dg/pr57233.c"
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-pr57233.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-pr57233.c
new file mode 100644
index 0000000..3fb2608
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-pr57233.c
@@ -0,0 +1,16 @@
+/* PR tree-optimization/57233 */
+/* { dg-do run { target avx2 } } */
+/* { dg-options "-O2 -mavx2" } */
+
+#include "avx2-check.h"
+
+static void
+avx2_test (void)
+{
+ do_main ();
+}
+
+#undef main
+#define main() do_main ()
+
+#include "../../gcc.dg/pr57233.c"
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddb-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddb-3.c
index ee1f313..4b249c3 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddb-3.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddb-3.c
@@ -8,5 +8,5 @@
#include "avx2-vpop-check.h"
-/* { dg-final { scan-assembler-times "vpaddb\[ \\t\]+\[^\n\]*%ymm\[0-9\]" 1 } } */
+/* { dg-final { scan-assembler "vpaddb\[ \\t\]+\[^\n\]*%ymm\[0-9\]" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddw-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddw-3.c
index 7e7e018..889bd9f 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddw-3.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddw-3.c
@@ -8,5 +8,5 @@
#include "avx2-vpop-check.h"
-/* { dg-final { scan-assembler-times "vpaddw\[ \\t\]+\[^\n\]*%ymm\[0-9\]" 1 } } */
+/* { dg-final { scan-assembler "vpaddw\[ \\t\]+\[^\n\]*%ymm\[0-9\]" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpmullw-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpmullw-3.c
index 4d61d7a..c540843 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpmullw-3.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpmullw-3.c
@@ -8,5 +8,5 @@
#include "avx2-vpop-check.h"
-/* { dg-final { scan-assembler-times "vpmullw\[ \\t\]+\[^\n\]*%ymm\[0-9\]" 1 } } */
+/* { dg-final { scan-assembler "vpmullw\[ \\t\]+\[^\n\]*%ymm\[0-9\]" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsraw-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsraw-3.c
index 70bd5cd..e360fde 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsraw-3.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsraw-3.c
@@ -8,5 +8,5 @@
#include "avx2-vpop-check.h"
-/* { dg-final { scan-assembler-times "vpsraw\[ \\t\]+\[^\n\]*%ymm\[0-9\]" 1 } } */
+/* { dg-final { scan-assembler "vpsraw\[ \\t\]+\[^\n\]*%ymm\[0-9\]" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsrlw-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsrlw-3.c
index 691e02f..761ad8a 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsrlw-3.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsrlw-3.c
@@ -8,5 +8,5 @@
#include "avx2-vpop-check.h"
-/* { dg-final { scan-assembler-times "vpsrlw\[ \\t\]+\[^\n\]*%ymm\[0-9\]" 1 } } */
+/* { dg-final { scan-assembler "vpsrlw\[ \\t\]+\[^\n\]*%ymm\[0-9\]" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsubb-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsubb-3.c
index 45527f5..c4eeff9 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsubb-3.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsubb-3.c
@@ -8,5 +8,5 @@
#include "avx2-vpop-check.h"
-/* { dg-final { scan-assembler-times "vpsubb\[ \\t\]+\[^\n\]*%ymm\[0-9\]" 1 } } */
+/* { dg-final { scan-assembler "vpsubb\[ \\t\]+\[^\n\]*%ymm\[0-9\]" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsubw-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsubw-3.c
index 404c2ee..dc0d937 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsubw-3.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsubw-3.c
@@ -8,5 +8,5 @@
#include "avx2-vpop-check.h"
-/* { dg-final { scan-assembler-times "vpsubw\[ \\t\]+\[^\n\]*%ymm\[0-9\]" 1 } } */
+/* { dg-final { scan-assembler "vpsubw\[ \\t\]+\[^\n\]*%ymm\[0-9\]" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-pr57233.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-pr57233.c
new file mode 100644
index 0000000..2f1c23a
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-pr57233.c
@@ -0,0 +1,16 @@
+/* PR tree-optimization/57233 */
+/* { dg-do run { target avx512f } } */
+/* { dg-options "-O2 -mavx512f" } */
+
+#include "avx512f-check.h"
+
+static void
+avx512f_test (void)
+{
+ do_main ();
+}
+
+#undef main
+#define main() do_main ()
+
+#include "../../gcc.dg/pr57233.c"
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-andn-1a.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-andn-1a.c
index a7ee076..6a0fe15 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-andn-1a.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-andn-1a.c
@@ -1,5 +1,5 @@
/* { dg-do compile { target { ! ia32 } } } */
-/* { dg-options "-O2 -mbmi -fno-inline -dp" } */
+/* { dg-options "-O2 -mbmi -fno-inline -dp --param max-default-completely-peeled-insns=0" } */
#include "bmi-andn-1.c"
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-andn-2a.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-andn-2a.c
index 72fe026..c7a895c 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-andn-2a.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-andn-2a.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mbmi -fno-inline -dp" } */
+/* { dg-options "-O2 -mbmi -fno-inline -dp --param max-default-completely-peeled-insns=0" } */
#include "bmi-andn-2.c"
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-bextr-1a.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-bextr-1a.c
index 4ccfbdc..8dbf1eb 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-bextr-1a.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-bextr-1a.c
@@ -3,4 +3,4 @@
#include "bmi-bextr-1.c"
-/* { dg-final { scan-assembler-times "bmi_bextr_di" 1 } } */
+/* { dg-final { scan-assembler "bmi_bextr_di" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-bextr-2a.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-bextr-2a.c
index 282a3e4..da47610 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-bextr-2a.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-bextr-2a.c
@@ -3,4 +3,4 @@
#include "bmi-bextr-2.c"
-/* { dg-final { scan-assembler-times "bmi_bextr_si" 1 } } */
+/* { dg-final { scan-assembler "bmi_bextr_si" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-blsi-1a.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-blsi-1a.c
index e9e0ecb..ab52571 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-blsi-1a.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-blsi-1a.c
@@ -1,5 +1,5 @@
/* { dg-do compile { target { ! ia32 } } } */
-/* { dg-options "-O2 -mbmi -fno-inline -dp" } */
+/* { dg-options "-O2 -mbmi -fno-inline -dp --param max-default-completely-peeled-insns=0" } */
#include "bmi-blsi-1.c"
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-blsi-2a.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-blsi-2a.c
index be9ca3f..ccca576 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-blsi-2a.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-blsi-2a.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mbmi -fno-inline -dp" } */
+/* { dg-options "-O2 -mbmi -fno-inline -dp --param max-default-completely-peeled-insns=0" } */
#include "bmi-blsi-2.c"
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-blsmsk-1a.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-blsmsk-1a.c
index 4e6cb7b..c75f33c 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-blsmsk-1a.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-blsmsk-1a.c
@@ -1,5 +1,5 @@
/* { dg-do compile { target { ! ia32 } } } */
-/* { dg-options "-O2 -mbmi -fno-inline -dp" } */
+/* { dg-options "-O2 -mbmi -fno-inline -dp --param max-default-completely-peeled-insns=0" } */
#include "bmi-blsmsk-1.c"
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-blsmsk-2a.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-blsmsk-2a.c
index f6f6bab..7d3597d 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-blsmsk-2a.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-blsmsk-2a.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mbmi -fno-inline -dp" } */
+/* { dg-options "-O2 -mbmi -fno-inline -dp --param max-default-completely-peeled-insns=0" } */
#include "bmi-blsmsk-2.c"
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-blsr-1a.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-blsr-1a.c
index 79241ca..736997d 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-blsr-1a.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-blsr-1a.c
@@ -1,5 +1,5 @@
/* { dg-do compile { target { ! ia32 } } } */
-/* { dg-options "-O2 -mbmi -fno-inline -dp" } */
+/* { dg-options "-O2 -mbmi -fno-inline -dp --param max-default-completely-peeled-insns=0" } */
#include "bmi-blsr-1.c"
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-blsr-2a.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-blsr-2a.c
index d88c16e..6f6b67f 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-blsr-2a.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-blsr-2a.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mbmi -fno-inline -dp" } */
+/* { dg-options "-O2 -mbmi -fno-inline -dp --param max-default-completely-peeled-insns=0" } */
#include "bmi-blsr-2.c"
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-tzcnt-1a.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-tzcnt-1a.c
index e283c31..cd469a7 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-tzcnt-1a.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-tzcnt-1a.c
@@ -1,5 +1,5 @@
/* { dg-do compile { target { ! ia32 } } } */
-/* { dg-options "-O2 -mbmi -fno-inline" } */
+/* { dg-options "-O2 -mbmi -fno-inline --param max-default-completely-peeled-insns=0" } */
#include "bmi-tzcnt-1.c"
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-tzcnt-2a.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-tzcnt-2a.c
index 2cdb3f4..b60a5a1 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-tzcnt-2a.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-tzcnt-2a.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mbmi -fno-inline" } */
+/* { dg-options "-O2 -mbmi -fno-inline --param max-default-completely-peeled-insns=0" } */
#include "bmi-tzcnt-2.c"
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi2-bzhi32-1a.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi2-bzhi32-1a.c
index 05be7a8..64be3ba 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi2-bzhi32-1a.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi2-bzhi32-1a.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-mbmi2 -O2 -dp" } */
+/* { dg-options "-mbmi2 -O2 -dp --param max-default-completely-peeled-insns=0" } */
#include "bmi2-bzhi32-1.c"
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi2-bzhi64-1a.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi2-bzhi64-1a.c
index dc4a94c..08fee20 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi2-bzhi64-1a.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi2-bzhi64-1a.c
@@ -1,5 +1,5 @@
/* { dg-do compile { target { ! ia32 } } } */
-/* { dg-options "-mbmi2 -O2 -dp" } */
+/* { dg-options "-mbmi2 -O2 -dp --param max-default-completely-peeled-insns=0" } */
#include "bmi2-bzhi64-1.c"
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi2-pdep32-1a.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi2-pdep32-1a.c
index 87888fc..7e52898 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi2-pdep32-1a.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi2-pdep32-1a.c
@@ -3,4 +3,4 @@
#include "bmi2-pdep32-1.c"
-/* { dg-final { scan-assembler-times "bmi2_pdep_si3" 1 } } */
+/* { dg-final { scan-assembler "bmi2_pdep_si3" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi2-pdep64-1a.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi2-pdep64-1a.c
index 8163c40..24238ca 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi2-pdep64-1a.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi2-pdep64-1a.c
@@ -3,4 +3,4 @@
#include "bmi2-pdep64-1.c"
-/* { dg-final { scan-assembler-times "bmi2_pdep_di3" 1 } } */
+/* { dg-final { scan-assembler "bmi2_pdep_di3" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi2-pext32-1a.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi2-pext32-1a.c
index c4a6dee..5d908b3 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi2-pext32-1a.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi2-pext32-1a.c
@@ -3,4 +3,4 @@
#include "bmi2-pext32-1.c"
-/* { dg-final { scan-assembler-times "bmi2_pext_si3" 1 } } */
+/* { dg-final { scan-assembler "bmi2_pext_si3" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi2-pext64-1a.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi2-pext64-1a.c
index aaf06c1..c4fb99c 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi2-pext64-1a.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi2-pext64-1a.c
@@ -3,4 +3,4 @@
#include "bmi2-pext64-1.c"
-/* { dg-final { scan-assembler-times "bmi2_pext_di3" 1 } } */
+/* { dg-final { scan-assembler "bmi2_pext_di3" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/cadd.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/cadd.c
index 7a39c67..32036e1 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/cadd.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/cadd.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -march=k8" } */
+/* { dg-options "-O2 -fno-tree-loop-vectorize -march=k8" } */
/* { dg-final { scan-assembler "sbb" } } */
extern void abort (void);
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/clearcap.map b/gcc-4.9/gcc/testsuite/gcc.target/i386/clearcap.map
deleted file mode 100644
index 147f922..0000000
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/clearcap.map
+++ /dev/null
@@ -1,3 +0,0 @@
-# clear all hardware capabilities emitted by Sun as: the tests here
-# guard against execution at runtime
-hwcap_1 = V0x0 OVERRIDE;
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/clearcapv2.map b/gcc-4.9/gcc/testsuite/gcc.target/i386/clearcapv2.map
deleted file mode 100644
index 95cb14c..0000000
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/clearcapv2.map
+++ /dev/null
@@ -1,7 +0,0 @@
-# clear all hardware capabilities emitted by Sun as: the tests here
-# guard against execution at runtime
-# uses mapfile v2 syntax which is the only way to clear AT_SUN_CAP_HW2 flags
-$mapfile_version 2
-CAPABILITY {
- HW = ;
-};
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/i386.exp b/gcc-4.9/gcc/testsuite/gcc.target/i386/i386.exp
index 080e302..d9b36cd 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/i386.exp
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/i386.exp
@@ -23,6 +23,7 @@ if { ![istarget i?86*-*-*] && ![istarget x86_64-*-*] } then {
# Load support procs.
load_lib gcc-dg.exp
+load_lib clearcap.exp
# Return 1 if attribute ms_hook_prologue is supported.
proc check_effective_target_ms_hook_prologue { } {
@@ -307,39 +308,6 @@ proc check_effective_target_sha { } {
} "-O2 -msha" ]
}
-# If the linker used understands -M <mapfile>, pass it to clear hardware
-# capabilities set by the Sun assembler.
-# Try mapfile syntax v2 first which is the only way to clear hwcap_2 flags.
-set clearcap_ldflags "-Wl,-M,$srcdir/$subdir/clearcapv2.map"
-
-if ![check_no_compiler_messages mapfilev2 executable {
- int main (void) { return 0; }
-} $clearcap_ldflags ] {
- # If this doesn't work, fall back to the less capable v1 syntax.
- set clearcap_ldflags "-Wl,-M,$srcdir/$subdir/clearcap.map"
-
- if ![check_no_compiler_messages mapfile executable {
- int main (void) { return 0; }
- } $clearcap_ldflags ] {
- unset clearcap_ldflags
- }
-}
-
-if [info exists clearcap_ldflags] {
- if { [info procs gcc_target_compile] != [list] \
- && [info procs saved_gcc_target_compile] == [list] } {
- rename gcc_target_compile saved_gcc_target_compile
-
- proc gcc_target_compile { source dest type options } {
- global clearcap_ldflags
- # Always pass -Wl,-M,<mapfile>, but don't let it show up in gcc.sum.
- lappend options "additional_flags=$clearcap_ldflags"
-
- return [saved_gcc_target_compile $source $dest $type $options]
- }
- }
-}
-
# If a testcase doesn't have special options, use these.
global DEFAULT_CFLAGS
if ![info exists DEFAULT_CFLAGS] then {
@@ -348,6 +316,7 @@ if ![info exists DEFAULT_CFLAGS] then {
# Initialize `dg'.
dg-init
+clearcap-init
# Special case compilation of vect-args.c so we don't have to
# replicate it 10 times.
@@ -367,4 +336,5 @@ set tests [prune $tests $srcdir/$subdir/vect-args.c]
dg-runtest $tests "" $DEFAULT_CFLAGS
# All done.
+clearcap-finish
dg-finish
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-1.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-1.c
new file mode 100644
index 0000000..aa1f424
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-1.c
@@ -0,0 +1,23 @@
+/* Verify -mpatch-functions-for-instrumentation works. */
+/* { dg-do compile } */
+/* { dg-require-effective-target lp64 } */
+/* { dg-options "-mpatch-functions-for-instrumentation" } */
+
+/* Check nop-bytes at beginning. */
+/* { dg-final { scan-assembler ".byte\t0xeb,0x09(.*).byte\t0x90" } } */
+/* Check nop-bytes at end. */
+/* { dg-final { scan-assembler "ret(.*).byte\t0x90(.*).byte\t0x90" } } */
+
+__attribute__ ((noinline))
+void foo()
+{
+ /* Dummy loop. */
+ int x = 0;
+ while (++x);
+}
+
+int main()
+{
+ foo();
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-2.c
new file mode 100644
index 0000000..78de867
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-2.c
@@ -0,0 +1,21 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target lp64 } */
+/* { dg-options "-mpatch-functions-for-instrumentation -mno-patch-functions-main-always" } */
+
+/* Function is small to be instrumented with default values. Check there
+ aren't any nop-bytes at beginning or end of function. */
+
+/* { dg-final { scan-assembler-not ".byte\t0xeb,0x09(.*).byte\t0x90" } } */
+/* { dg-final { scan-assembler-not "ret(.*).byte\t0x90(.*).byte\t0x90" } } */
+
+__attribute__ ((noinline))
+void foo()
+{
+ int x = 0;
+}
+
+int main()
+{
+ foo();
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-3.c
new file mode 100644
index 0000000..9e8eb52
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-3.c
@@ -0,0 +1,21 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target lp64 } */
+/* { dg-options "-mpatch-functions-for-instrumentation --param function-patch-min-instructions=0" } */
+
+/* Function should have nop-bytes with -mpatch-function-min-instructions=0.
+ Check there are nop-bytes at beginning and end of function. */
+
+/* { dg-final { scan-assembler ".byte\t0xeb,0x09(.*).byte\t0x90" } } */
+/* { dg-final { scan-assembler "ret(.*).byte\t0x90(.*).byte\t0x90" } } */
+
+__attribute__ ((noinline))
+void foo()
+{
+ int x = 0;
+}
+
+int main()
+{
+ foo();
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-4.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-4.c
new file mode 100644
index 0000000..7a031d7
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-4.c
@@ -0,0 +1,22 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target lp64 } */
+/* { dg-options "-mpatch-functions-for-instrumentation -mpatch-functions-ignore-loops -mno-patch-functions-main-always" } */
+
+/* Function is too small to be patched when ignoring the loop.
+ Check there aren't any nop-bytes at beginning and end of function. */
+
+/* { dg-final { scan-assembler-not ".byte\t0xeb,0x09(.*).byte\t0x90" } } */
+/* { dg-final { scan-assembler-not "ret(.*).byte\t0x90(.*).byte\t0x90" } } */
+
+__attribute__ ((noinline))
+void foo()
+{
+ int x = 0;
+ while (++x);
+}
+
+int main()
+{
+ foo();
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-5.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-5.c
new file mode 100644
index 0000000..cd6a014
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-5.c
@@ -0,0 +1,22 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target lp64 } */
+/* { dg-options "-mpatch-functions-for-instrumentation -mpatch-functions-ignore-loops --param function-patch-min-instructions=0" } */
+
+/* Function should be patched with nop bytes with given options.
+ Check there are nop-bytes at beginning and end of function. */
+
+/* { dg-final { scan-assembler ".byte\t0xeb,0x09(.*).byte\t0x90" } } */
+/* { dg-final { scan-assembler "ret(.*).byte\t0x90(.*).byte\t0x90" } } */
+
+__attribute__ ((noinline))
+void foo()
+{
+ int x = 0;
+ while (++x);
+}
+
+int main()
+{
+ foo();
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-6.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-6.c
new file mode 100644
index 0000000..c1d6446
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-6.c
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target lp64 } */
+/* { dg-options "-mpatch-functions-for-instrumentation" } */
+
+/* 'main' function should always be patched, irrespective of how small it is.
+ Check there are nop-bytes at beginning and end of main. */
+
+/* { dg-final { scan-assembler ".byte\t0xeb,0x09(.*).byte\t0x90" } } */
+/* { dg-final { scan-assembler "ret(.*).byte\t0x90(.*).byte\t0x90" } } */
+
+int main()
+{
+ int x = 0;
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-7.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-7.c
new file mode 100644
index 0000000..f625298
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-7.c
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target lp64 } */
+/* { dg-options "-mpatch-functions-for-instrumentation -mno-patch-functions-main-always" } */
+
+/* 'main' shouldn't be patched with the option -mno-patch-functions-main-always.
+ Check there aren't any nop-bytes at beginning and end of main. */
+
+/* { dg-final { scan-assembler-not ".byte\t0xeb,0x09(.*).byte\t0x90" } } */
+/* { dg-final { scan-assembler-not "ret(.*).byte\t0x90(.*).byte\t0x90" } } */
+
+int main()
+{
+ int x = 0;
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-8.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-8.c
new file mode 100644
index 0000000..436379c
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-8.c
@@ -0,0 +1,29 @@
+/* Verify -mpatch-functions-for-instrumentation works. */
+/* { dg-do run } */
+/* { dg-require-effective-target lp64 } */
+
+/* -O2 forces a sibling call for foo from bar. */
+/* { dg-options "-O2 -mpatch-functions-for-instrumentation --param function-patch-min-instructions=0" } */
+
+__attribute__ ((noinline))
+int foo()
+{
+ /* Dummy loop. */
+ int x = 10;
+ int y = 100;
+ while (--x)
+ ++y;
+ return y;
+}
+
+__attribute__ ((noinline))
+int bar()
+{
+ return foo();
+}
+
+int main()
+{
+ bar();
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-force-no-patching.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-force-no-patching.c
new file mode 100644
index 0000000..cad6f2d
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-force-no-patching.c
@@ -0,0 +1,27 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target lp64 } */
+/* { dg-options "-mpatch-functions-for-instrumentation -mno-patch-functions-main-always" } */
+
+/* Even complicated functions shouldn't get patched if they have the
+ never_patch_for_instrumentation attribute. */
+
+/* { dg-final { scan-assembler-not ".byte\t0xeb,0x09(.*).byte\t0x90" } } */
+/* { dg-final { scan-assembler-not "ret(.*).byte\t0x90(.*).byte\t0x90" } } */
+
+__attribute__ ((never_patch_for_instrumentation))
+int foo () {
+ volatile unsigned x = 0;
+ volatile unsigned y = 1;
+ x += y;
+ x *= y;
+ while (++x)
+ foo ();
+ return y;
+}
+
+
+int main ()
+{
+ int x = 0;
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-force-patching.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-force-patching.c
new file mode 100644
index 0000000..86ad159
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-force-patching.c
@@ -0,0 +1,20 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target lp64 } */
+/* { dg-options "-O3 -mpatch-functions-for-instrumentation -mno-patch-functions-main-always" } */
+
+/* Functions which have the always_patch attribute should be patched no matter
+ what. Check that there are nop-bytes at the beginning and end of the
+ function. We add -O3 so that the compiler will try to inline foo (but it
+ will be blocked by the attribute). */
+
+/* { dg-final { scan-assembler ".byte\t0xeb,0x09(.*).byte\t0x90" } } */
+/* { dg-final { scan-assembler "ret(.*).byte\t0x90(.*).byte\t0x90" } } */
+
+__attribute__ ((always_patch_for_instrumentation))
+static int foo () {
+ return 3;
+}
+
+int main () {
+ volatile int x = foo ();
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-sibling-call.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-sibling-call.c
new file mode 100644
index 0000000..847a95c
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/patch-functions-sibling-call.c
@@ -0,0 +1,26 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target lp64 } */
+/* -O2 forces a sibling call. */
+/* { dg-options "-O2 -mpatch-functions-for-instrumentation" } */
+
+/* { dg-final { scan-assembler ".byte\t0xeb,0x09(.*).byte\t0x90" } } */
+
+/* Checks correct nop-bytes are generated just before a sibling call. */
+/* { dg-final { scan-assembler ".byte\t0xeb,0x09(.*).byte\t0x90(.*)jmp" } } */
+
+/* Not instrumented as function has no loop and is small. */
+__attribute__ ((noinline))
+int foo(int n)
+{
+ int x = 0;
+ return n + 10;
+}
+
+__attribute__ ((noinline))
+int bar(int n)
+{
+ /* Dummy loop. */
+ while (--n)
+ n = n * 2;
+ return foo(n);
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pie-copyrelocs-1.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pie-copyrelocs-1.c
new file mode 100644
index 0000000..ae339bd
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pie-copyrelocs-1.c
@@ -0,0 +1,13 @@
+/* Test if -mcopyrelocs does the right thing. */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fpie -mcopyrelocs" } */
+
+extern int glob_a;
+
+int foo ()
+{
+ return glob_a;
+}
+
+/* glob_a should never be accessed with a GOTPCREL */
+/* { dg-final { scan-assembler-not "glob_a\\@GOTPCREL" { target { x86_64-*-* } } } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pie-copyrelocs-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pie-copyrelocs-2.c
new file mode 100644
index 0000000..ed60d03
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pie-copyrelocs-2.c
@@ -0,0 +1,13 @@
+/* Test if -mno-copyrelocs does the right thing. */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fpie -mno-copyrelocs" } */
+
+extern int glob_a;
+
+int foo ()
+{
+ return glob_a;
+}
+
+/* glob_a should always be accessed via GOT */
+/* { dg-final { scan-assembler "glob_a\\@GOT" { target { x86_64-*-* } } } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr50038.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr50038.c
index e111574..8ec601d 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr50038.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr50038.c
@@ -1,5 +1,5 @@
/* PR target/50038 */
-/* { dg-options "-O2" } */
+/* { dg-options "-O2 -fno-tree-loop-vectorize" } */
void
test (int len, unsigned char *in, unsigned char *out)
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr57233.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr57233.c
new file mode 100644
index 0000000..34182fa
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr57233.c
@@ -0,0 +1,15 @@
+/* PR tree-optimization/57233 */
+/* { dg-do compile { target avx } } */
+/* { dg-options "-O2 -mavx -mno-xop" } */
+
+typedef unsigned V4 __attribute__((vector_size(4 * sizeof (int))));
+V4 a;
+
+__attribute__((noinline)) void
+foo (void)
+{
+ a = (a << 2) | (a >> 30);
+}
+
+/* { dg-final { scan-assembler "vpsrld\[^\n\r]*30" } } */
+/* { dg-final { scan-assembler "vpslld\[^\n\r]*2" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr60868.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr60868.c
new file mode 100644
index 0000000..c30bbfc
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr60868.c
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-O0 -minline-all-stringops -minline-stringops-dynamically -march=core2" } */
+
+void bar (float *);
+
+void foo (void)
+{
+ float b[256] = {0};
+ bar(b);
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr60901.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr60901.c
new file mode 100644
index 0000000..f0f25a1
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr60901.c
@@ -0,0 +1,17 @@
+/* { dg-options "-O -fselective-scheduling -fschedule-insns -fsel-sched-pipelining -fsel-sched-pipelining-outer-loops -fno-tree-dominator-opts" } */
+
+extern int n;
+extern void bar (void);
+extern int baz (int);
+
+void
+foo (void)
+{
+ int i, j;
+ for (j = 0; j < n; j++)
+ {
+ for (i = 1; i < j; i++)
+ bar ();
+ baz (0);
+ }
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr60902.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr60902.c
new file mode 100644
index 0000000..b81dcd7
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr60902.c
@@ -0,0 +1,32 @@
+/* { dg-do run } */
+/* { dg-options "-O2" } */
+extern void abort ();
+extern void exit (int);
+
+int x;
+
+foo()
+{
+ static int count;
+ count++;
+ if (count > 1)
+ abort ();
+}
+
+static inline int
+frob ()
+{
+ int a;
+ __asm__ ("mov %1, %0\n\t" : "=r" (a) : "m" (x));
+ x++;
+ return a;
+}
+
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 10 && frob () == 0; i++)
+ foo();
+ exit (0);
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr60909-1.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr60909-1.c
new file mode 100644
index 0000000..5a1ac3c
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr60909-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-options "-mrdrnd" } */
+
+extern void bar (int);
+
+void
+foo (unsigned *u)
+{
+ int i = __builtin_ia32_rdrand32_step (u);
+ bar (i);
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr60909-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr60909-2.c
new file mode 100644
index 0000000..dd35668
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr60909-2.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-options "-mrdseed" } */
+
+extern void bar (int);
+
+void
+foo (unsigned *u)
+{
+ int i = __builtin_ia32_rdseed_si_step (u);
+ bar (i);
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61423.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61423.c
new file mode 100644
index 0000000..5b538a2
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61423.c
@@ -0,0 +1,38 @@
+/* PR target/61423 */
+/* { dg-do run { target ia32 } } */
+/* { dg-options "-O1 -ftree-vectorize -msse2 -mfpmath=387 -mtune=core2" } */
+
+#define N 1024
+static unsigned int A[N];
+
+double
+__attribute__((noinline))
+func (void)
+{
+ unsigned int sum = 0;
+ unsigned i;
+ double t;
+
+ for (i = 0; i < N; i++)
+ sum += A[i];
+
+ t = sum;
+ return t;
+}
+
+int
+main ()
+{
+ unsigned i;
+ double d;
+
+ for(i = 0; i < N; i++)
+ A[i] = 1;
+
+ d = func();
+
+ if (d != 1024.0)
+ __builtin_abort ();
+
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61446.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61446.c
new file mode 100644
index 0000000..fc32f63
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61446.c
@@ -0,0 +1,14 @@
+/* PR rtl-optimization/61446 */
+
+/* { dg-do compile { target { ia32 } } } */
+/* { dg-options "-O2 -march=corei7 -mfpmath=387" } */
+
+unsigned long long
+foo (float a)
+{
+ const double dfa = a;
+ const unsigned int hi = dfa / 0x1p32f;
+ const unsigned int lo = dfa - (double) hi * 0x1p32f;
+
+ return ((unsigned long long) hi << (4 * (8))) | lo;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61599-1.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61599-1.c
new file mode 100644
index 0000000..4eec992
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61599-1.c
@@ -0,0 +1,13 @@
+/* PR target/61599 */
+/* { dg-options "-mcmodel=medium -fdata-sections" { target lp64 } } */
+/* { dg-do compile { target lp64 } } */
+
+char a[1*1024*1024*1024];
+char b[1*1024*1024*1024];
+char c[1*1024*1024*1024];
+
+extern int bar();
+int main()
+{
+ return bar() + c[225];
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61599-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61599-2.c
new file mode 100644
index 0000000..22a53a4
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61599-2.c
@@ -0,0 +1,13 @@
+/* PR target/61599 */
+/* With -mcmodel=medium, all the arrays will be treated as large data. */
+/* { dg-options "-mcmodel=medium -fdata-sections" { target lp64 } } */
+/* { dg-do compile { target lp64 } } */
+
+extern char a[];
+extern char b[];
+extern char c[];
+
+int bar()
+{
+ return a[2] + b[16] + c[256];
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/recip-vec-sqrtf-avx.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/recip-vec-sqrtf-avx.c
index 9cf3cc8..efc73f9 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/recip-vec-sqrtf-avx.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/recip-vec-sqrtf-avx.c
@@ -31,4 +31,4 @@ void t3(void)
r[i] = sqrtf (a[i]);
}
-/* { dg-final { scan-assembler-times "vrsqrtps\[ \\t\]+\[^\n\]*%ymm" 3 } } */
+/* { dg-final { scan-assembler "vrsqrtps\[ \\t\]+\[^\n\]*%ymm" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/sse2-pr57233.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/sse2-pr57233.c
new file mode 100644
index 0000000..8a3bb2f
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/sse2-pr57233.c
@@ -0,0 +1,16 @@
+/* PR tree-optimization/57233 */
+/* { dg-do run { target sse2 } } */
+/* { dg-options "-O2 -msse2" } */
+
+#include "sse2-check.h"
+
+static void
+sse2_test (void)
+{
+ do_main ();
+}
+
+#undef main
+#define main() do_main ()
+
+#include "../../gcc.dg/pr57233.c"
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/sse2-unaligned-mov.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/sse2-unaligned-mov.c
new file mode 100644
index 0000000..28470ce
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/sse2-unaligned-mov.c
@@ -0,0 +1,20 @@
+/* { dg-do compile } */
+/* { dg-options "-mtune=corei7 -O2" } */
+
+#include <emmintrin.h>
+
+double a[1000];
+
+__m128d foo1() {
+ __m128d res;
+ res = _mm_load_sd(&a[1]);
+ res = _mm_loadh_pd(res, &a[2]);
+ return res;
+}
+
+void foo2(__m128d res) {
+ _mm_store_sd(&a[1], res);
+ _mm_storeh_pd(&a[2], res);
+}
+
+/* { dg-final { scan-assembler-times "movup" 2 } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/sse4_1-roundss-1.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/sse4_1-roundss-1.c
index 96dd8a6..fc92e68 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/sse4_1-roundss-1.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/sse4_1-roundss-1.c
@@ -1,6 +1,6 @@
/* { dg-do run } */
/* { dg-require-effective-target sse4 } */
-/* { dg-options "-O2 -msse4.1" } */
+/* { dg-options "-O2 -msse4.1 --param max-default-completely-peeled-insns=0" } */
/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
#include "sse4_1-check.h"
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/sse4_1-roundss-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/sse4_1-roundss-2.c
index f052c02..72e6807 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/sse4_1-roundss-2.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/sse4_1-roundss-2.c
@@ -1,6 +1,6 @@
/* { dg-do run } */
/* { dg-require-effective-target sse4 } */
-/* { dg-options "-O2 -msse4.1" } */
+/* { dg-options "-O2 -msse4.1 --param max-default-completely-peeled-insns=0" } */
/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
#include "sse4_1-check.h"
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/sse4_1-roundss-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/sse4_1-roundss-3.c
index 0a696b1..0af7ea7 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/sse4_1-roundss-3.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/sse4_1-roundss-3.c
@@ -1,6 +1,6 @@
/* { dg-do run } */
/* { dg-require-effective-target sse4 } */
-/* { dg-options "-O2 -msse4.1" } */
+/* { dg-options "-O2 -msse4.1 --param max-default-completely-peeled-insns=0" } */
/* { dg-skip-if "no M_PI" { vxworks_kernel } } */
#include "sse4_1-check.h"
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/vec-may_alias.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/vec-may_alias.c
new file mode 100644
index 0000000..e970497
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/vec-may_alias.c
@@ -0,0 +1,25 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -w -Wno-abi" } */
+
+typedef int v2si __attribute__ ((vector_size (8)));
+typedef short v4hi __attribute__ ((vector_size (8)));
+typedef short v4hia __attribute__ ((vector_size (8), may_alias));
+
+__attribute__ ((noinline, noclone))
+int f (v2si A, int N)
+{ return ((v4hia)A)[N]; }
+
+__attribute__ ((noinline, noclone))
+int g (v2si A, int N)
+{ return ((v4hi)A)[N]; }
+
+int main()
+{
+ v2si x = { 0, 0 }, y = { 1, 1 };
+ if (f (x, 0) || f (x, 1) || f (x, 2) || f (x, 3))
+ __builtin_abort ();
+ if (g (y, 0) != 1 || g (y, 1) || g (y, 2) != 1 || g (y, 3))
+ __builtin_abort ();
+ return 0;
+}
+
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/wmul-1.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/wmul-1.c
index 4ef8385..b8fd06a 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/wmul-1.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/wmul-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2" } */
+/* { dg-options "-O2 -fno-tree-loop-vectorize" } */
/* { dg-require-effective-target ia32 } */
long long mac(const int *a, const int *b, long long sqr, long long *sum)
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/xop-pr57233.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/xop-pr57233.c
new file mode 100644
index 0000000..6129dc2
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/xop-pr57233.c
@@ -0,0 +1,16 @@
+/* PR tree-optimization/57233 */
+/* { dg-do run { target xop } } */
+/* { dg-options "-O2 -mxop" } */
+
+#include "xop-check.h"
+
+static void
+xop_test (void)
+{
+ do_main ();
+}
+
+#undef main
+#define main() do_main ()
+
+#include "../../gcc.dg/pr57233.c"
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/bcd-1.c b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/bcd-1.c
new file mode 100644
index 0000000..c7496c2
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/bcd-1.c
@@ -0,0 +1,27 @@
+/* { dg-do compile { target { powerpc*-*-linux* } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-skip-if "" { powerpc*-*-*spe* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_vsx_ok } */
+/* { dg-options "-mcpu=power7 -O2" } */
+/* { dg-final { scan-assembler-times "cdtbcd " 1 } } */
+/* { dg-final { scan-assembler-times "cbcdtd " 1 } } */
+/* { dg-final { scan-assembler-times "addg6s " 1 } } */
+/* { dg-final { scan-assembler-not "bl __builtin" } } */
+
+unsigned int
+to_bcd (unsigned int a)
+{
+ return __builtin_cdtbcd (a);
+}
+
+unsigned int
+from_bcd (unsigned int a)
+{
+ return __builtin_cbcdtd (a);
+}
+
+unsigned int
+bcd_arith (unsigned int a, unsigned int b)
+{
+ return __builtin_addg6s (a, b);
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/bcd-2.c b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/bcd-2.c
new file mode 100644
index 0000000..d330b74
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/bcd-2.c
@@ -0,0 +1,44 @@
+/* { dg-do compile { target { powerpc*-*-linux* && lp64 } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-skip-if "" { powerpc*-*-*spe* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_p8vector_ok } */
+/* { dg-options "-mcpu=power8 -O2" } */
+/* { dg-final { scan-assembler-times "bcdadd\[.\] " 2 } } */
+/* { dg-final { scan-assembler-times "bcdsub\[.\] " 2 } } */
+/* { dg-final { scan-assembler-not "bl __builtin" } } */
+/* { dg-final { scan-assembler-not "mtvsr" } } */
+/* { dg-final { scan-assembler-not "mfvsr" } } */
+/* { dg-final { scan-assembler-not "lvx" } } */
+/* { dg-final { scan-assembler-not "lxvw4x" } } */
+/* { dg-final { scan-assembler-not "lxvd2x" } } */
+/* { dg-final { scan-assembler-not "stvx" } } */
+/* { dg-final { scan-assembler-not "stxvw4x" } } */
+/* { dg-final { scan-assembler-not "stxvd2x" } } */
+
+typedef __int128_t __attribute__((__vector_size__(16))) vector_128_t;
+typedef __int128_t scalar_128_t;
+typedef unsigned long long scalar_64_t;
+
+vector_128_t
+do_add_0 (vector_128_t a, vector_128_t b)
+{
+ return __builtin_bcdadd (a, b, 0);
+}
+
+vector_128_t
+do_add_1 (vector_128_t a, vector_128_t b)
+{
+ return __builtin_bcdadd (a, b, 1);
+}
+
+vector_128_t
+do_sub_0 (vector_128_t a, vector_128_t b)
+{
+ return __builtin_bcdsub (a, b, 0);
+}
+
+vector_128_t
+do_sub_1 (vector_128_t a, vector_128_t b)
+{
+ return __builtin_bcdsub (a, b, 1);
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/bcd-3.c b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/bcd-3.c
new file mode 100644
index 0000000..436cecf
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/bcd-3.c
@@ -0,0 +1,103 @@
+/* { dg-do compile { target { powerpc*-*-linux* && lp64 } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-skip-if "" { powerpc*-*-*spe* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_p8vector_ok } */
+/* { dg-options "-mcpu=power8 -O2" } */
+/* { dg-final { scan-assembler-times "bcdadd\[.\] " 4 } } */
+/* { dg-final { scan-assembler-times "bcdsub\[.\] " 4 } } */
+/* { dg-final { scan-assembler-not "bl __builtin" } } */
+/* { dg-final { scan-assembler-not "mtvsr" } } */
+/* { dg-final { scan-assembler-not "mfvsr" } } */
+/* { dg-final { scan-assembler-not "lvx" } } */
+/* { dg-final { scan-assembler-not "lxvw4x" } } */
+/* { dg-final { scan-assembler-not "lxvd2x" } } */
+/* { dg-final { scan-assembler-not "stvx" } } */
+/* { dg-final { scan-assembler-not "stxvw4x" } } */
+/* { dg-final { scan-assembler-not "stxvd2x" } } */
+
+typedef __int128_t __attribute__((__vector_size__(16))) vector_128_t;
+typedef __int128_t scalar_128_t;
+typedef unsigned long long scalar_64_t;
+
+/* Test whether the peephole works to allow folding a bcdadd, with a
+ bcdadd_<test> into a single instruction. */
+
+vector_128_t
+do_add_lt (vector_128_t a, vector_128_t b, int *p)
+{
+ vector_128_t ret = __builtin_bcdadd (a, b, 0);
+ if (__builtin_bcdadd_lt (a, b, 0))
+ *p = 1;
+
+ return ret;
+}
+
+vector_128_t
+do_add_eq (vector_128_t a, vector_128_t b, int *p)
+{
+ vector_128_t ret = __builtin_bcdadd (a, b, 0);
+ if (__builtin_bcdadd_eq (a, b, 0))
+ *p = 1;
+
+ return ret;
+}
+
+vector_128_t
+do_add_gt (vector_128_t a, vector_128_t b, int *p)
+{
+ vector_128_t ret = __builtin_bcdadd (a, b, 0);
+ if (__builtin_bcdadd_gt (a, b, 0))
+ *p = 1;
+
+ return ret;
+}
+
+vector_128_t
+do_add_ov (vector_128_t a, vector_128_t b, int *p)
+{
+ vector_128_t ret = __builtin_bcdadd (a, b, 0);
+ if (__builtin_bcdadd_ov (a, b, 0))
+ *p = 1;
+
+ return ret;
+}
+
+vector_128_t
+do_sub_lt (vector_128_t a, vector_128_t b, int *p)
+{
+ vector_128_t ret = __builtin_bcdsub (a, b, 0);
+ if (__builtin_bcdsub_lt (a, b, 0))
+ *p = 1;
+
+ return ret;
+}
+
+vector_128_t
+do_sub_eq (vector_128_t a, vector_128_t b, int *p)
+{
+ vector_128_t ret = __builtin_bcdsub (a, b, 0);
+ if (__builtin_bcdsub_eq (a, b, 0))
+ *p = 1;
+
+ return ret;
+}
+
+vector_128_t
+do_sub_gt (vector_128_t a, vector_128_t b, int *p)
+{
+ vector_128_t ret = __builtin_bcdsub (a, b, 0);
+ if (__builtin_bcdsub_gt (a, b, 0))
+ *p = 1;
+
+ return ret;
+}
+
+vector_128_t
+do_sub_ov (vector_128_t a, vector_128_t b, int *p)
+{
+ vector_128_t ret = __builtin_bcdsub (a, b, 0);
+ if (__builtin_bcdsub_ov (a, b, 0))
+ *p = 1;
+
+ return ret;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/dfp-builtin-1.c b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/dfp-builtin-1.c
new file mode 100644
index 0000000..614f272
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/dfp-builtin-1.c
@@ -0,0 +1,88 @@
+/* { dg-do compile { target { powerpc*-*-linux* } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-skip-if "" { powerpc*-*-*spe* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_vsx_ok } */
+/* { dg-options "-mcpu=power7 -O2" } */
+/* { dg-final { scan-assembler-times "ddedpd " 4 } } */
+/* { dg-final { scan-assembler-times "denbcd " 2 } } */
+/* { dg-final { scan-assembler-times "dxex " 1 } } */
+/* { dg-final { scan-assembler-times "diex " 1 } } */
+/* { dg-final { scan-assembler-times "dscli " 2 } } */
+/* { dg-final { scan-assembler-times "dscri " 2 } } */
+/* { dg-final { scan-assembler-not "bl __builtin" } } */
+/* { dg-final { scan-assembler-not "dctqpq" } } */
+/* { dg-final { scan-assembler-not "drdpq" } } */
+/* { dg-final { scan-assembler-not "stfd" } } */
+/* { dg-final { scan-assembler-not "lfd" } } */
+
+_Decimal64
+do_dedpd_0 (_Decimal64 a)
+{
+ return __builtin_ddedpd (0, a);
+}
+
+_Decimal64
+do_dedpd_1 (_Decimal64 a)
+{
+ return __builtin_ddedpd (1, a);
+}
+
+_Decimal64
+do_dedpd_2 (_Decimal64 a)
+{
+ return __builtin_ddedpd (2, a);
+}
+
+_Decimal64
+do_dedpd_3 (_Decimal64 a)
+{
+ return __builtin_ddedpd (3, a);
+}
+
+_Decimal64
+do_enbcd_0 (_Decimal64 a)
+{
+ return __builtin_denbcd (0, a);
+}
+
+_Decimal64
+do_enbcd_1 (_Decimal64 a)
+{
+ return __builtin_denbcd (1, a);
+}
+
+_Decimal64
+do_xex (_Decimal64 a)
+{
+ return __builtin_dxex (a);
+}
+
+_Decimal64
+do_iex (_Decimal64 a, _Decimal64 b)
+{
+ return __builtin_diex (a, b);
+}
+
+_Decimal64
+do_scli_1 (_Decimal64 a)
+{
+ return __builtin_dscli (a, 1);
+}
+
+_Decimal64
+do_scli_10 (_Decimal64 a)
+{
+ return __builtin_dscli (a, 10);
+}
+
+_Decimal64
+do_scri_1 (_Decimal64 a)
+{
+ return __builtin_dscri (a, 1);
+}
+
+_Decimal64
+do_scri_10 (_Decimal64 a)
+{
+ return __builtin_dscri (a, 10);
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/dfp-builtin-2.c b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/dfp-builtin-2.c
new file mode 100644
index 0000000..189bc9a
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/dfp-builtin-2.c
@@ -0,0 +1,88 @@
+/* { dg-do compile { target { powerpc*-*-linux* } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-skip-if "" { powerpc*-*-*spe* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_vsx_ok } */
+/* { dg-options "-mcpu=power7 -O2" } */
+/* { dg-final { scan-assembler-times "ddedpdq " 4 } } */
+/* { dg-final { scan-assembler-times "denbcdq " 2 } } */
+/* { dg-final { scan-assembler-times "dxexq " 1 } } */
+/* { dg-final { scan-assembler-times "diexq " 1 } } */
+/* { dg-final { scan-assembler-times "dscliq " 2 } } */
+/* { dg-final { scan-assembler-times "dscriq " 2 } } */
+/* { dg-final { scan-assembler-not "bl __builtin" } } */
+/* { dg-final { scan-assembler-not "dctqpq" } } */
+/* { dg-final { scan-assembler-not "drdpq" } } */
+/* { dg-final { scan-assembler-not "stfd" } } */
+/* { dg-final { scan-assembler-not "lfd" } } */
+
+_Decimal128
+do_dedpdq_0 (_Decimal128 a)
+{
+ return __builtin_ddedpdq (0, a);
+}
+
+_Decimal128
+do_dedpdq_1 (_Decimal128 a)
+{
+ return __builtin_ddedpdq (1, a);
+}
+
+_Decimal128
+do_dedpdq_2 (_Decimal128 a)
+{
+ return __builtin_ddedpdq (2, a);
+}
+
+_Decimal128
+do_dedpdq_3 (_Decimal128 a)
+{
+ return __builtin_ddedpdq (3, a);
+}
+
+_Decimal128
+do_enbcdq_0 (_Decimal128 a)
+{
+ return __builtin_denbcdq (0, a);
+}
+
+_Decimal128
+do_enbcdq_1 (_Decimal128 a)
+{
+ return __builtin_denbcdq (1, a);
+}
+
+_Decimal128
+do_xexq (_Decimal128 a)
+{
+ return __builtin_dxexq (a);
+}
+
+_Decimal128
+do_iexq (_Decimal128 a, _Decimal128 b)
+{
+ return __builtin_diexq (a, b);
+}
+
+_Decimal128
+do_scliq_1 (_Decimal128 a)
+{
+ return __builtin_dscliq (a, 1);
+}
+
+_Decimal128
+do_scliq_10 (_Decimal128 a)
+{
+ return __builtin_dscliq (a, 10);
+}
+
+_Decimal128
+do_scriq_1 (_Decimal128 a)
+{
+ return __builtin_dscriq (a, 1);
+}
+
+_Decimal128
+do_scriq_10 (_Decimal128 a)
+{
+ return __builtin_dscriq (a, 10);
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/extend-divide-1.c b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/extend-divide-1.c
new file mode 100644
index 0000000..5f948b7
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/extend-divide-1.c
@@ -0,0 +1,34 @@
+/* { dg-do compile { target { powerpc*-*-linux* } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-skip-if "" { powerpc*-*-*spe* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_vsx_ok } */
+/* { dg-options "-mcpu=power7 -O2" } */
+/* { dg-final { scan-assembler-times "divwe " 1 } } */
+/* { dg-final { scan-assembler-times "divweo " 1 } } */
+/* { dg-final { scan-assembler-times "divweu " 1 } } */
+/* { dg-final { scan-assembler-times "divweuo " 1 } } */
+/* { dg-final { scan-assembler-not "bl __builtin" } } */
+
+int
+div_we (int a, int b)
+{
+ return __builtin_divwe (a, b);
+}
+
+int
+div_weo (int a, int b)
+{
+ return __builtin_divweo (a, b);
+}
+
+unsigned int
+div_weu (unsigned int a, unsigned int b)
+{
+ return __builtin_divweu (a, b);
+}
+
+unsigned int
+div_weuo (unsigned int a, unsigned int b)
+{
+ return __builtin_divweuo (a, b);
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/extend-divide-2.c b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/extend-divide-2.c
new file mode 100644
index 0000000..8ee6c8c
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/extend-divide-2.c
@@ -0,0 +1,34 @@
+/* { dg-do compile { target { powerpc*-*-linux* && lp64 } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-skip-if "" { powerpc*-*-*spe* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_vsx_ok } */
+/* { dg-options "-mcpu=power7 -O2" } */
+/* { dg-final { scan-assembler-times "divde " 1 } } */
+/* { dg-final { scan-assembler-times "divdeo " 1 } } */
+/* { dg-final { scan-assembler-times "divdeu " 1 } } */
+/* { dg-final { scan-assembler-times "divdeuo " 1 } } */
+/* { dg-final { scan-assembler-not "bl __builtin" } } */
+
+long
+div_de (long a, long b)
+{
+ return __builtin_divde (a, b);
+}
+
+long
+div_deo (long a, long b)
+{
+ return __builtin_divdeo (a, b);
+}
+
+unsigned long
+div_deu (unsigned long a, unsigned long b)
+{
+ return __builtin_divdeu (a, b);
+}
+
+unsigned long
+div_deuo (unsigned long a, unsigned long b)
+{
+ return __builtin_divdeuo (a, b);
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/htm-ttest.c b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/htm-ttest.c
new file mode 100644
index 0000000..29cbd5b
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/htm-ttest.c
@@ -0,0 +1,14 @@
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_htm_ok } */
+/* { dg-options "-O2 -mhtm" } */
+
+/* { dg-final { scan-assembler "rlwinm r?\[0-9\]+,r?\[0-9\]+,3,30,31" { target { ilp32 } } } } */
+/* { dg-final { scan-assembler "rldicl r?\[0-9\]+,r?\[0-9\]+,35,62" { target { lp64 } } } } */
+
+#include <htmintrin.h>
+long
+ttest (void)
+{
+ return _HTM_STATE(__builtin_ttest());
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/pack01.c b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/pack01.c
new file mode 100644
index 0000000..efac408
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/pack01.c
@@ -0,0 +1,91 @@
+/* { dg-do run { target { powerpc*-*-linux* && lp64 } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-skip-if "" { powerpc*-*-*spe* } { "*" } { "" } } */
+/* { dg-require-effective-target p8vector_hw } */
+/* { dg-options "-mcpu=power8 -O2" } */
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <altivec.h>
+
+#ifdef DEBUG
+#include <stdio.h>
+#endif
+
+typedef __int128_t __attribute__((__vector_size__(16))) vector_128_t;
+typedef __int128_t scalar_128_t;
+typedef unsigned long long scalar_64_t;
+
+volatile scalar_64_t one = 1;
+volatile scalar_64_t two = 2;
+
+int
+main (void)
+{
+ scalar_128_t a = (((scalar_128_t)one) << 64) | ((scalar_128_t)two);
+ vector_128_t v1 = (vector_128_t) { a };
+ vector_128_t v2 = __builtin_pack_vector_int128 (one, two);
+ scalar_64_t x0 = __builtin_unpack_vector_int128 (v1, 0);
+ scalar_64_t x1 = __builtin_unpack_vector_int128 (v1, 1);
+ vector_128_t v3 = __builtin_pack_vector_int128 (x0, x1);
+
+ size_t i;
+ union {
+ scalar_128_t i128;
+ vector_128_t v128;
+ scalar_64_t u64;
+ unsigned char uc[sizeof (scalar_128_t)];
+ char c[sizeof (scalar_128_t)];
+ } u, u2;
+
+#ifdef DEBUG
+ {
+ printf ("a = 0x");
+ u.i128 = a;
+ for (i = 0; i < sizeof (scalar_128_t); i++)
+ printf ("%.2x", u.uc[i]);
+
+ printf ("\nv1 = 0x");
+ u.v128 = v1;
+ for (i = 0; i < sizeof (scalar_128_t); i++)
+ printf ("%.2x", u.uc[i]);
+
+ printf ("\nv2 = 0x");
+ u.v128 = v2;
+ for (i = 0; i < sizeof (scalar_128_t); i++)
+ printf ("%.2x", u.uc[i]);
+
+ printf ("\nv3 = 0x");
+ u.v128 = v3;
+ for (i = 0; i < sizeof (scalar_128_t); i++)
+ printf ("%.2x", u.uc[i]);
+
+ printf ("\nx0 = 0x");
+ u.u64 = x0;
+ for (i = 0; i < sizeof (scalar_64_t); i++)
+ printf ("%.2x", u.uc[i]);
+
+ printf ("\nx1 = 0x");
+ u.u64 = x1;
+ for (i = 0; i < sizeof (scalar_64_t); i++)
+ printf ("%.2x", u.uc[i]);
+
+ printf ("\n");
+ }
+#endif
+
+ u2.i128 = a;
+ u.v128 = v1;
+ if (memcmp (u.c, u2.c, sizeof (scalar_128_t)) != 0)
+ abort ();
+
+ u.v128 = v2;
+ if (memcmp (u.c, u2.c, sizeof (scalar_128_t)) != 0)
+ abort ();
+
+ u.v128 = v3;
+ if (memcmp (u.c, u2.c, sizeof (scalar_128_t)) != 0)
+ abort ();
+
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/pack02.c b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/pack02.c
new file mode 100644
index 0000000..f85d3ff
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/pack02.c
@@ -0,0 +1,96 @@
+/* { dg-do run { target { powerpc*-*-linux* } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-skip-if "" { powerpc*-*-*spe* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_fprs } */
+/* { dg-require-effective-target longdouble128 } */
+/* { dg-options "-O2 -mhard-float" } */
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <math.h>
+
+#ifdef DEBUG
+#include <stdio.h>
+#endif
+
+int
+main (void)
+{
+ double high = pow (2.0, 60);
+ double low = 2.0;
+ long double a = ((long double)high) + ((long double)low);
+ double x0 = __builtin_unpack_longdouble (a, 0);
+ double x1 = __builtin_unpack_longdouble (a, 1);
+ long double b = __builtin_pack_longdouble (x0, x1);
+
+#ifdef DEBUG
+ {
+ size_t i;
+ union {
+ long double ld;
+ double d;
+ unsigned char uc[sizeof (long double)];
+ char c[sizeof (long double)];
+ } u;
+
+ printf ("a = 0x");
+ u.ld = a;
+ for (i = 0; i < sizeof (long double); i++)
+ printf ("%.2x", u.uc[i]);
+
+ printf (", %Lg\n", a);
+
+ printf ("b = 0x");
+ u.ld = b;
+ for (i = 0; i < sizeof (long double); i++)
+ printf ("%.2x", u.uc[i]);
+
+ printf (", %Lg\n", b);
+
+ printf ("hi = 0x");
+ u.d = high;
+ for (i = 0; i < sizeof (double); i++)
+ printf ("%.2x", u.uc[i]);
+
+ printf (",%*s %g\n", (int)(2 * (sizeof (long double) - sizeof (double))), "", high);
+
+ printf ("lo = 0x");
+ u.d = low;
+ for (i = 0; i < sizeof (double); i++)
+ printf ("%.2x", u.uc[i]);
+
+ printf (",%*s %g\n", (int)(2 * (sizeof (long double) - sizeof (double))), "", low);
+
+ printf ("x0 = 0x");
+ u.d = x0;
+ for (i = 0; i < sizeof (double); i++)
+ printf ("%.2x", u.uc[i]);
+
+ printf (",%*s %g\n", (int)(2 * (sizeof (long double) - sizeof (double))), "", x0);
+
+ printf ("x1 = 0x");
+ u.d = x1;
+ for (i = 0; i < sizeof (double); i++)
+ printf ("%.2x", u.uc[i]);
+
+ printf (",%*s %g\n", (int)(2 * (sizeof (long double) - sizeof (double))), "", x1);
+ }
+#endif
+
+ if (high != x0)
+ abort ();
+
+ if (low != x1)
+ abort ();
+
+ if (a != b)
+ abort ();
+
+ if (x0 != high)
+ abort ();
+
+ if (x1 != low)
+ abort ();
+
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/pack03.c b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/pack03.c
new file mode 100644
index 0000000..dfaf2ef
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/pack03.c
@@ -0,0 +1,88 @@
+/* { dg-do run { target { powerpc*-*-linux* } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-skip-if "" { powerpc*-*-*spe* } { "*" } { "" } } */
+/* { dg-require-effective-target dfp_hw } */
+/* { dg-options "-O2 -mhard-dfp" } */
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <math.h>
+
+#ifdef DEBUG
+#include <stdio.h>
+#endif
+
+int
+main (void)
+{
+ _Decimal128 one = (_Decimal128)1.0;
+ _Decimal128 two = (_Decimal128)2.0;
+ _Decimal128 ten = (_Decimal128)10.0;
+ _Decimal128 a = one;
+ _Decimal128 b;
+ _Decimal128 c;
+ unsigned long long x0;
+ unsigned long long x1;
+ size_t i;
+
+ for (i = 0; i < 25; i++)
+ a *= ten;
+
+ a += two;
+
+ x0 = __builtin_unpack_dec128 (a, 0);
+ x1 = __builtin_unpack_dec128 (a, 1);
+ b = __builtin_pack_dec128 (x0, x1);
+ c = __builtin_dscliq (one, 25) + two;
+
+#ifdef DEBUG
+ {
+ union {
+ _Decimal128 d;
+ unsigned long long ull;
+ unsigned char uc[sizeof (_Decimal128)];
+ } u;
+
+ printf ("a = 0x");
+ u.d = a;
+ for (i = 0; i < sizeof (_Decimal128); i++)
+ printf ("%.2x", u.uc[i]);
+
+ printf (", %Lg\n", (long double)a);
+
+ printf ("b = 0x");
+ u.d = b;
+ for (i = 0; i < sizeof (_Decimal128); i++)
+ printf ("%.2x", u.uc[i]);
+
+ printf (", %Lg\n", (long double)b);
+
+ printf ("c = 0x");
+ u.d = c;
+ for (i = 0; i < sizeof (_Decimal128); i++)
+ printf ("%.2x", u.uc[i]);
+
+ printf (", %Lg\n", (long double)c);
+
+ printf ("x0 = 0x");
+ u.ull = x0;
+ for (i = 0; i < sizeof (unsigned long long); i++)
+ printf ("%.2x", u.uc[i]);
+
+ printf ("\nx1 = 0x");
+ u.ull = x1;
+ for (i = 0; i < sizeof (unsigned long long); i++)
+ printf ("%.2x", u.uc[i]);
+
+ printf ("\n");
+ }
+#endif
+
+ if (a != b)
+ abort ();
+
+ if (a != c)
+ abort ();
+
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/pr60735.c b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/pr60735.c
new file mode 100644
index 0000000..9bac30b
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/pr60735.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-options "-mcpu=8548 -mspe -mabi=spe -O2" } */
+/* { dg-skip-if "not an SPE target" { ! powerpc_spe_nocache } { "*" } { "" } } */
+
+/* In PR60735, the type _Decimal64 generated an insn not found message. */
+
+void
+pr60735 (_Decimal64 *p, _Decimal64 *q)
+{
+ *p = *q;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/tfmode_off.c b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/tfmode_off.c
index e6578ef..ea703f0 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/tfmode_off.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/tfmode_off.c
@@ -1,6 +1,7 @@
/* { dg-do assemble } */
/* { dg-skip-if "" { powerpc-ibm-aix* } { "*" } { "" } } */
/* { dg-skip-if "no TFmode" { powerpc-*-eabi* } { "*" } { "" } } */
+/* { dg-require-effective-target longdouble128 } */
/* { dg-options "-O2 -fno-align-functions -mtraceback=no -save-temps" } */
typedef float TFmode __attribute__ ((mode (TF)));
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/ti_math1.c b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/ti_math1.c
new file mode 100644
index 0000000..cdf9251
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/ti_math1.c
@@ -0,0 +1,20 @@
+/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
+/* { dg-options "-O2" } */
+/* { dg-final { scan-assembler-times "addc" 1 } } */
+/* { dg-final { scan-assembler-times "adde" 1 } } */
+/* { dg-final { scan-assembler-times "subfc" 1 } } */
+/* { dg-final { scan-assembler-times "subfe" 1 } } */
+/* { dg-final { scan-assembler-not "subf " } } */
+
+__int128
+add_128 (__int128 *ptr, __int128 val)
+{
+ return (*ptr + val);
+}
+
+__int128
+sub_128 (__int128 *ptr, __int128 val)
+{
+ return (*ptr - val);
+}
+
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/ti_math2.c b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/ti_math2.c
new file mode 100644
index 0000000..b9c0330
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/ti_math2.c
@@ -0,0 +1,73 @@
+/* { dg-do run { target { powerpc*-*-* && lp64 } } } */
+/* { dg-options "-O2 -fno-inline" } */
+
+union U {
+ __int128 i128;
+ struct {
+ long l1;
+ long l2;
+ } s;
+};
+
+union U u1,u2;
+
+__int128
+create_128 (long most_sig, long least_sig)
+{
+ union U u;
+
+#if __LITTLE_ENDIAN__
+ u.s.l1 = least_sig;
+ u.s.l2 = most_sig;
+#else
+ u.s.l1 = most_sig;
+ u.s.l2 = least_sig;
+#endif
+ return u.i128;
+}
+
+long most_sig (union U * u)
+{
+#if __LITTLE_ENDIAN__
+ return (*u).s.l2;
+#else
+ return (*u).s.l1;
+#endif
+}
+
+long least_sig (union U * u)
+{
+#if __LITTLE_ENDIAN__
+ return (*u).s.l1;
+#else
+ return (*u).s.l2;
+#endif
+}
+
+__int128
+add_128 (__int128 *ptr, __int128 val)
+{
+ return (*ptr + val);
+}
+
+__int128
+sub_128 (__int128 *ptr, __int128 val)
+{
+ return (*ptr - val);
+}
+
+int
+main (void)
+{
+ /* Do a simple add/sub to make sure carry is happening between the dwords
+ and that dwords are in correct endian order. */
+ u1.i128 = create_128 (1, -1);
+ u2.i128 = add_128 (&u1.i128, 1);
+ if ((most_sig (&u2) != 2) || (least_sig (&u2) != 0))
+ __builtin_abort ();
+ u2.i128 = sub_128 (&u2.i128, 1);
+ if ((most_sig (&u2) != 1) || (least_sig (&u2) != -1))
+ __builtin_abort ();
+ return 0;
+}
+
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/s390/htm-nofloat-2.c b/gcc-4.9/gcc/testsuite/gcc.target/s390/htm-nofloat-2.c
deleted file mode 100644
index 59621a4..0000000
--- a/gcc-4.9/gcc/testsuite/gcc.target/s390/htm-nofloat-2.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/* { dg-do run } */
-/* { dg-options "-O3 -mhtm -Wa,-march=zEC12,-mzarch --save-temps" } */
-
-/* __builtin_tbegin has to emit clobbers for all FPRs since the tbegin
- instruction does not automatically preserves them. If the
- transaction body is fully contained in a function the backend tries
- after reload to get rid of the FPR save/restore operations
- triggered by the clobbers. This testcase failed since the backend
- was able to get rid of all FPR saves/restores and since these were
- the only stack operations also of the entire stack space. So even
- the save/restore of the stack pointer was omitted in the end.
-