aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.9/gcc/testsuite')
-rw-r--r--gcc-4.9/gcc/testsuite/ChangeLog618
-rw-r--r--gcc-4.9/gcc/testsuite/ChangeLog-20082
-rw-r--r--gcc-4.9/gcc/testsuite/ChangeLog-201016
-rw-r--r--gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/CK/invalid_spawns.c1
-rw-r--r--gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/CK/pr60469.c15
-rw-r--r--gcc-4.9/gcc/testsuite/c-c++-common/pr60689.c10
-rw-r--r--gcc-4.9/gcc/testsuite/c-c++-common/ubsan/pr60636.c15
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag3.C7
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag6.C25
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag7.C9
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/abi/thunk6.C19
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cilk-plus/cilk-plus.exp89
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/auto42.C9
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-ice15.C12
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/defaulted2.C2
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist81.C25
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist82.C20
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-uneval.C2
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-uneval2.C7
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/pr31439.C2
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic154.C8
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic155.C4
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic156.C6
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/vt-33964.C2
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp1y/auto-fn25.C3
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp1y/pr60573.C28
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp1y/pr60626.C7
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/ext/vla14.C23
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/ext/vla15.C20
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/gomp/pr60682.C44
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/init/const10.C33
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/init/const11.C29
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/init/ctor4-1.C21
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/init/ctor4.C8
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/init/ctor8.C2
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/init/pr25811.C90
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/init/pr29043.C17
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/init/pr43719.C60
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/init/pr44086.C4
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/init/uninitialized1.C6
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-21.C2
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-23.C2
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60600.C34
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-1.C50
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-2.C15
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-3.C81
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-4.C85
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/lto/pr60567_0.C23
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/opt/pr56999.C1
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/pr49718.C3
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/template/crash119.C8
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/template/crash97.C2
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/template/crash98.C2
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/template/partial5.C4
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/torture/pr60315.C19
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/torture/pr60609.C252
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/torture/pr60648.C70
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/torture/pr60659.C58
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/torture/pr60746.C23
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/torture/pr60750.C21
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/vect/pr60729.cc10
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-2.C30
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-3.C75
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-4.C75
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor.C1
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/warn/Wreturn-local-addr-2.C11
-rw-r--r--gcc-4.9/gcc/testsuite/g++.old-deja/g++.jason/overload21.C2
-rw-r--r--gcc-4.9/gcc/testsuite/g++.old-deja/g++.law/init5.C4
-rw-r--r--gcc-4.9/gcc/testsuite/g++.old-deja/g++.robertl/eb121.C2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr28865.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr60556.c8
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr60655-1.c31
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr60655-2.c30
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.c-torture/execute/20140326-1.c10
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/atomic/stdatomic-flag.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/attr-weakref-1.c4
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/builtin-bswap-6.c5
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/builtin-bswap-6a.c44
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/builtin-bswap-7.c4
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/builtin-bswap-7a.c44
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/cilk-plus/cilk-plus.exp76
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/graphite/pr60740.c16
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/graphite/pr60785.c27
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/lto/pr55113_0.c3
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/lto/pr59626_0.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/lto/pr59626_1.c4
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/pr45416.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/pr59940.c3
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/pr60647-1.c26
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/pr60647-2.c26
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/pr60704.c14
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/pr60797.c8
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/predict-8.c12
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/torture/pr53922.c1
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/torture/pr60092.c4
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/torture/pr60733.c36
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/torture/pr60766.c15
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/20040517-1.c5
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-4.c3
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-13.c4
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/vect/pr60505.c12
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/vect/pr60656.c47
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/pr60034.c10
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/pr60580_1.c45
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/pr60675.C277
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/pr60697.c638
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/test_fp_attribute_1.c26
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/aarch64/test_fp_attribute_2.c26
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/arm/pr60650-2.c37
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/arm/pr60650.c41
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/arm/pr60657.c13
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/arm/pr60663.c11
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/avr/dev-specific-rmw.c13
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/387-3.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/387-4.c2
-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-vpaddd-3.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddq-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-vpand-3.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpmulld-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-vpsrad-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-vpsrld-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-vpsubd-3.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsubq-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/avx256-unaligned-load-1.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshuff32x4-2.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshuff64x2-2.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshufi32x4-2.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshufi64x2-2.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-1.c32
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-2.c32
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-builtin.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-fma-2.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-fma.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-vector-2.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-vector.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/funcspec-2.c1
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/funcspec-3.c1
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/funcspec-9.c1
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/isa-1.c1
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_1.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_2.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_3.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_4.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_5.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_6.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_1.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_2.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_3.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_4.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_5.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_6.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-strategy-1.c1
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-strategy-2.c1
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-vector_loop-1.c1
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-vector_loop-2.c1
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/memset-vector_loop-1.c1
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/memset-vector_loop-2.c1
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/pr27971.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/pr30970.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/pr42542-4a.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/pr59390.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/pr60693.c13
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/pr60700.c59
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/sse2-init-v2di-2.c1
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/ssetype-1.c1
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/ssetype-2.c1
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/i386/ssetype-5.c1
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/powerpc/atomic_load_store-p8.c22
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/powerpc/p8vector-vbpermq.c27
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/powerpc/pr60676.c128
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/powerpc/vsx-extract-1.c16
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/powerpc/vsx-extract-2.c17
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/powerpc/vsx-extract-3.c17
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/s390/20140327-1.c10
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/s390/htm-builtins-compile-1.c16
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/s390/htm-nofloat-1.c54
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/s390/htm-nofloat-compile-1.c12
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/s390/s390.exp10
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/arrayio_13.f9014
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/associate_15.f9040
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/class_nameclash.f9039
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/finalize_24.f9028
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/fmt_en.f9031
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/lto/pr60635_0.f9016
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/lto/pr60635_1.c14
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/unlimited_polymorphic_17.f9051
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/warn_conversion_4.f906
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/where_4.f9018
-rw-r--r--gcc-4.9/gcc/testsuite/gnat.dg/opt33.adb41
-rw-r--r--gcc-4.9/gcc/testsuite/gnat.dg/test_raise_from_pure.adb2
-rw-r--r--gcc-4.9/gcc/testsuite/lib/cilk-plus-dg.exp104
-rw-r--r--gcc-4.9/gcc/testsuite/lib/gcc-dg.exp1
-rw-r--r--gcc-4.9/gcc/testsuite/lib/prune.exp2
-rw-r--r--gcc-4.9/gcc/testsuite/lib/target-supports.exp32
206 files changed, 4665 insertions, 314 deletions
diff --git a/gcc-4.9/gcc/testsuite/ChangeLog b/gcc-4.9/gcc/testsuite/ChangeLog
index 9f9422abd..4c09a1e05 100644
--- a/gcc-4.9/gcc/testsuite/ChangeLog
+++ b/gcc-4.9/gcc/testsuite/ChangeLog
@@ -1,3 +1,621 @@
+2014-04-22 Release Manager
+
+ * GCC 4.9.0 released.
+
+2014-04-17 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/60847
+ Forward port from 4.8 branch
+ 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.
+
+2014-04-15 Igor Zamyatin <igor.zamyatin@intel.com>
+
+ PR middle-end/60467
+ * c-c++-common/cilk-plus/CK/invalid_spawns.c: Add new invalid
+ case to check.
+
+2014-04-15 Igor Zamyatin <igor.zamyatin@intel.com>
+
+ PR middle-end/60469
+ * c-c++-common/cilk-plus/CK/pr60469.c: New test.
+
+2014-04-14 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * gcc.dg/lto/pr55113_0.c: Skip on i?86-*-solaris2.1[0-1]*.
+
+2014-04-14 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * lib/target-supports.exp
+ (check_effective_target_vect_widen_mult_si_to_di_pattern):
+ Initialize et_vect_widen_mult_si_to_di_pattern_saved.
+ Fix formatting.
+
+2014-04-14 Jason Merrill <jason@redhat.com>
+
+ Revert:
+ * lib/gcc-dg.exp (dg-build-dso): New.
+ (gcc-dg-test-1): Handle dg-do-what "dso".
+
+2014-04-13 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/60717
+ * gfortran.dg/unlimited_polymorphic_17.f90: New test.
+
+ PR fortran/58085
+ * gfortran.dg/associate_15.f90: New test.
+
+2014-04-12 Jerry DeLisle <jvdelisle@gcc.gnu>
+
+ PR libfortran/60810
+ gfortran.dg/arrayio_13.f90: New test.
+
+2014-04-11 Steve Ellcey <sellcey@mips.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/60556
+ * gcc.c-torture/compile/pr60556.c: New test.
+
+2014-04-11 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/60797
+ * gcc.dg/pr60797.c: New testcase.
+
+2014-04-11 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ * gcc.target/s390/htm-nofloat-1.c: Rename to ...
+ * gcc.target/s390/htm-nofloat-compile-1.c: ... this one.
+ * gcc.target/s390/htm-nofloat-2.c: Add check for htm target and
+ rename to ...
+ * gcc.target/s390/htm-nofloat-1.c: ... this one.
+ * gcc.target/s390/s390.exp: Make sure the assembler supports htm
+ instructions as well.
+
+2014-04-11 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/60663
+ * gcc.target/arm/pr60663.c: New test.
+
+2014-04-10 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/dso/dlclose1.C: Disable for 4.9.
+
+2014-04-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR lto/60567
+ * g++.dg/lto/pr60567_0.C: New test.
+
+2014-04-10 Bernd Edlinger <bernd.edlinger@hotmail.de>
+
+ * gfortran.dg/class_nameclash.f90: New test.
+
+2014-04-10 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/52844
+ * g++.dg/cpp0x/variadic156.C: New.
+
+2014-04-10 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ * gcc.target/s390/htm-builtins-compile-1.c: Replace long long with
+ long.
+
+2014-04-10 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
+
+ PR debug/60655
+ * gcc.c-torture/compile/pr60655-2.c: Copy from pr60655-1.c without
+ -fdata-sections.
+
+2014-04-09 Steve Ellcey <sellcey@mips.com>
+
+ * gcc.dg/tree-ssa/ssa-ifcombine-13.c: Remove mips*-*-* from option
+ and scan lists.
+
+2014-04-09 Cong Hou <congh@google.com>
+
+ PR testsuite/60773
+ * lib/target-supports.exp:
+ (check_effective_target_vect_widen_si_to_di_pattern): New.
+ * gcc.dg/vect/pr60656.c: Require vect_long effective target.
+ Use scan-tree-dump-times for vect_widen_mult_si_to_di_pattern
+ targets only.
+ (foo): Fix up formatting.
+ (main): Call check_vect.
+
+2014-04-08 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/59115
+ * g++.dg/template/crash119.C: New.
+
+2014-04-08 Pat Haugen <pthaugen@us.ibm.com>
+
+ * gcc.target/powerpc/atomic_load_store-p8.c: New.
+
+2014-04-08 Jason Merrill <jason@redhat.com>
+
+ * lib/gcc-dg.exp (dg-build-dso): Reset dg-do-what-default to
+ compile.
+
+2014-04-08 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ PR rtl-optimization/60776
+ * gcc.dg/builtin-bswap-6.c: Use -mbranch-cost=0 for s390.
+ * gcc.dg/builtin-bswap-7.c: Likewise.
+ * gcc.dg/builtin-bswap-6a.c: New testcase.
+ * gcc.dg/builtin-bswap-7a.c: New testcase.
+
+ Revert
+ 2014-04-04 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ * gcc.dg/builtin-bswap-6.c: Adjust return value to disable GCC
+ optimization.
+ * gcc.dg/builtin-bswap-7.c: Likewise.
+
+2014-04-08 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/60785
+ * gcc.dg/graphite/pr60785.c: New testcase.
+
+2014-04-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ PR target/60602
+ * gcc.c-torture/compile/pr28865.c: XFAIL on sparc*-*-solaris2.9*
+ with as at -O0.
+
+2014-04-08 Nathan Sidwell <nathan@codesourcery.com>
+
+ * g++.dg/warn/Wnvdtor-2.C: Add more cases.
+ * g++.dg/warn/Wnvdtor-3.C: Likewise.
+ * g++.dg/warn/Wnvdtor-4.C: Likewise.
+
+2014-04-07 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/test_raise_from_pure.adb: UnXFAIL for ARM.
+
+2014-04-07 Charles Baylis <charles.baylis@linaro.org>
+
+ PR target/60609
+ * g++.dg/torture/pr60609.C: New test.
+
+2014-04-07 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/60766
+ * gcc.dg/torture/pr60766.c: New testcase.
+
+2014-04-07 Jason Merrill <jason@redhat.com>
+
+ * lib/gcc-dg.exp (dg-build-dso): New.
+ (gcc-dg-test-1): Handle dg-do-what "dso".
+ * lib/target-supports.exp (add_options_for_dlopen): New.
+ (check_effective_target_dlopen): Use it.
+
+2014-04-07 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
+
+ * gcc.target/arm/pr60657.c: Fix missing curly brace.
+
+2014-04-07 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/60750
+ * g++.dg/torture/pr60750.C: New testcase.
+ * gcc.dg/tree-ssa/20040517-1.c: Adjust.
+
+2014-04-06 Andreas Schwab <schwab@linux-m68k.org>
+
+ * gcc.c-torture/compile/pr60655-1.c: Use __SIZE_TYPE__ for size_t.
+
+2014-04-06 John David Anglin <danglin@gcc.gnu.org>
+
+ PR testsuite/60671
+ g++.dg/pr49718.C: Adjust scan-assembler-times for hppa*-*-hpux*.
+
+2014-04-06 John David Anglin <danglin@gcc.gnu.org>
+
+ PR testsuite/60672
+ * g++.dg/cpp1y/auto-fn25.C: Require lto.
+
+ * gcc.dg/atomic/stdatomic-flag.c: xfail on hppa*-*-hpux*.
+
+2014-04-05 Dominique d'Humieres <dominiq@lps.ens.fr>
+
+ * gfortran.dg/warn_conversion_4.f90: Adjust test.
+
+2014-05-04 Pitchumani Sivanupandi <Pitchumani.S@atmel.com>
+
+ * gcc.target/avr/dev-specific-rmw.c: New test.
+
+2014-04-04 Cong Hou <congh@google.com>
+
+ PR tree-optimization/60656
+ * gcc.dg/vect/pr60656.c: New test.
+
+2014-04-04 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ * gcc.dg/builtin-bswap-6.c: Adjust return value to disable GCC
+ optimization.
+ * gcc.dg/builtin-bswap-7.c: Likewise.
+
+2014-04-04 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/58207
+ * g++.dg/cpp0x/constexpr-ice15.C: New.
+
+2014-04-04 Jan Hubicka <hubicka@ucw.cz>
+
+ PR ipa/59626
+ testcase by Richard Biener
+ * gcc.dg/lto/pr59626_0.c: New testcase.
+ * gcc.dg/lto/pr59626_1.c: New testcase.
+
+2014-04-04 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
+
+ PR debug/60655
+ * gcc.c-torture/compile/pr60655-1.c: New test.
+
+2014-04-04 Martin Jambor <mjambor@suse.cz>
+
+ PR ipa/60640
+ * g++.dg/ipa/pr60640-1.C: New test.
+ * g++.dg/ipa/pr60640-2.C: Likewise.
+ * g++.dg/ipa/pr60640-3.C: Likewise.
+ * g++.dg/ipa/pr60640-4.C: Likewise.
+
+2014-04-04 Jeff Law <law@redhat.com>
+
+ PR target/60657
+ * gcc.target/arm/pr60657.c: New test.
+
+2014-04-04 Richard Biener <rguenther@suse.de>
+
+ PR ipa/60746
+ * g++.dg/torture/pr60746.C: New testcase.
+
+2014-04-04 Fabien Chêne <fabien@gcc.gnu.org>
+
+ * g++.old-deja/g++.robertl/eb121.C: Adjust.
+ * g++.old-deja/g++.jason/overload21.C: Likewise.
+ * g++.old-deja/g++.law/init5.C: Likewise.
+
+2014-04-03 Cong Hou <congh@google.com>
+
+ PR tree-optimization/60505
+ * gcc.dg/vect/pr60505.c: New test.
+
+2014-04-03 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/60740
+ * gcc.dg/graphite/pr60740.c: New testcase.
+
+2014-04-03 Nathan Sidwell <nathan@codesourcery.com>
+
+ * g++.dg/warn/Wnvdtor.C: Add non-polymorphic case.
+ * g++.dg/warn/Wnvdtor-2.C: New.
+ * g++.dg/warn/Wnvdtor-3.C: New.
+ * g++.dg/warn/Wnvdtor-4.C: New.
+ * g++.dg/warn/Weff1.C: Delete.
+ * g++.old-deja/g++.benjamin/15309-1.C: Delete.
+ * g++.old-deja/g++.benjamin/15309-2.C: Delete.
+
+2014-04-02 Jan Hubicka <hubicka@ucw.cz>
+
+ PR ipa/60659
+ * testsuite/g++.dg/torture/pr60659.C: New testcase.
+
+2014-04-02 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ PR tree-optimization/60733
+ * gcc.dg/torture/pr60733.c: New test.
+
+2014-04-02 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR rtl-optimization/60650
+ * gcc.target/arm/pr60650-2.c: New.
+
+2014-04-02 Joseph Myers <joseph@codesourcery.cmo>
+
+ * gcc.target/i386/avx2-vpand-3.c,
+ gcc.target/i386/avx256-unaligned-load-2.c: Use -mno-prefer-avx128.
+
+2014-04-02 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.target/i386/funcspec-2.c, gcc.target/i386/funcspec-3.c,
+ gcc.target/i386/funcspec-9.c, gcc.target/i386/isa-1.c,
+ gcc.target/i386/memcpy-strategy-1.c,
+ gcc.target/i386/memcpy-strategy-2.c,
+ gcc.target/i386/memcpy-vector_loop-1.c,
+ gcc.target/i386/memcpy-vector_loop-2.c,
+ gcc.target/i386/memset-vector_loop-1.c,
+ gcc.target/i386/memset-vector_loop-2.c,
+ gcc.target/i386/sse2-init-v2di-2.c, gcc.target/i386/ssetype-1.c,
+ gcc.target/i386/ssetype-2.c, gcc.target/i386/ssetype-5.c: Skip for
+ -march= options different from those in dg-options.
+
+2014-04-02 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.target/i386/387-3.c, gcc.target/i386/387-4.c,
+ gcc.target/i386/pr30970.c: Use -mtune=generic.
+ * gcc.target/i386/avx2-vpaddb-3.c,
+ gcc.target/i386/avx2-vpaddd-3.c, gcc.target/i386/avx2-vpaddq-3.c,
+ gcc.target/i386/avx2-vpaddw-3.c, gcc.target/i386/avx2-vpmulld-3.c,
+ gcc.target/i386/avx2-vpmullw-3.c, gcc.target/i386/avx2-vpsrad-3.c,
+ gcc.target/i386/avx2-vpsraw-3.c, gcc.target/i386/avx2-vpsrld-3.c,
+ gcc.target/i386/avx2-vpsrlw-3.c, gcc.target/i386/avx2-vpsubb-3.c,
+ gcc.target/i386/avx2-vpsubd-3.c, gcc.target/i386/avx2-vpsubq-3.c,
+ gcc.target/i386/avx2-vpsubw-3.c,
+ gcc.target/i386/avx256-unaligned-load-1.c,
+ gcc.target/i386/avx256-unaligned-load-4.c,
+ gcc.target/i386/avx256-unaligned-store-1.c,
+ gcc.target/i386/avx256-unaligned-store-2.c,
+ gcc.target/i386/avx256-unaligned-store-4.c: Use
+ -mno-prefer-avx128.
+
+2014-03-26 Dominique d'Humieres <dominiq@lps.ens.fr>
+ Iain Sandoe <iain@codesourcery.com>
+
+ PR target/54083
+ * gcc.dg/attr-weakref-1.c: Allow the test on darwin
+ with the additional options -Wl,-undefined,dynamic_lookup
+ and -Wl,-flat_namespace.
+ * gcc.dg/torture/pr53922.c: Additional option
+ -Wl,-flat_namespace for darwin[89].
+ * gcc.dg/torture/pr60092.c: Additional options
+ -Wl,-undefined,dynamic_lookup and -Wl,-flat_namespace
+ for darwin[89].
+
+2014-03-26 Dominique d'Humieres <dominiq@lps.ens.fr>
+
+ PR target/43751
+ * lib/prune.exp: Modify the regular express to prune
+ the new warnings introduced by r205679 on darwin9.
+
+2014-04-01 Fabien Chêne <fabien@gcc.gnu.org>
+
+ * g++.dg/init/ctor4.C: Adjust.
+ * g++.dg/init/ctor4-1.C: New.
+ * g++.dg/cpp0x/defaulted2.C: Adjust.
+
+2014-04-01 Richard Henderson <rth@redhat.com>
+
+ PR target/60704
+ * gcc.dg/pr60704.c: New file.
+
+2014-04-01 Bin Cheng <bin.cheng@arm.com>
+
+ PR target/60363
+ * gcc.dg/tree-ssa/ssa-dom-thread-4.c: Xfail for
+ logical_op_short_circuit targets.
+
+2014-04-01 Dominique d'Humieres <dominiq@lps.ens.fr>
+
+ PR libfortran/60128
+ * gfortran.dg/fmt_en.f90: Skip unsupported rounding tests.
+ XFAIL for i?86-*-solaris2.9* and hppa*-*-hpux*.
+
+2014-03-31 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR rtl-optimization/60700
+ * gcc.target/i386/pr60700.c: New test.
+
+2014-03-31 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
+
+ PR target/60650
+ * gcc.target/arm/pr60650.c: Adjust command line options.
+
+2014-03-31 Martin Jambor <mjambor@suse.cz>
+
+ PR middle-end/60647
+ * gcc.dg/pr60647-1.c: New test.
+ * gcc.dg/pr60647-2.c: Likewise.
+
+2014-03-31 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/lto/pr55113_0.c: Skip also for 32bit multilib on x86_64.
+
+2014-03-31 Kugan Vivekanandarajah <kuganv@linaro.org>
+
+ PR target/60034
+ * gcc.target/aarch64/pr60034.c: New file.
+
+2014-03-29 Adam Butcher <adam@jessamine.co.uk>
+
+ PR c++/60626
+ * g++.dg/cpp1y/pr60626.C: New testcase.
+
+2014-03-29 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.dg/pr45416.c: Allow bextr on x86.
+ * gcc.target/i386/fma4-builtin.c, gcc.target/i386/fma4-fma-2.c,
+ gcc.target/i386/fma4-fma.c, gcc.target/i386/fma4-vector-2.c,
+ gcc.target/i386/fma4-vector.c: Use -mno-fma.
+ * gcc.target/i386/l_fma_double_1.c,
+ gcc.target/i386/l_fma_double_2.c,
+ gcc.target/i386/l_fma_double_3.c,
+ gcc.target/i386/l_fma_double_4.c,
+ gcc.target/i386/l_fma_double_5.c,
+ gcc.target/i386/l_fma_double_6.c, gcc.target/i386/l_fma_float_1.c,
+ gcc.target/i386/l_fma_float_2.c, gcc.target/i386/l_fma_float_3.c,
+ gcc.target/i386/l_fma_float_4.c, gcc.target/i386/l_fma_float_5.c,
+ gcc.target/i386/l_fma_float_6.c: Use -mno-fma4.
+ * gcc.target/i386/pr27971.c: Use -mno-tbm.
+ * gcc.target/i386/pr42542-4a.c: Use -mno-avx.
+ * gcc.target/i386/pr59390.c: Use -mno-fma -mno-fma4.
+
+2014-03-29 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/60648
+ * g++.dg/pr60648.C: Move test to...
+ * g++.dg/torture/pr60648.C: ... here. Run on all targets, remove
+ dg-options, add for fpic targets dg-additional-options -fPIC.
+
+2014-03-28 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/opt33.adb: New testcase.
+
+2014-03-28 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR target/60697
+ * gcc.target/aarch64/pr60697.c: New.
+
+2014-03-27 Jeff Law <law@redhat.com>
+
+ PR target/60648
+ * g++.dg/pr60648.C: New test.
+
+2014-03-28 Adam Butcher <adam@jessamine.co.uk>
+
+ PR c++/60573
+ * g++.dg/cpp1y/pr60573.C: New testcase.
+
+2014-03-28 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/60693
+ * gcc.target/i386/pr60693.c: New test.
+
+2014-03-28 Vishnu K S <Vishnu.k_s@atmel.com>
+
+ * gcc.dg/pr59940.c (si): Use 32-bit SI mode instead of int.
+
+2014-03-28 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/60689
+ * c-c++-common/pr60689.c: New test.
+
+ PR c++/58678
+ * g++.dg/abi/thunk6.C: Scan assembler for _ZTv0_n32_N1CD1Ev
+ only for lp64 targets and scan for _ZTv0_n16_N1CD1Ev for ilp32
+ targets.
+
+2014-03-28 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR target/60675
+ * gcc.target/aarch64/pr60675.C: New.
+
+2014-03-28 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ * gcc.dg/tree-ssa/ssa-dom-thread-4.c: Remove s390 special
+ option.
+ * lib/target-supports.exp: Return true for s390
+ in check_effective_logical_op_short_circuit.
+
+2014-03-28 Kirill Yukhin <kirill.yukhin@intel.com>
+
+ * gcc.target/i386/avx512f-vshuff32x4-2.c: Fix initialization
+ of second source operand.
+ * gcc.target/i386/avx512f-vshuff64x2-2.c: Ditto.
+ * gcc.target/i386/avx512f-vshufi32x4-2.c: Ditto.
+ * gcc.target/i386/avx512f-vshufi64x2-2.c: Ditto.
+
+2014-03-28 Jakub Jelinek <jakub@redhat.com>
+
+ PR ipa/60315
+ * g++.dg/torture/pr60315.C: Add -std=c++11 to dg-options.
+
+2014-03-28 Tobias Burnus <burnus@net-b.de>
+
+ * lib/cilk-plus-dg.exp: New.
+ * g++.dg/cilk-plus/cilk-plus.exp: Use it.
+ * gcc.dg/cilk-plus/cilk-plus.exp: Use it.
+
+2014-03-27 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/60522
+ * gfortran.dg/where_4.f90: New test case.
+
+2014-03-27 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/58880
+ * gfortran.dg/finalize_24.f90: New.
+
+2014-03-27 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ * gcc.target/powerpc/p8vector-vbpermq.c: New test to test the
+ vbpermq builtin.
+
+ * gcc.target/powerpc/vsx-extract-1.c: New test to test VSX
+ vec_select optimizations.
+ * gcc.target/powerpc/vsx-extract-2.c: Likewise.
+ * gcc.target/powerpc/vsx-extract-3.c: Likewise.
+
+ PR target/60672
+ * gcc.target/powerpc/pr60676.c: New file, make sure xxsldwi and
+ xxpermdi builtins are supported.
+
+2014-03-27 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR rtl-optimization/60650
+ * gcc.target/arm/pr60650.c: New.
+
+2014-03-27 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ * gcc.target/s390/20140327-1.c: New testcase.
+
+2014-03-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/60682
+ * g++.dg/gomp/pr60682.C: New test.
+
+2014-03-27 John David Anglin <danglin@gcc.gnu.org>
+
+ * gcc.dg/torture/pr60092.c: Remove default dg-skip-if arguments.
+
+2014-03-27 Marcus Shawcroft <marcus.shawcroft@arm.com>
+
+ PR target/60580
+ * gcc.target/aarch64/pr60580_1.c: New.
+ * gcc.target/aarch64/test_fp_attribute_1.c: New.
+ * gcc.target/aarch64/test_fp_attribute_2.c: New.
+
+2014-03-26 Dehao Chen <dehao@google.com>
+
+ * gcc.dg/predict-8.c: New test.
+
+2014-03-26 Fabien Chêne <fabien@gcc.gnu.org>
+
+ PR c++/52369
+ * g++.dg/init/const10.C: New.
+ * g++.dg/init/const11.C: New.
+ * g++.dg/init/pr25811.C: Adjust.
+ * g++.dg/init/pr29043.C: Likewise.
+ * g++.dg/init/pr43719.C: Likewise.
+ * g++.dg/init/pr44086.C: Likewise.
+ * g++.dg/init/ctor8.C: Likewise.
+ * g++.dg/init/uninitialized1.C: Likewise.
+
+2014-03-26 Jakub Jelinek <jakub@redhat.com>
+
+ PR sanitizer/60636
+ * c-c++-common/ubsan/pr60636.c: New test.
+
+2014-03-26 Andreas Schwab <schwab@suse.de>
+
+ * g++.dg/torture/pr60315.C: Remove duplication.
+
+2014-03-26 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc.c-torture/execute/20140326-1.c: New test.
+
+2014-03-25 Jan Hubicka <hubicka@ucw.cz>
+
+ PR ipa/60315
+ * g++.dg/torture/pr60315.C: New testcase.
+
+2014-03-25 Martin Jambor <mjambor@suse.cz>
+
+ PR ipa/60600
+ * g++.dg/ipa/pr60600.C: New test.
+
+2014-03-25 John David Anglin <danglin@gcc.gnu.org>
+
+ PR testsuite/58013
+ * g++.dg/opt/pr56999.C: Pop hidden visibility.
+
+2014-03-25 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/60635
+ * gfortran.dg/lto/pr60635_0.f90: New testcase.
+ * gfortran.dg/lto/pr60635_1.c: Likewise.
+
2014-03-24 Adam Butcher <adam@jessamine.co.uk>
PR c++/60627
diff --git a/gcc-4.9/gcc/testsuite/ChangeLog-2008 b/gcc-4.9/gcc/testsuite/ChangeLog-2008
index ca95319cb..2c354ff44 100644
--- a/gcc-4.9/gcc/testsuite/ChangeLog-2008
+++ b/gcc-4.9/gcc/testsuite/ChangeLog-2008
@@ -1814,7 +1814,7 @@
* gcc.dg/Warray-bounds-5.c: New test.
* gcc.dg/Warray-bounds-6.c: New test.
-2008-11-05 Fabien Chene <fabien.chene@gmail.com>
+2008-11-05 Fabien Chene <fabien@gcc.gnu.org>
PR c++/32519
* g++.dg/template/pr32519.C: New test.
diff --git a/gcc-4.9/gcc/testsuite/ChangeLog-2010 b/gcc-4.9/gcc/testsuite/ChangeLog-2010
index b8d94644a..47f39a3bc 100644
--- a/gcc-4.9/gcc/testsuite/ChangeLog-2010
+++ b/gcc-4.9/gcc/testsuite/ChangeLog-2010
@@ -11264,7 +11264,7 @@
* g++.dg/cpp0x/initlist26.C: Adjust.
* g++.dg/cpp0x/initlist28.C: Adjust.
-2010-05-10 Fabien Chêne <fabien.chene@gmail.com>
+2010-05-10 Fabien Chêne <fabien@gcc.gnu.org>
PR c++/43719
* g++.dg/init/pr43719.C: New.
@@ -11389,7 +11389,7 @@
* gnat.dg/sizetype3.ad[sb]: New test.
* gnat.dg/sizetype3_pkg.ads: New helper.
-2010-05-07 Fabien Chêne <fabien.chene@gmail.com>
+2010-05-07 Fabien Chêne <fabien@gcc.gnu.org>
PR c++/43951
* g++.dg/init/new29.C: New.
@@ -11738,12 +11738,6 @@
* gcc.dg/tree-ssa/builtin-free.c: New testcase.
-2010-04-29 Fabien Chêne <fabien.chene@gmail.com>
-
- PR c++/43890
- * init.c (diagnose_uninitialized_cst_or_ref_member): check for
- user-provided constructor while recursing.
-
2010-04-29 Janus Weil <janus@gcc.gnu.org>
PR fortran/42274
@@ -11866,7 +11860,7 @@
* g++.dg/template/pr23510.C: Update.
* lib/prune.exp: Filter out 'recursively instantiated'.
-2010-04-27 Fabien Chêne <fabien.chene@gmail.com>
+2010-04-27 Fabien Chêne <fabien@gcc.gnu.org>
PR c++/29043
* g++.dg/init/pr29043.C: New.
@@ -11898,7 +11892,7 @@
* g++.dg/template/sfinae17.C: New.
* g++.dg/template/sfinae18.C: New.
-2010-04-27 Fabien Chêne <fabien.chene@gmail.com>
+2010-04-27 Fabien Chêne <fabien@gcc.gnu.org>
* g++.dg/init/pr42844.C: New.
* g++.dg/cpp0x/pr42844-2.C: New.
@@ -12500,7 +12494,7 @@
* g++.dg/cpp0x/lambda/lambda-conv4.C: New.
* g++.dg/cpp0x/lambda/lambda-deduce2.C: New.
-2010-04-12 Fabien Chene <fabien.chene@gmail.com>
+2010-04-12 Fabien Chene <fabien@gcc.gnu.org>
PR c++/25811
* g++.dg/init/pr25811.C: New test.
diff --git a/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/CK/invalid_spawns.c b/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/CK/invalid_spawns.c
index ba9e61936..5b43be760 100644
--- a/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/CK/invalid_spawns.c
+++ b/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/CK/invalid_spawns.c
@@ -8,6 +8,7 @@ int main (void)
{
int x;
+ _Cilk_spawn foo; /* { dg-error "only function calls can be spawned" } */
_Cilk_spawn x; /* { dg-error "only function calls can be spawned" } */
return x;
}
diff --git a/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/CK/pr60469.c b/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/CK/pr60469.c
new file mode 100644
index 000000000..ca0cf7f68
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/CK/pr60469.c
@@ -0,0 +1,15 @@
+/* PR middle-end/60469 */
+/* { dg-do compile } */
+/* { dg-options "-fcilkplus" } */
+
+void foo() {}
+
+#define ALEN 1024
+
+int main(int argc, char* argv[])
+{
+ int b[ALEN];
+ b[:] = 100;
+ _Cilk_spawn foo();
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/c-c++-common/pr60689.c b/gcc-4.9/gcc/testsuite/c-c++-common/pr60689.c
new file mode 100644
index 000000000..9475bd835
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/c-c++-common/pr60689.c
@@ -0,0 +1,10 @@
+/* PR c++/60689 */
+/* { dg-do compile } */
+
+struct S { char x[9]; };
+
+void
+foo (struct S *x, struct S *y, struct S *z)
+{
+ __atomic_exchange (x, y, z, __ATOMIC_SEQ_CST);
+}
diff --git a/gcc-4.9/gcc/testsuite/c-c++-common/ubsan/pr60636.c b/gcc-4.9/gcc/testsuite/c-c++-common/ubsan/pr60636.c
new file mode 100644
index 000000000..416434137
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/c-c++-common/ubsan/pr60636.c
@@ -0,0 +1,15 @@
+/* PR sanitizer/60636 */
+/* { dg-do run } */
+/* { dg-options "-fsanitize=undefined" } */
+
+volatile long long int a;
+
+int
+main ()
+{
+ long long int u = -__LONG_LONG_MAX__ - 1;
+ a = u > 0 ? u : -u;
+ return 0;
+}
+
+/* { dg-output "negation of -9223372036854775808 cannot be represented in type 'long long int'" } */
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag3.C b/gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag3.C
index 05fd58e94..13cb3c2f2 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag3.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag3.C
@@ -1,5 +1,4 @@
-// An explicit specialization doesn't get the tag from its template unless
-// it is specified there, too.
+// An explicit specialization gets the tag from its template.
// { dg-final { scan-assembler "_ZN3FooB5cxx11IcE1fEv" } }
template<typename T>
@@ -12,12 +11,12 @@ struct __attribute ((abi_tag("cxx11"))) Foo
template<>
struct
__attribute ((abi_tag("cxx11")))
-Foo<int>
+Foo<int> // { dg-warning "attribute" }
{
int f();
};
-// { dg-final { scan-assembler "_ZN3FooIdE1fEv" } }
+// { dg-final { scan-assembler "_ZN3FooB5cxx11IdE1fEv" } }
template<>
struct
Foo<double>
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag6.C b/gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag6.C
new file mode 100644
index 000000000..94ea2f37b
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag6.C
@@ -0,0 +1,25 @@
+// PR c++/60642
+
+struct __attribute((abi_tag("test"))) foo
+{
+ void f();
+ virtual ~foo();
+};
+
+template<typename>
+struct __attribute((abi_tag("test"))) bar
+{
+ void f();
+ virtual ~bar();
+};
+
+int main()
+{
+ foo f;
+ f.f();
+
+ bar<int> b;
+ b.f();
+}
+
+// { dg-final { scan-assembler "_ZTV3barB4testIiE" } }
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag7.C b/gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag7.C
new file mode 100644
index 000000000..4c47725c5
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag7.C
@@ -0,0 +1,9 @@
+// PR c++/60642
+
+template<typename T>
+class __attribute((abi_tag("foo"))) test{ };
+
+template class __attribute((abi_tag("foo"))) test<int>; // { dg-warning "attribute" }
+
+void f(test<char>*) {}
+// { dg-final { scan-assembler "_Z1fP4testB3fooIcE" } }
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/abi/thunk6.C b/gcc-4.9/gcc/testsuite/g++.dg/abi/thunk6.C
new file mode 100644
index 000000000..6df51c24b
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/abi/thunk6.C
@@ -0,0 +1,19 @@
+// PR c++/60566
+// We need to emit the construction vtable thunk for ~C even if we aren't
+// going to use it.
+
+struct A
+{
+ virtual void f() = 0;
+ virtual ~A() {}
+};
+
+struct B: virtual A { int i; };
+struct C: virtual A { int i; ~C(); };
+
+C::~C() {}
+
+int main() {}
+
+// { dg-final { scan-assembler "_ZTv0_n32_N1CD1Ev" { target lp64 } } }
+// { dg-final { scan-assembler "_ZTv0_n16_N1CD1Ev" { target ilp32 } } }
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cilk-plus/cilk-plus.exp b/gcc-4.9/gcc/testsuite/g++.dg/cilk-plus/cilk-plus.exp
index 204a75458..0cb6539cb 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/cilk-plus/cilk-plus.exp
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cilk-plus/cilk-plus.exp
@@ -17,62 +17,55 @@
# Written by Balaji V. Iyer <balaji.v.iyer@intel.com>
load_lib g++-dg.exp
+load_lib cilk-plus-dg.exp
if { ![check_effective_target_cilkplus] } {
return;
}
-set library_var [get_multilibs]
-# Pointing the ld_library_path to the Cilk Runtime library binaries.
-append ld_library_path ":${library_var}/libcilkrts/.libs"
-set_ld_library_path_env_vars
-
-global TEST_EXTRA_LIBS
-set TEST_EXTRA_LIBS "-L${library_var}/libcilkrts/.libs"
-
dg-init
-# Run the tests that are shared with C.
-g++-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/PS/*.c]] ""
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] "-O3" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] " " " "
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] "-g -O2" " "
-# Run the C++ only tests.
-g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] ""
-dg-finish
+if [cilkplus_init] {
+ # Run the tests that are shared with C.
+ g++-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/PS/*.c]] ""
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] "-O3" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] " " " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] "-g -O2" " "
+ # Run the C++ only tests.
+ g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] ""
-dg-init
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O1 -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O2 -ftree-vectorize -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O3 -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -O1 -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -O2 -ftree-vectorize -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -O3 -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O3 -ftree-vectorize -fcilkplus -g" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O1 -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O2 -ftree-vectorize -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O3 -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -O1 -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -O2 -ftree-vectorize -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -O3 -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O3 -ftree-vectorize -fcilkplus -g" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O0 -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O1 -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O2 -ftree-vectorize -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O3 -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -O0 -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -O1 -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -O2 -ftree-vectorize -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -O3 -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O3 -ftree-vectorize -fcilkplus -g" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O0 -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O1 -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O2 -ftree-vectorize -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O3 -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -O0 -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -O1 -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -O2 -ftree-vectorize -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -O3 -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O3 -ftree-vectorize -fcilkplus -g" " "
-if { [check_libcilkrts_available] } {
- dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/CK/*.cc]] " -O1 -fcilkplus" " "
- dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/CK/*.cc]] " -O3 -fcilkplus" " "
- dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/CK/*.cc]] " -g -fcilkplus" " "
- dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/CK/*.cc]] " -g -O2 -fcilkplus" " "
+ if { [check_libcilkrts_available] } {
+ dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/CK/*.cc]] " -O1 -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/CK/*.cc]] " -O3 -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/CK/*.cc]] " -g -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/CK/*.cc]] " -g -O2 -fcilkplus" " "
- dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O1" " "
- dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O3" " "
- dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -g" " "
- dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -g -O2" " "
- }
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O1" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O3" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -g" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -g -O2" " "
+ }
+}
+cilkplus_finish
dg-finish
-unset TEST_EXTRA_LIBS
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/auto42.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/auto42.C
new file mode 100644
index 000000000..fea4c28d8
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/auto42.C
@@ -0,0 +1,9 @@
+// PR c++/60628
+// { dg-do compile { target c++11 } }
+
+#include <initializer_list>
+
+void foo(int i)
+{
+ auto x[1] = { 0 }; // { dg-error "array of .auto" }
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-ice15.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-ice15.C
new file mode 100644
index 000000000..576fd4150
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-ice15.C
@@ -0,0 +1,12 @@
+// PR c++/58207
+// { dg-do compile { target c++11 } }
+
+struct A
+{
+ virtual bool foo ();
+};
+
+struct B : public A
+{
+ constexpr B () : A (&::n) {} // { dg-error "declared" }
+};
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/defaulted2.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/defaulted2.C
index bd83c7fb2..63be99754 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/defaulted2.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/defaulted2.C
@@ -35,7 +35,7 @@ struct D: public C
struct E
{
- const B b;
+ const B b; // { dg-message "should be initialized" }
E() { } // { dg-error "uninitialized" }
};
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist81.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist81.C
new file mode 100644
index 000000000..5978c6388
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist81.C
@@ -0,0 +1,25 @@
+// PR c++/60713
+// { dg-options "-O" }
+// { dg-do compile { target c++11 } }
+
+template < class x0, class x1, class x2, class x3, class x4 >
+int *x5 (x0 *, x2 (x1::*)(x3, x4));
+
+class x6
+{
+ void x7 ();
+ struct x8
+ {
+ int *x9;
+ };
+ void x10 (x8);
+ void x11 (int *, int *);
+};
+
+void
+x6::x7 ()
+{
+ x10 ({
+ x5 (this, &x6::x11)
+ });
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist82.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist82.C
new file mode 100644
index 000000000..3b9ccad66
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist82.C
@@ -0,0 +1,20 @@
+// PR c++/60708
+// { dg-do compile { target c++11 } }
+
+template <class T, class U> struct mypair {
+ mypair(T, U) {}
+};
+
+template<typename T> struct S {
+ mypair<T *, int> get_pair() noexcept {
+ return mypair<T*,int>(nullptr, 0);
+ }
+};
+
+static void foo(const mypair<char *, int> (&a)[2]) noexcept { }
+
+int main()
+{
+ S<char> s;
+ foo({s.get_pair(), s.get_pair()});
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-uneval.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-uneval.C
index 898f685aa..dcea1690d 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-uneval.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-uneval.C
@@ -5,3 +5,5 @@ template <class T>
struct A { };
A<decltype([]{ return 1; }())> a; // { dg-error "lambda.*unevaluated context" }
+// { dg-prune-output "template argument" }
+// { dg-prune-output "invalid type" }
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-uneval2.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-uneval2.C
new file mode 100644
index 000000000..14cb29874
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-uneval2.C
@@ -0,0 +1,7 @@
+// PR c++/60375
+// { dg-do compile { target c++11 } }
+
+struct A
+{
+ decltype( [](){ return this; }() ) x; // { dg-error "unevaluated" }
+};
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/pr31439.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/pr31439.C
index f75373555..df50e41cd 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/pr31439.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/pr31439.C
@@ -1,7 +1,7 @@
// { dg-do compile { target c++11 } }
template<typename...> struct A;
-template<char> struct A<> {}; // { dg-error "not used in partial specialization|anonymous|declaration" }
+template<char> struct A<> {}; // { dg-error "not deducible|anonymous|declaration" }
template<typename T, typename... U> struct A<T, U...> : A<U...> {}; // { dg-error "incomplete type" }
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic154.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic154.C
new file mode 100644
index 000000000..198f9c5ba
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic154.C
@@ -0,0 +1,8 @@
+// PR c++/60374
+// { dg-do compile { target c++11 } }
+
+template<typename> struct A {};
+
+template<typename...T> struct A<T::T...> {}; // { dg-error "typename|partial|T" }
+
+A<int> a;
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic155.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic155.C
new file mode 100644
index 000000000..d912317bd
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic155.C
@@ -0,0 +1,4 @@
+// { dg-do compile { target c++11 } }
+
+template <typename T> struct A {};
+template <int... I> struct B: A<I...> {}; // { dg-error "type" }
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic156.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic156.C
new file mode 100644
index 000000000..7d3c97d68
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic156.C
@@ -0,0 +1,6 @@
+// PR c++/52844
+// { dg-do compile { target c++11 } }
+
+template < class > struct V { };
+template < int...Is > void f ( V < Is...>) { } // { dg-error "mismatch|type" }
+auto g ( ) -> decltype ( f ( V < long > ( ) ) ) ; // { dg-error "matching" }
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/vt-33964.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/vt-33964.C
index 9e40737d5..8cbc0d647 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/vt-33964.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/vt-33964.C
@@ -6,7 +6,7 @@ struct foo
};
template<typename ... Args>
-struct foo< typename Args::is_applied... > // { dg-error "not used|Args" }
+struct foo< typename Args::is_applied... > // { dg-error "not deducible|Args" }
{
static bool const value = false;
};
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/auto-fn25.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/auto-fn25.C
index 628a685f7..24680f16d 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/auto-fn25.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/auto-fn25.C
@@ -1,6 +1,7 @@
// PR c++/60574
-// { dg-options "-flto" }
// { dg-do compile { target c++1y } }
+// { dg-require-effective-target lto }
+// { dg-options "-flto" }
struct A
{
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/pr60573.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/pr60573.C
new file mode 100644
index 000000000..2f607071c
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/pr60573.C
@@ -0,0 +1,28 @@
+// PR c++/60573
+// { dg-do compile { target c++1y } }
+// { dg-options "" }
+
+struct A
+{
+ struct B
+ {
+ void foo(auto);
+ };
+
+ void B::foo(auto) {} // { dg-error "cannot define" }
+
+ struct X
+ {
+ struct Y
+ {
+ struct Z
+ {
+ void foo(auto);
+ };
+ };
+
+ void Y::Z::foo(auto) {} // { dg-error "cannot define" }
+ };
+
+ void X::Y::Z::foo(auto) {} // { dg-error "cannot define" }
+};
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/pr60626.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/pr60626.C
new file mode 100644
index 000000000..39ea43815
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/pr60626.C
@@ -0,0 +1,7 @@
+// PR c++/60626
+// { dg-do compile { target c++1y } }
+// { dg-options "" }
+
+struct A {};
+
+void (*A::p)(auto) = 0; // { dg-error "static member|non-template" }
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ext/vla14.C b/gcc-4.9/gcc/testsuite/g++.dg/ext/vla14.C
new file mode 100644
index 000000000..278cb63b9
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/ext/vla14.C
@@ -0,0 +1,23 @@
+// PR c++/21113
+// { dg-options "" }
+
+void
+f (int n)
+{
+ goto label; // { dg-error "from here" }
+ int a[n]; // { dg-error "crosses initialization" }
+label: // { dg-error "jump to label" }
+ ;
+}
+
+void
+g (int n)
+{
+ switch (1)
+ {
+ case 1:
+ int (*a)[n]; // { dg-error "crosses initialization" }
+ default: // { dg-error "jump to case label" }
+ ;
+ }
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ext/vla15.C b/gcc-4.9/gcc/testsuite/g++.dg/ext/vla15.C
new file mode 100644
index 000000000..feeb49ff2
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/ext/vla15.C
@@ -0,0 +1,20 @@
+// PR c++/44613
+// { dg-do run }
+// { dg-options "" }
+
+void *volatile p;
+
+int
+main (void)
+{
+ int n = 0;
+ lab:;
+ int x[n % 1000 + 1];
+ x[0] = 1;
+ x[n % 1000] = 2;
+ p = x;
+ n++;
+ if (n < 1000000)
+ goto lab;
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/gomp/pr60682.C b/gcc-4.9/gcc/testsuite/g++.dg/gomp/pr60682.C
new file mode 100644
index 000000000..fdd7a204c
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/gomp/pr60682.C
@@ -0,0 +1,44 @@
+// PR middle-end/60682
+// { dg-do compile }
+// { dg-options "-O2 -fopenmp-simd" }
+
+struct A
+{
+ float a;
+ A () {}
+ A (const A &x) { a = x.a; }
+};
+
+struct B
+{
+ A a[16];
+};
+
+struct C
+{
+ float a[1];
+ C () {}
+ C (const C &x) { a[0] = x.a[0]; }
+};
+
+struct D
+{
+ C a[16];
+};
+
+void
+foo (int x, B &y, D &z)
+{
+#pragma omp simd
+ for (int i = 0; i < x; ++i)
+ {
+ A a;
+ y.a[i] = a;
+ }
+#pragma omp simd
+ for (int i = 0; i < x; ++i)
+ {
+ C a;
+ z.a[i] = a;
+ }
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/init/const10.C b/gcc-4.9/gcc/testsuite/g++.dg/init/const10.C
new file mode 100644
index 000000000..ecd0db450
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/init/const10.C
@@ -0,0 +1,33 @@
+// PR C++/52369
+// { dg-do compile { target c++11 } }
+
+class B // { dg-message "implicitly deleted" }
+ // { dg-error "uninitialized" "" { target c++11 } 4 }
+{
+ int const v_; // { dg-message "should be initialized" }
+};
+
+struct D : B {}; // { dg-error "deleted" }
+
+class A // { dg-message "implicitly deleted" }
+ // { dg-error "uninitialized" "" { target c++11 } 12 }
+{
+ int& ref; // { dg-message "should be initialized" }
+};
+
+struct C : A {}; // { dg-error "deleted" }
+
+void f()
+{
+ D d; // { dg-error "use of deleted" }
+ new D; // { dg-error "use of deleted" }
+ D(); // { dg-error "use of deleted" }
+ new D(); // { dg-error "use of deleted" }
+
+ C c; // { dg-error "use of deleted" }
+ new C; // { dg-error "use of deleted" }
+ C(); // { dg-error "use of deleted" }
+ new C(); // { dg-error "use of deleted" }
+}
+
+
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/init/const11.C b/gcc-4.9/gcc/testsuite/g++.dg/init/const11.C
new file mode 100644
index 000000000..08d5185c0
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/init/const11.C
@@ -0,0 +1,29 @@
+// PR C++/52369
+// { dg-do compile { target { ! c++11 } } }
+
+class B
+{
+ int const v_; // { dg-message "should be initialized" }
+};
+
+struct D : B {};
+
+class A
+{
+ int& ref; // { dg-message "should be initialized" }
+};
+
+struct C : A {};
+
+void f()
+{
+ D d; // { dg-error "uninitialized" }
+ new D; // { dg-error "uninitialized" }
+ D();
+ new D();
+
+ C c; // { dg-error "uninitialized" }
+ new C; // { dg-error "uninitialized" }
+ C(); // { dg-error "value-initialization" }
+ new C(); // { dg-error "value-initialization" }
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/init/ctor4-1.C b/gcc-4.9/gcc/testsuite/g++.dg/init/ctor4-1.C
new file mode 100644
index 000000000..1333b35f9
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/init/ctor4-1.C
@@ -0,0 +1,21 @@
+// { dg-do compile }
+
+class foo {
+public:
+ foo();
+};
+
+class bar: public foo { // { dg-error "uninitialized" }
+ // { dg-message "implicitly deleted" "" { target c++11 } 8 }
+private:
+ int const a; // { dg-message "should be initialized" }
+};
+
+foo::foo() {
+}
+
+int main(int argc, char **argv)
+{
+ bar x; // { dg-error "deleted" "" { target c++11 } }
+ // { dg-message "synthesized" "" { target { ! c++11 } } 19 }
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/init/ctor4.C b/gcc-4.9/gcc/testsuite/g++.dg/init/ctor4.C
index 1c92bb973..21034b679 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/init/ctor4.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/init/ctor4.C
@@ -6,9 +6,10 @@ public:
foo();
};
-class bar: public foo { // { dg-error "reference|bar::bar" }
+class bar: public foo { // { dg-error "uninitialized" }
+ // { dg-message "implicitly deleted" "" { target c++11 } 9 }
private:
- int &a;
+ int &a; // { dg-message "should be initialized" }
};
foo::foo() {
@@ -16,5 +17,6 @@ foo::foo() {
int main(int argc, char **argv)
{
- bar x; // { dg-message "synthesized|deleted" }
+ bar x; // { dg-error "deleted" "" { target c++11 } }
+ // { dg-message "synthesized" "" { target { ! c++11 } } 20 }
}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/init/ctor8.C b/gcc-4.9/gcc/testsuite/g++.dg/init/ctor8.C
index 7eb72eb83..3c37790c0 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/init/ctor8.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/init/ctor8.C
@@ -1,6 +1,6 @@
// PR c++/29039
-typedef struct S { // { dg-error "reference" "" { target c++11 } }
+typedef struct S { // { dg-error "reference" "" { target c++11 } }
int &r;
}; // { dg-warning "'typedef' was ignored" }
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/init/pr25811.C b/gcc-4.9/gcc/testsuite/g++.dg/init/pr25811.C
index 0a462be54..c29f40607 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/init/pr25811.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/init/pr25811.C
@@ -1,51 +1,60 @@
// PR c++/25811
// { dg-do compile }
-struct A1 // { dg-error "uninitialized" "" { target c++11 } }
+struct A1 // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 4 }
{
- int const j; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int const j; // { dg-message "should be initialized" }
};
-struct A2 // { dg-error "uninitialized" "" { target c++11 } }
+struct A2 // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 10 }
{
- int const volatile i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int const volatile i; // { dg-message "should be initialized" }
};
-struct A3 // { dg-error "uninitialized" "" { target c++11 } }
+struct A3 // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 16 }
{
- int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int& ref; // { dg-message "should be initialized" }
};
-struct A4 // { dg-error "uninitialized" "" { target c++11 } }
+struct A4 // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 22 }
{
- int const& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int const& ref; // { dg-message "should be initialized" }
};
-struct A5 // { dg-error "uninitialized" "" { target c++11 } }
+struct A5 // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 28 }
{
- int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } }
- int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int& ref; // { dg-message "should be initialized" }
+ int const i; // { dg-message "should be initialized" }
};
-template <class T> struct S1 // { dg-error "uninitialized" "" { target c++11 } }
+template <class T> struct S1 // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 35 }
{
- T const i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ T const i; // { dg-message "should be initialized" }
};
-template <class T> struct S2 // { dg-error "uninitialized" "" { target c++11 } }
+template <class T> struct S2 // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 41 }
{
- T const volatile i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ T const volatile i; // { dg-message "should be initialized" }
};
-template <class T> struct S3 // { dg-error "uninitialized" "" { target c++11 } }
+template <class T> struct S3 // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 47 }
{
- T& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ T& ref; // { dg-message "should be initialized" }
};
-template <class T> struct S4 // { dg-error "uninitialized" "" { target c++11 } }
+template <class T> struct S4 // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 53 }
{
- T const i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
- T& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ T const i; // { dg-message "should be initialized" }
+ T& ref; // { dg-message "should be initialized" }
};
struct X
@@ -55,44 +64,50 @@ struct X
int const& r;
};
-struct Y11 // { dg-error "uninitialized" "" { target c++11 } }
+struct Y11 // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 67 }
{
- int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int const i; // { dg-message "should be initialized" }
};
-struct Y1 // { dg-error "deleted" "" { target c++11 } }
+struct Y1 // { dg-error "deleted" "" { target c++11 } }
{
Y11 a[1];
};
-struct Y22 // { dg-error "uninitialized" "" { target c++11 } }
+struct Y22 // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 78 }
{
- int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int& ref; // { dg-message "should be initialized" }
};
-struct Y2 // { dg-error "deleted" "" { target c++11 } }
+struct Y2 // { dg-error "deleted" "" { target c++11 } }
{
Y22 a[1];
};
-struct Z1 // { dg-error "uninitialized" "" { target c++11 } }
+struct Z1 // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 89 }
{
- int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int const i; // { dg-message "should be initialized" }
};
-struct Z2 // { dg-error "uninitialized" "" { target c++11 } }
+struct Z2 // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 95 }
{
- int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int& ref; // { dg-message "should be initialized" }
};
-struct Z3 // { dg-error "uninitialized" "" { target c++11 } }
+struct Z3 // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 101 }
{
- int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int const i; // { dg-message "should be initialized" }
};
-struct Z4 // { dg-error "uninitialized" "" { target c++11 } }
+struct Z4 // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 107 }
{
- int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int& ref; // { dg-message "should be initialized" }
};
struct Z5
@@ -100,7 +115,7 @@ struct Z5
int i;
};
-struct Z // { dg-error "deleted" "" { target c++11 } }
+struct Z // { dg-error "deleted" "" { target c++11 } }
{
Z1 z1;
Z2 z2;
@@ -109,9 +124,10 @@ struct Z // { dg-error "deleted" "" { target c++11 } }
Z5 z5;
};
-union U // { dg-error "uninitialized" "" { target c++11 } }
+union U // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 127 }
{
- int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int const i; // { dg-message "should be initialized" }
};
void f1 ()
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/init/pr29043.C b/gcc-4.9/gcc/testsuite/g++.dg/init/pr29043.C
index f341f8c8f..c81c39cb0 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/init/pr29043.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/init/pr29043.C
@@ -1,9 +1,10 @@
// PR c++/29043
// { dg-do compile }
-struct S // { dg-error "uninitialized" "" { target c++11 } }
+struct S // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 4 }
{
- int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int const i; // { dg-message "should be initialized" }
};
class C
@@ -13,9 +14,10 @@ public:
S s;
};
-struct S2 // { dg-error "uninitialized" "" { target c++11 } }
+struct S2 // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 17 }
{
- int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int& ref; // { dg-message "should be initialized" }
};
class C2
@@ -33,9 +35,10 @@ class C3
};
};
-struct S4 // { dg-error "uninitialized" "" { target c++11 } }
+struct S4 // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 38 }
{
- int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int const i; // { dg-message "should be initialized" }
};
struct C4
@@ -46,7 +49,7 @@ struct C4
struct C5
{
- C5() {} // { dg-message "uninitialized" }
+ C5() {} // { dg-error "uninitialized" }
int const iit[ 1 ];
};
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/init/pr43719.C b/gcc-4.9/gcc/testsuite/g++.dg/init/pr43719.C
index 81930d07d..c8cebc2de 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/init/pr43719.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/init/pr43719.C
@@ -1,51 +1,51 @@
// PR c++/43719
// { dg-do compile }
-struct A1 // { dg-error "uninitialized" "" { target c++11 } }
+struct A1 // { dg-error "uninitialized" "" { target c++11 } }
{
- int const j; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int const j; // { dg-message "should be initialized" }
};
-struct A2 // { dg-error "uninitialized" "" { target c++11 } }
+struct A2 // { dg-error "uninitialized" "" { target c++11 } }
{
- int const volatile i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int const volatile i; // { dg-message "should be initialized" }
};
-struct A3 // { dg-error "uninitialized" "" { target c++11 } }
+struct A3 // { dg-error "uninitialized" "" { target c++11 } }
{
- int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int& ref; // { dg-message "should be initialized" }
};
-struct A4 // { dg-error "uninitialized" "" { target c++11 } }
+struct A4 // { dg-error "uninitialized" "" { target c++11 } }
{
- int const& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int const& ref; // { dg-message "should be initialized" }
};
-struct A5 // { dg-error "uninitialized" "" { target c++11 } }
+struct A5 // { dg-error "uninitialized" "" { target c++11 } }
{
- int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } }
- int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int& ref; // { dg-message "should be initialized" }
+ int const i; // { dg-message "should be initialized" }
};
template <class T> struct S1 // { dg-error "uninitialized" "" { target c++11 } }
{
- T const i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ T const i; // { dg-message "should be initialized" }
};
template <class T> struct S2 // { dg-error "uninitialized" "" { target c++11 } }
{
- T const volatile i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ T const volatile i; // { dg-message "should be initialized" }
};
template <class T> struct S3 // { dg-error "uninitialized" "" { target c++11 } }
{
- T& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ T& ref; // { dg-message "should be initialized" }
};
template <class T> struct S4 // { dg-error "uninitialized" "" { target c++11 } }
{
- T const i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
- T& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ T const i; // { dg-message "should be initialized" }
+ T& ref; // { dg-message "should be initialized" }
};
struct X
@@ -55,9 +55,9 @@ struct X
int const& r;
};
-struct Y11 // { dg-error "uninitialized" "" { target c++11 } }
+struct Y11 // { dg-error "uninitialized" "" { target c++11 } }
{
- int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int const i; // { dg-message "should be initialized" }
};
struct Y1 // { dg-error "deleted" "" { target c++11 } }
@@ -65,9 +65,9 @@ struct Y1 // { dg-error "deleted" "" { target c++11 } }
Y11 a[1];
};
-struct Y22 // { dg-error "uninitialized" "" { target c++11 } }
+struct Y22 // { dg-error "uninitialized" "" { target c++11 } }
{
- int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int& ref; // { dg-message "should be initialized" }
};
struct Y2 // { dg-error "deleted" "" { target c++11 } }
@@ -75,24 +75,24 @@ struct Y2 // { dg-error "deleted" "" { target c++11 } }
Y22 a[1];
};
-struct Z1 // { dg-error "uninitialized" "" { target c++11 } }
+struct Z1 // { dg-error "uninitialized" "" { target c++11 } }
{
- int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int const i; // { dg-message "should be initialized" }
};
-struct Z2 // { dg-error "uninitialized" "" { target c++11 } }
+struct Z2 // { dg-error "uninitialized" "" { target c++11 } }
{
- int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int& ref; // { dg-message "should be initialized" }
};
-struct Z3 // { dg-error "uninitialized" "" { target c++11 } }
+struct Z3 // { dg-error "uninitialized" "" { target c++11 } }
{
- int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int const i; // { dg-message "should be initialized" }
};
-struct Z4 // { dg-error "uninitialized" "" { target c++11 } }
+struct Z4 // { dg-error "uninitialized" "" { target c++11 } }
{
- int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int& ref; // { dg-message "should be initialized" }
};
struct Z5
@@ -109,9 +109,9 @@ struct Z // { dg-error "deleted" "" { target c++11 } }
Z5 z5;
};
-union U // { dg-error "uninitialized" "" { target c++11 } }
+union U // { dg-error "uninitialized" "" { target c++11 } }
{
- int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int const i; // { dg-message "should be initialized" }
};
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/init/pr44086.C b/gcc-4.9/gcc/testsuite/g++.dg/init/pr44086.C
index 96b5bef1c..c3e9d4e56 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/init/pr44086.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/init/pr44086.C
@@ -1,9 +1,9 @@
// PR c++/44086
// { dg-do compile }
-struct A // { dg-error "uninitialized" "" { target c++11 } }
+struct A // { dg-error "uninitialized" "" { target c++11 } }
{
- int const i : 2; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int const i : 2; // { dg-message "should be initialized" }
};
void f()
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/init/uninitialized1.C b/gcc-4.9/gcc/testsuite/g++.dg/init/uninitialized1.C
index 1e4f7ae84..e8509ff4b 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/init/uninitialized1.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/init/uninitialized1.C
@@ -1,8 +1,8 @@
// PR c++/58126
-struct A { // { dg-error "uninitialized" "" { target c++11 } }
- const int value1;
- int& value2;
+struct A { // { dg-error "uninitialized" "" { target c++11 } }
+ const int value1; // { dg-message "should be initialized" }
+ int& value2; // { dg-message "should be initialized" }
};
struct B : A { }; // { dg-error "deleted" "" { target c++11 } }
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-21.C b/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-21.C
index 99f60afe3..675bd08d7 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-21.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-21.C
@@ -37,5 +37,5 @@ main()
{
class C c;
}
-/* { dg-final { scan-ipa-dump "Discovered a virtual call to" "cp" } } */
+/* { dg-final { scan-ipa-dump "Discovered a virtual call to" "cp" { xfail *-*-* } } } */
/* { dg-final { cleanup-ipa-dump "cp" } } */
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-23.C b/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-23.C
index a32c7d674..98d86aee8 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-23.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-23.C
@@ -45,5 +45,5 @@ main()
{
class C c;
}
-/* { dg-final { scan-ipa-dump "Discovered a virtual call to" "cp" } } */
+/* { dg-final { scan-ipa-dump "Discovered a virtual call to" "cp" { xfail *-*-* } } } */
/* { dg-final { cleanup-ipa-dump "cp" } } */
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60600.C b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60600.C
new file mode 100644
index 000000000..00c368e63
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60600.C
@@ -0,0 +1,34 @@
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-ipa-cp" } */
+
+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);
+}
+
+/* { dg-final { scan-ipa-dump "Type inconsident devirtualization" "cp" } } */
+/* { dg-final { cleanup-ipa-dump "cp" } } */
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-1.C b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-1.C
new file mode 100644
index 000000000..7a0b91893
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-1.C
@@ -0,0 +1,50 @@
+// { dg-do compile }
+// { dg-options "-O3" }
+
+class ASN1Object
+{
+public:
+ virtual ~ASN1Object ();
+};
+class A
+{
+ virtual unsigned m_fn1 () const;
+};
+class B
+{
+public:
+ ASN1Object Element;
+ virtual unsigned m_fn1 (bool) const;
+};
+template <class BASE> class C : public BASE
+{
+};
+
+class D : ASN1Object, public B
+{
+};
+class G : public D
+{
+ unsigned m_fn1 (bool) const {}
+};
+class F : A
+{
+public:
+ F (A);
+ unsigned m_fn1 () const
+ {
+ int a;
+ a = m_fn2 ().m_fn1 (0);
+ return a;
+ }
+ const B &m_fn2 () const { return m_groupParameters; }
+ C<G> m_groupParameters;
+};
+template <class D> void BenchMarkKeyAgreement (int *, int *, int)
+{
+ A f;
+ D d (f);
+}
+
+void BenchmarkAll2 () { BenchMarkKeyAgreement<F>(0, 0, 0); }
+
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-2.C b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-2.C
new file mode 100644
index 000000000..c6e614cc0
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-2.C
@@ -0,0 +1,15 @@
+// { dg-do compile }
+// { dg-options "-O3" }
+
+struct B { virtual unsigned f () const; };
+struct C { virtual void f (); };
+struct F { virtual unsigned f (bool) const; ~F (); };
+struct J : C, F {};
+struct G : J { unsigned f (bool) const { return 0; } };
+struct H : B
+{
+ H (int);
+ unsigned f () const { return ((const F &) h).f (0); }
+ G h;
+};
+H h (0);
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-3.C b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-3.C
new file mode 100644
index 000000000..21b1f58a0
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-3.C
@@ -0,0 +1,81 @@
+// { dg-do run }
+// { dg-options "-O3" }
+
+struct Distraction
+{
+ char fc[8];
+ virtual Distraction * return_self ()
+ { return this; }
+};
+
+namespace {
+
+struct A;
+static A * __attribute__ ((noinline, noclone)) get_an_A ();
+
+static int go;
+
+struct A
+{
+ int fi;
+
+ A () : fi(777) {}
+ A (int pi) : fi (pi) {}
+ virtual A * foo (int p) = 0;
+};
+
+struct B;
+static B * __attribute__ ((noinline, noclone)) get_a_B ();
+
+struct B : public Distraction, A
+{
+ B () : Distraction(), A() { }
+ B (int pi) : Distraction (), A (pi) {}
+ virtual B * foo (int p)
+ {
+ int o = fi;
+ for (int i = 0; i < p; i++)
+ o += i + i * i;
+ go = o;
+
+ return get_a_B ();
+ }
+};
+
+
+struct B gb1 (1111), gb2 (2);
+static B * __attribute__ ((noinline, noclone))
+get_a_B ()
+{
+ return &gb1;
+}
+
+static A * __attribute__ ((noinline, noclone))
+get_an_A ()
+{
+ return &gb2;
+}
+
+}
+
+static int __attribute__ ((noinline, noclone))
+get_a_number ()
+{
+ return 5;
+}
+
+extern "C" void abort (void);
+
+int main (int argc, char *argv[])
+{
+ for (int i = 0; i < get_a_number (); i++)
+ {
+ struct A *p = get_an_A ();
+ struct A *r = p->foo (4);
+ if (r->fi != 1111)
+ abort ();
+ if (go != 22)
+ abort ();
+ }
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-4.C b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-4.C
new file mode 100644
index 000000000..eb9eb627f
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-4.C
@@ -0,0 +1,85 @@
+// { dg-do run }
+// { dg-options "-O3 -fdump-ipa-cp" }
+
+struct Distraction
+{
+ char fc[8];
+ virtual Distraction * return_self ()
+ { return this; }
+};
+
+namespace {
+
+struct A;
+static A * __attribute__ ((noinline, noclone)) get_an_A ();
+
+static int go;
+
+struct A
+{
+ int fi;
+
+ A () : fi(777) {}
+ A (int pi) : fi (pi) {}
+ virtual void foo (int p) = 0;
+};
+
+struct B : public Distraction, A
+{
+ B () : Distraction(), A() { }
+ B (int pi) : Distraction (), A (pi) {}
+ virtual void foo (int p)
+ {
+ int o = fi;
+ for (int i = 0; i < p; i++)
+ o += i + i * i;
+ go = o;
+ }
+};
+
+
+struct B gb (2);
+static A * __attribute__ ((noinline, noclone))
+get_an_A ()
+{
+ return &gb;
+}
+
+}
+
+static int __attribute__ ((noinline, noclone))
+get_a_number ()
+{
+ return 5;
+}
+
+extern "C" void abort (void);
+
+static void __attribute__ ((noinline, noclone))
+bar ()
+{
+ for (int i = 0; i < get_a_number (); i++)
+ {
+ struct A *p = get_an_A ();
+ p->foo (4);
+ if (go != 22)
+ abort ();
+ }
+}
+
+int main (int argc, char *argv[])
+{
+ for (int i = 0; i < get_a_number (); i++)
+ {
+ struct A *p = get_an_A ();
+ p->foo (4);
+ if (go != 22)
+ abort ();
+ }
+
+ bar ();
+ return 0;
+}
+
+/* { dg-final { scan-ipa-dump-times "Thunk fixed offset" 2 "cp"} } */
+/* { dg-final { cleanup-ipa-dump "cp" } } */
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/lto/pr60567_0.C b/gcc-4.9/gcc/testsuite/g++.dg/lto/pr60567_0.C
new file mode 100644
index 000000000..966a3c3bc
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/lto/pr60567_0.C
@@ -0,0 +1,23 @@
+// PR lto/60567
+// { dg-lto-do link }
+// { dg-lto-options { { -flto -fno-use-linker-plugin } } }
+// { dg-extra-ld-options "-r -nostdlib" }
+
+#pragma implementation
+struct S {};
+
+#pragma interface
+struct T
+{
+ virtual void foo (const S &) = 0;
+};
+
+struct U
+{
+ virtual void bar (const S &) = 0;
+};
+
+struct V : public T, public U
+{
+ virtual void bar (const S &) {}
+};
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/opt/pr56999.C b/gcc-4.9/gcc/testsuite/g++.dg/opt/pr56999.C
index 6db2f270e..8d89ffa16 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/opt/pr56999.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/opt/pr56999.C
@@ -159,6 +159,7 @@ TypeCompartment::addPendingRecompile (JSContext *cx, const RecompileInfo & info)
pendingRecompiles->append (info);
}
volatile JITScript *JSScript::JITScriptHandle::UNJITTABLE;
+#pragma GCC visibility pop
int
main ()
{
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/pr49718.C b/gcc-4.9/gcc/testsuite/g++.dg/pr49718.C
index d7f2710a9..b1cc5deb7 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/pr49718.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/pr49718.C
@@ -2,7 +2,8 @@
/* { dg-options "-O2 -finstrument-functions" } */
/* { dg-additional-options "-mno-explicit-relocs" { target alpha*-*-* } } */
/* { dg-additional-options "-mno-relax-pic-calls" { target mips*-*-* } } */
-/* { dg-final { scan-assembler-times "__cyg_profile_func_enter" 1} } */
+/* { dg-final { scan-assembler-times "__cyg_profile_func_enter" 1 { target { ! { hppa*-*-hpux* } } } } } */
+/* { dg-final { scan-assembler-times "__cyg_profile_func_enter,%r" 1 { target hppa*-*-hpux* } } } */
#define NOINSTR __attribute__((no_instrument_function))
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/template/crash119.C b/gcc-4.9/gcc/testsuite/g++.dg/template/crash119.C
new file mode 100644
index 000000000..95d80a8ff
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/template/crash119.C
@@ -0,0 +1,8 @@
+// PR c++/59115
+
+template<typename T, float, int, typename U> void foo(T, U) {} // { dg-error "valid type" }
+
+void bar()
+{
+ foo(0, 0); // { dg-error "matching" }
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/template/crash97.C b/gcc-4.9/gcc/testsuite/g++.dg/template/crash97.C
index 3d177f4e5..7d2161f54 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/template/crash97.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/template/crash97.C
@@ -2,7 +2,7 @@
template<typename> struct A {};
-template<typename> struct A<int> // { dg-error "not used|template\\-parameter" }
+template<typename> struct A<int> // { dg-error "not deducible|template\\-parameter" }
{
template<int> void foo();
};
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/template/crash98.C b/gcc-4.9/gcc/testsuite/g++.dg/template/crash98.C
index a79ab02f6..9d7d2ece1 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/template/crash98.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/template/crash98.C
@@ -2,7 +2,7 @@
template < typename > struct A;
-template < typename > struct A < int > // { dg-error "not used|template\\-parameter|declaration" }
+template < typename > struct A < int > // { dg-error "not deducible|template\\-parameter|declaration" }
{
int i;
int f ();
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/template/partial5.C b/gcc-4.9/gcc/testsuite/g++.dg/template/partial5.C
index aa32e3b8a..979e4c62b 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/template/partial5.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/template/partial5.C
@@ -4,7 +4,7 @@ template<typename T>
struct X { };
template<typename T>
-struct X<typename T::foo> { }; // { dg-error "not used|T" }
+struct X<typename T::foo> { }; // { dg-error "not deducible|T" }
template<int N>
struct X<int[N]> {}; // okay
@@ -14,7 +14,7 @@ template<typename T, typename T::foo V>
struct Y { };
template<typename T, typename U, U v>
-struct Y<T, v> { }; // { dg-error "not used|U" }
+struct Y<T, v> { }; // { dg-error "not deducible|U" }
template<typename T, T V>
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60315.C b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60315.C
new file mode 100644
index 000000000..05575c463
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60315.C
@@ -0,0 +1,19 @@
+// PR ipa/60315
+// { dg-do compile }
+// { dg-options "-std=c++11" }
+
+struct Base {
+ virtual int f() = 0;
+};
+
+struct Derived : public Base {
+ virtual int f() final override {
+ return 42;
+ }
+};
+
+extern Base* b;
+
+int main() {
+ return (static_cast<Derived*>(b)->*(&Derived::f))();
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60609.C b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60609.C
new file mode 100644
index 000000000..9ddec0b60
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60609.C
@@ -0,0 +1,252 @@
+/* { dg-do assemble } */
+
+class exception
+{
+};
+class bad_alloc:exception
+{
+};
+class logic_error:exception
+{
+};
+class domain_error:logic_error
+{
+};
+class invalid_argument:logic_error
+{
+};
+class length_error:logic_error
+{
+};
+class overflow_error:exception
+{
+};
+typedef int mpz_t[];
+template < class > class __gmp_expr;
+template <> class __gmp_expr < mpz_t >
+{
+ ~__gmp_expr ();
+};
+
+class PIP_Solution_Node;
+class internal_exception
+{
+ ~internal_exception ();
+};
+class not_an_integer:internal_exception
+{
+};
+class not_a_variable:internal_exception
+{
+};
+class not_an_optimization_mode:internal_exception
+{
+};
+class not_a_bounded_integer_type_width:internal_exception
+{
+};
+class not_a_bounded_integer_type_representation:internal_exception
+{
+};
+class not_a_bounded_integer_type_overflow:internal_exception
+{
+};
+class not_a_complexity_class:internal_exception
+{
+};
+class not_a_control_parameter_name:internal_exception
+{
+};
+class not_a_control_parameter_value:internal_exception
+{
+};
+class not_a_pip_problem_control_parameter_name:internal_exception
+{
+};
+class not_a_pip_problem_control_parameter_value:internal_exception
+{
+};
+class not_a_relation:internal_exception
+{
+};
+class ppl_handle_mismatch:internal_exception
+{
+};
+class timeout_exception
+{
+ ~timeout_exception ();
+};
+class deterministic_timeout_exception:timeout_exception
+{
+};
+void __assert_fail (const char *, const char *, int, int *)
+__attribute__ ((__noreturn__));
+void PL_get_pointer (void *);
+int Prolog_is_address ();
+inline int
+Prolog_get_address (void **p1)
+{
+ Prolog_is_address ()? static_cast <
+ void >(0) : __assert_fail ("Prolog_is_address", "./swi_cfli.hh", 0, 0);
+ PL_get_pointer (p1);
+ return 0;
+}
+
+class non_linear:internal_exception
+{
+};
+class not_unsigned_integer:internal_exception
+{
+};
+class not_universe_or_empty:internal_exception
+{
+};
+class not_a_nil_terminated_list:internal_exception
+{
+};
+class PPL_integer_out_of_range
+{
+ __gmp_expr < mpz_t > n;
+};
+void handle_exception ();
+template < typename T > T * term_to_handle (int, const char *)
+{
+ if (Prolog_is_address ())
+ {
+ void *p;
+ Prolog_get_address (&p);
+ return static_cast < T * >(0);
+ }
+ throw;
+}
+
+void
+ppl_new_MIP_Problem_from_MIP_Problem ()
+try
+{
+ term_to_handle < int >(0, "ppl_new_MIP_Problem_from_MIP_Problem/2");
+}
+
+catch (exception &)
+{
+}
+
+int
+ppl_PIP_Tree_Node_parametric_values ()
+{
+ try
+ {
+ PIP_Solution_Node *a = term_to_handle < PIP_Solution_Node > (0, 0);
+ (void)a;
+ return 1;
+ }
+ catch (internal_exception &)
+ {
+ }
+ catch (not_unsigned_integer &)
+ {
+ handle_exception ();
+ }
+ catch (non_linear &)
+ {
+ handle_exception ();
+ }
+ catch (not_a_variable &)
+ {
+ handle_exception ();
+ }
+ catch (not_an_integer &)
+ {
+ handle_exception ();
+ }
+ catch (ppl_handle_mismatch &)
+ {
+ handle_exception ();
+ }
+ catch (not_an_optimization_mode &)
+ {
+ handle_exception ();
+ }
+ catch (not_a_complexity_class &)
+ {
+ handle_exception ();
+ }
+ catch (not_a_bounded_integer_type_width &)
+ {
+ handle_exception ();
+ }
+ catch (not_a_bounded_integer_type_representation &)
+ {
+ handle_exception ();
+ }
+ catch (not_a_bounded_integer_type_overflow &)
+ {
+ handle_exception ();
+ }
+ catch (not_a_control_parameter_name &)
+ {
+ handle_exception ();
+ }
+ catch (not_a_control_parameter_value &)
+ {
+ handle_exception ();
+ }
+ catch (not_a_pip_problem_control_parameter_name &)
+ {
+ handle_exception ();
+ }
+ catch (not_a_pip_problem_control_parameter_value &)
+ {
+ handle_exception ();
+ }
+ catch (not_universe_or_empty &)
+ {
+ handle_exception ();
+ }
+ catch (not_a_relation &)
+ {
+ handle_exception ();
+ }
+ catch (not_a_nil_terminated_list &)
+ {
+ handle_exception ();
+ }
+ catch (PPL_integer_out_of_range &)
+ {
+ handle_exception ();
+ }
+ catch (int &)
+ {
+ } catch (timeout_exception &)
+ {
+ handle_exception ();
+ } catch (deterministic_timeout_exception &)
+ {
+ handle_exception ();
+ } catch (overflow_error &)
+ {
+ handle_exception ();
+ } catch (domain_error &)
+ {
+ handle_exception ();
+ } catch (length_error &)
+ {
+ handle_exception ();
+ } catch (invalid_argument &)
+ {
+ handle_exception ();
+ } catch (logic_error &)
+ {
+ handle_exception ();
+ } catch (bad_alloc &)
+ {
+ handle_exception ();
+ } catch (exception &)
+ {
+ handle_exception ();
+ } catch ( ...)
+ {
+ handle_exception ();
+ }
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60648.C b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60648.C
new file mode 100644
index 000000000..48cf0afb5
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60648.C
@@ -0,0 +1,70 @@
+// PR target/60648
+// { dg-do compile }
+// { dg-additional-options "-fPIC" { target fpic } }
+
+enum component
+{
+ Ex,
+ Ez,
+ Hy,
+ Permeability
+};
+enum derived_component
+{};
+enum direction
+{
+ X,
+ Y,
+ Z,
+ R,
+ P,
+ NO_DIRECTION
+};
+derived_component a;
+component *b;
+component c;
+direction d;
+inline direction fn1 (component p1)
+{
+ switch (p1)
+ {
+ case 0:
+ return Y;
+ case 1:
+ return Z;
+ case Permeability:
+ return NO_DIRECTION;
+ }
+ return X;
+}
+
+inline component fn2 (direction p1)
+{
+ switch (p1)
+ {
+ case 0:
+ case 1:
+ return component ();
+ case Z:
+ case R:
+ return component (1);
+ case P:
+ return component (3);
+ }
+}
+
+void fn3 ()
+{
+ direction e;
+ switch (0)
+ case 0:
+ switch (a)
+ {
+ case 0:
+ c = Ex;
+ b[1] = Hy;
+ }
+ e = fn1 (b[1]);
+ b[1] = fn2 (e);
+ d = fn1 (c);
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60659.C b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60659.C
new file mode 100644
index 000000000..f0158a522
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60659.C
@@ -0,0 +1,58 @@
+// { dg-do compile }
+template <typename _InputIterator> void __distance (_InputIterator);
+template <typename _InputIterator>
+void distance (_InputIterator, _InputIterator p2)
+{
+ __distance (p2);
+}
+
+namespace boost
+{
+template <class Iterator> struct A
+{
+ typedef typename Iterator::difference_type type;
+};
+template <class T> typename T::const_iterator end (T &);
+template <class T> typename T::const_iterator begin (T &);
+template <class T> struct D : A<typename T::const_iterator>
+{
+};
+template <class T> typename D<T>::type distance (const T &p1)
+{
+ distance (boost::begin (p1), boost::end (p1));
+ return 0;
+}
+template <class IteratorT> class B
+{
+public:
+ typedef B type;
+ typedef IteratorT const_iterator;
+};
+}
+
+typedef int storage_t[];
+struct F;
+template <template <typename> class> struct G
+{
+ G (const G &p1) { p1.m_fn1 ().m_fn1 (0); }
+ const F &m_fn1 () const
+ {
+ const void *a;
+ a = &data_m;
+ return *static_cast<const F *>(a);
+ }
+ storage_t *data_m;
+};
+
+struct F
+{
+ virtual F *m_fn1 (void *) const;
+};
+template <typename> struct H;
+struct C : G<H>
+{
+ typedef int difference_type;
+};
+boost::B<C> AllTransVideos ();
+int b = boost::distance (AllTransVideos ());
+
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60746.C b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60746.C
new file mode 100644
index 000000000..7ce6ebe6b
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60746.C
@@ -0,0 +1,23 @@
+// { dg-do compile }
+
+class One
+{
+public:
+ virtual unsigned long getSize () const;
+};
+
+class Two
+{
+ virtual int run ();
+};
+
+int
+Two::run ()
+{
+ One list_arry[5][2];
+ int orig = 0;
+ if (list_arry[3][orig].getSize () > 0
+ || list_arry[4][orig].getSize () > 0)
+ {
+ }
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60750.C b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60750.C
new file mode 100644
index 000000000..a344bd764
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60750.C
@@ -0,0 +1,21 @@
+// { dg-do run }
+// { dg-options "-std=c++11" }
+
+#include <string>
+#include <stdexcept>
+
+const std::string err_prefix = "Problem: ";
+void thrower (std::string msg)
+{
+ throw std::runtime_error(err_prefix + std::move(msg));
+}
+
+int main(int argc, char **argv)
+{
+ try {
+ std::string base = "hello";
+ thrower(std::move(base));
+ } catch (const std::runtime_error &e) {
+ }
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/vect/pr60729.cc b/gcc-4.9/gcc/testsuite/g++.dg/vect/pr60729.cc
new file mode 100644
index 000000000..fd472c50a
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/vect/pr60729.cc
@@ -0,0 +1,10 @@
+// { dg-do compile }
+// { dg-additional-options "-ftrapv" }
+
+void doSomething(int dim, double *Y, double *A)
+{
+ for (int k=0; k<dim; k++)
+ Y[k] += __builtin_fabs (A[k]);
+}
+
+// { dg-final { cleanup-tree-dump "vect" } }
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-2.C b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-2.C
index d40de3d7c..9f2e4bea4 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-2.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-2.C
@@ -6,18 +6,18 @@
// destructor, in which case it would be possible but unsafe to delete
// an instance of a derived class through a pointer to the base class.
-struct A // { dg-bogus "non-virtual destructor" }
+struct A
{
protected:
- ~A();
+ ~A(); // inaccessible - no warning
public:
virtual void f() = 0;
};
-struct B // { dg-bogus "non-virtual destructor" }
+struct B
{
private:
- ~B();
+ ~B(); // inaccessible - no warning
public:
virtual void f() = 0;
};
@@ -52,3 +52,25 @@ private:
public:
virtual void f() = 0;
};
+
+struct H {};
+
+struct I1 : H
+{};
+struct I2 : private H
+{};
+
+struct J1 : H
+{ virtual ~J1 ();};
+struct J2 : private H
+{ virtual ~J2 ();};
+
+struct K // { dg-warning "accessible non-virtual destructor" }
+{
+ virtual void k ();
+};
+
+struct L1 : K // { dg-warning "accessible non-virtual destructor" }
+{virtual ~L1 ();};
+struct L2 : private K
+{virtual ~L2 ();};
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-3.C b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-3.C
new file mode 100644
index 000000000..e83134b06
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-3.C
@@ -0,0 +1,75 @@
+// { dg-do compile }
+// { dg-options "-Weffc++" }
+
+// Warn when a class has virtual functions and accessible non-virtual
+// destructor, in which case it would be possible but unsafe to delete
+// an instance of a derived class through a pointer to the base class.
+
+struct A
+{
+protected:
+ ~A(); // inaccessible - no warning
+public:
+ virtual void f() = 0;
+};
+
+struct B
+{
+private:
+ ~B(); // inaccessible - no warning
+public:
+ virtual void f() = 0;
+};
+
+struct C // { dg-warning "non-virtual destructor" }
+{
+ virtual void f() = 0;
+};
+
+struct D // { dg-warning "non-virtual destructor" }
+{
+ ~D();
+ virtual void f() = 0;
+};
+
+struct E;
+
+struct F // { dg-warning "non-virtual destructor" }
+{
+protected:
+ friend class E;
+ ~F();
+public:
+ virtual void f() = 0;
+};
+
+struct G // { dg-warning "non-virtual destructor" }
+{
+private:
+ friend class E;
+ ~G();
+public:
+ virtual void f() = 0;
+};
+
+struct H {};
+
+struct I1 : H
+{};
+struct I2 : private H
+{};
+
+struct J1 : H // { dg-warning "accessible non-virtual destructor" }
+{ virtual ~J1 ();};
+struct J2 : private H
+{ virtual ~J2 ();};
+
+struct K // { dg-warning "accessible non-virtual destructor" }
+{
+ virtual void k ();
+};
+
+struct L1 : K // { dg-warning "accessible non-virtual destructor" }
+{virtual ~L1 ();};
+struct L2 : private K
+{virtual ~L2 ();};
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-4.C b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-4.C
new file mode 100644
index 000000000..dd6d9d768
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-4.C
@@ -0,0 +1,75 @@
+// { dg-do compile }
+// { dg-options "-Weffc++ -Wno-non-virtual-dtor" }
+
+// Warn when a class has virtual functions and accessible non-virtual
+// destructor, in which case it would be possible but unsafe to delete
+// an instance of a derived class through a pointer to the base class.
+
+struct A
+{
+protected:
+ ~A();
+public:
+ virtual void f() = 0;
+};
+
+struct B
+{
+private:
+ ~B();
+public:
+ virtual void f() = 0;
+};
+
+struct C
+{
+ virtual void f() = 0;
+};
+
+struct D
+{
+ ~D();
+ virtual void f() = 0;
+};
+
+struct E;
+
+struct F
+{
+protected:
+ friend class E;
+ ~F();
+public:
+ virtual void f() = 0;
+};
+
+struct G
+{
+private:
+ friend class E;
+ ~G();
+public:
+ virtual void f() = 0;
+};
+
+struct H {};
+
+struct I1 : H
+{};
+struct I2 : private H
+{};
+
+struct J1 : H
+{ virtual ~J1 ();};
+struct J2 : private H
+{ virtual ~J2 ();};
+
+struct K
+{
+ virtual void k ();
+};
+
+struct L1 : K
+{virtual ~L1 ();};
+struct L2 : private K
+{virtual ~L2 ();};
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor.C b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor.C
index b04fdcbe6..f03cff5b3 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor.C
@@ -8,3 +8,4 @@ extern "Java"
virtual void bar( void);
};
}
+
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wreturn-local-addr-2.C b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wreturn-local-addr-2.C
new file mode 100644
index 000000000..c483601e6
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wreturn-local-addr-2.C
@@ -0,0 +1,11 @@
+// PR c++/44859
+
+struct Base2 { int m_foo; };
+struct Derived2 : public Base2 {};
+
+const Base2& f8() { return Derived2(); } // { dg-warning "reference to temporary" }
+
+struct foo { };
+struct bar { foo base; };
+
+const foo& f9() { return bar().base; } // { dg-warning "reference to temporary" }
diff --git a/gcc-4.9/gcc/testsuite/g++.old-deja/g++.jason/overload21.C b/gcc-4.9/gcc/testsuite/g++.old-deja/g++.jason/overload21.C
index 723979303..125aee0db 100644
--- a/gcc-4.9/gcc/testsuite/g++.old-deja/g++.jason/overload21.C
+++ b/gcc-4.9/gcc/testsuite/g++.old-deja/g++.jason/overload21.C
@@ -1,6 +1,6 @@
// { dg-do assemble }
struct X {
- void f (int = 4, char = 'r'); // { dg-error "previous specification" }
+ void f (int = 4, char = 'r'); // { dg-message "previous specification" }
void g (int = 4, char = 'r'); // { dg-message "previous specification" }
};
diff --git a/gcc-4.9/gcc/testsuite/g++.old-deja/g++.law/init5.C b/gcc-4.9/gcc/testsuite/g++.old-deja/g++.law/init5.C
index c1d647b1b..7ed89e219 100644
--- a/gcc-4.9/gcc/testsuite/g++.old-deja/g++.law/init5.C
+++ b/gcc-4.9/gcc/testsuite/g++.old-deja/g++.law/init5.C
@@ -11,8 +11,8 @@ extern int fred( int);
class X {
public :
- void f( int = fred( 0) ) ; // { dg-error "" } previous spec
+ void f( int = fred( 0) ) ; // { dg-message "previous spec" }
} ;
-void X::f( int x = fred( 0) ) {// { dg-error "" } .*
+void X::f( int x = fred( 0) ) { // { dg-error "default argument" }
}
diff --git a/gcc-4.9/gcc/testsuite/g++.old-deja/g++.robertl/eb121.C b/gcc-4.9/gcc/testsuite/g++.old-deja/g++.robertl/eb121.C
index e01d74788..036c8d515 100644
--- a/gcc-4.9/gcc/testsuite/g++.old-deja/g++.robertl/eb121.C
+++ b/gcc-4.9/gcc/testsuite/g++.old-deja/g++.robertl/eb121.C
@@ -3,7 +3,7 @@ class A {
private:
int i1_;
public:
- void f(int const i1 = 1); // { dg-error "previous specification" }
+ void f(int const i1 = 1); // { dg-message "previous specification" }
};
void
diff --git a/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr28865.c b/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr28865.c
index aa6ae078a..4ad0f5c43 100644
--- a/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr28865.c
+++ b/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr28865.c
@@ -1,3 +1,5 @@
+/* { dg-xfail-if "PR target/60602" { sparc*-*-solaris2.9* && { ! gas } } { "-O0" } } */
+
struct var_len
{
int field1;
diff --git a/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr60556.c b/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr60556.c
new file mode 100644
index 000000000..c775432f8
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr60556.c
@@ -0,0 +1,8 @@
+/* PR middle-end/60556 */
+
+int g (int);
+
+unsigned long long f (void)
+{
+ return (unsigned long long)(long)&g;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr60655-1.c b/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr60655-1.c
new file mode 100644
index 000000000..6f84f6e4e
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr60655-1.c
@@ -0,0 +1,31 @@
+/* { dg-options "-fdata-sections" } */
+
+typedef unsigned char unit;
+typedef unit *unitptr;
+extern short global_precision;
+typedef __SIZE_TYPE__ size_t;
+extern void *memcpy (void *dest, const void *src, size_t n);
+
+short mp_compare(const unit* r1, const unit* r2)
+{
+ register short precision;
+ precision = global_precision;
+ (r1) = ((r1)+(precision)-1);
+ (r2) = ((r2)+(precision)-1);
+ do
+ { if (*r1 < *r2)
+ return(-1);
+ if (*((r1)--) > *((r2)--))
+ return(1);
+ } while (--precision);
+}
+
+static unit modulus[((1280+(2*8))/8)];
+static unit d_data[((1280+(2*8))/8)*2];
+
+int upton_modmult (unitptr prod, unitptr multiplicand, unitptr multiplier)
+{
+ unitptr d = d_data;
+ while (mp_compare(d,modulus) > 0)
+ memcpy((void*)(prod), (const void*)(d), (global_precision));
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr60655-2.c b/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr60655-2.c
new file mode 100644
index 000000000..f33db643f
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr60655-2.c
@@ -0,0 +1,30 @@
+
+typedef unsigned char unit;
+typedef unit *unitptr;
+extern short global_precision;
+typedef __SIZE_TYPE__ size_t;
+extern void *memcpy (void *dest, const void *src, size_t n);
+
+short mp_compare(const unit* r1, const unit* r2)
+{
+ register short precision;
+ precision = global_precision;
+ (r1) = ((r1)+(precision)-1);
+ (r2) = ((r2)+(precision)-1);
+ do
+ { if (*r1 < *r2)
+ return(-1);
+ if (*((r1)--) > *((r2)--))
+ return(1);
+ } while (--precision);
+}
+
+static unit modulus[((1280+(2*8))/8)];
+static unit d_data[((1280+(2*8))/8)*2];
+
+int upton_modmult (unitptr prod, unitptr multiplicand, unitptr multiplier)
+{
+ unitptr d = d_data;
+ while (mp_compare(d,modulus) > 0)
+ memcpy((void*)(prod), (const void*)(d), (global_precision));
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/20140326-1.c b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/20140326-1.c
new file mode 100644
index 000000000..552e21891
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/20140326-1.c
@@ -0,0 +1,10 @@
+int a;
+
+int
+main (void)
+{
+ char e[2] = { 0, 0 }, f = 0;
+ if (a == 131072)
+ f = e[a];
+ return f;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/atomic/stdatomic-flag.c b/gcc-4.9/gcc/testsuite/gcc.dg/atomic/stdatomic-flag.c
index 32f9e9bb6..c1a63f1b3 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/atomic/stdatomic-flag.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/atomic/stdatomic-flag.c
@@ -1,5 +1,5 @@
/* Test atomic_flag routines for existence and execution. */
-/* { dg-do run } */
+/* { dg-do run { xfail hppa*-*-hpux* } } */
/* { dg-options "-std=c11 -pedantic-errors" } */
#include <stdatomic.h>
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/attr-weakref-1.c b/gcc-4.9/gcc/testsuite/gcc.dg/attr-weakref-1.c
index ee900fcde..9ed1c51b3 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/attr-weakref-1.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/attr-weakref-1.c
@@ -4,12 +4,14 @@
// This test requires support for undefined weak symbols. This support
// is not available on hppa*-*-hpux*. The test is skipped rather than
// xfailed to suppress the warning that would otherwise arise.
-// { dg-skip-if "" { "*-*-darwin*" "hppa*-*-hpux*" "*-*-aix*" } "*" { "" } }
+// { dg-skip-if "" { "hppa*-*-hpux*" "*-*-aix*" } "*" { "" } }
// For kernel modules and static RTPs, the loader treats undefined weak
// symbols in the same way as undefined strong symbols. The test
// therefore fails to load, so skip it.
// { dg-skip-if "" { "*-*-vxworks*" && nonpic } "*" { "-non-static" } }
// { dg-options "-O2" }
+// { dg-additional-options "-Wl,-undefined,dynamic_lookup" { target *-*-darwin* } }
+// { dg-additional-options "-Wl,-flat_namespace" { target *-*-darwin[89]* } }
// { dg-additional-sources "attr-weakref-1a.c" }
// Copyright 2005 Free Software Foundation, Inc.
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/builtin-bswap-6.c b/gcc-4.9/gcc/testsuite/gcc.dg/builtin-bswap-6.c
index 024ebf1ed..efda8706e 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/builtin-bswap-6.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/builtin-bswap-6.c
@@ -1,7 +1,10 @@
/* { dg-do compile { target arm*-*-* alpha*-*-* i?86-*-* powerpc*-*-* rs6000-*-* x86_64-*-* s390*-*-* } } */
/* { dg-require-effective-target stdint_types } */
/* { dg-options "-O -fdump-rtl-combine" } */
-/* { dg-options "-O -fdump-rtl-combine -march=z900" { target s390-*-* } } */
+
+/* The branch cost setting prevents the return value from being
+ calculated with arithmetic instead of doing a compare. */
+/* { dg-additional-options "-march=z900 -mbranch-cost=0" { target s390*-*-* } } */
#include <stdint.h>
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/builtin-bswap-6a.c b/gcc-4.9/gcc/testsuite/gcc.dg/builtin-bswap-6a.c
new file mode 100644
index 000000000..f93bcde10
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/builtin-bswap-6a.c
@@ -0,0 +1,44 @@
+/* { dg-do compile { target arm*-*-* alpha*-*-* i?86-*-* powerpc*-*-* rs6000-*-* x86_64-*-* s390*-*-* } } */
+/* { dg-require-effective-target stdint_types } */
+/* { dg-options "-O2 -fdump-rtl-combine" } */
+/* { dg-additional-options "-march=z900" { target s390-*-* } } */
+
+/* The test is similiar to builtin-bswap-6.c but returns 1/2 instead
+ of 0/1 to prevent GCC from calculating the return value with
+ arithmetic instead of a comparison. This requires the optimization
+ level to be bumped up to -O2 at least for x86_64. */
+
+#include <stdint.h>
+
+#define BS(X) __builtin_bswap32(X)
+
+int foo1 (uint32_t a)
+{
+ if (BS (a) == 0xA0000)
+ return 1;
+ return 2;
+}
+
+int foo2 (uint32_t a)
+{
+ if (BS (a) != 0xA0000)
+ return 1;
+ return 2;
+}
+
+int foo3 (uint32_t a, uint32_t b)
+{
+ if (BS (a) == BS (b))
+ return 1;
+ return 2;
+}
+
+int foo4 (uint32_t a, uint32_t b)
+{
+ if (BS (a) != BS (b))
+ return 1;
+ return 2;
+}
+
+/* { dg-final { scan-rtl-dump-not "bswapsi" "combine" } } */
+/* { dg-final { cleanup-rtl-dump "combine" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/builtin-bswap-7.c b/gcc-4.9/gcc/testsuite/gcc.dg/builtin-bswap-7.c
index 399b825ac..035c7368a 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/builtin-bswap-7.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/builtin-bswap-7.c
@@ -3,6 +3,10 @@
/* { dg-require-effective-target lp64 } */
/* { dg-options "-O -fdump-rtl-combine" } */
+/* The branch cost setting prevents the return value from being
+ calculated with arithmetic instead of doing a compare. */
+/* { dg-additional-options "-mbranch-cost=0" { target s390x-*-* } } */
+
#include <stdint.h>
#define BS(X) __builtin_bswap64(X)
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/builtin-bswap-7a.c b/gcc-4.9/gcc/testsuite/gcc.dg/builtin-bswap-7a.c
new file mode 100644
index 000000000..d77bd4783
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/builtin-bswap-7a.c
@@ -0,0 +1,44 @@
+/* { dg-do compile { target arm*-*-* alpha*-*-* ia64*-*-* x86_64-*-* s390x-*-* powerpc*-*-* rs6000-*-* } } */
+/* { dg-require-effective-target stdint_types } */
+/* { dg-require-effective-target lp64 } */
+/* { dg-options "-O2 -fdump-rtl-combine" } */
+
+/* The test is similiar to builtin-bswap-7.c but returns 1/2 instead
+ of 0/1 to prevent GCC from calculating the return value with
+ arithmetic instead of a comparison. This requires the optimization
+ level to be bumped up to -O2 at least for x86_64. */
+
+#include <stdint.h>
+
+#define BS(X) __builtin_bswap64(X)
+
+int foo1 (uint64_t a)
+{
+ if (BS (a) == 0xA00000000)
+ return 1;
+ return 2;
+}
+
+int foo2 (uint64_t a)
+{
+ if (BS (a) != 0xA00000000)
+ return 1;
+ return 2;
+}
+
+int foo3 (uint64_t a, uint64_t b)
+{
+ if (BS (a) == BS (b))
+ return 1;
+ return 2;
+}
+
+int foo4 (uint64_t a, uint64_t b)
+{
+ if (BS (a) != BS (b))
+ return 1;
+ return 2;
+}
+
+/* { dg-final { scan-rtl-dump-not "bswapdi" "combine" } } */
+/* { dg-final { cleanup-rtl-dump "combine" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/cilk-plus/cilk-plus.exp b/gcc-4.9/gcc/testsuite/gcc.dg/cilk-plus/cilk-plus.exp
index 61085fd8f..63cfb0e81 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/cilk-plus/cilk-plus.exp
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/cilk-plus/cilk-plus.exp
@@ -19,53 +19,45 @@
load_lib gcc-dg.exp
load_lib lto.exp
+load_lib cilk-plus-dg.exp
if { ![check_effective_target_cilkplus] } {
return;
}
-set library_var [get_multilibs]
-# Pointing the ld_library_path to the Cilk Runtime library binaries.
-append ld_library_path ":${library_var}/libcilkrts/.libs"
-set_ld_library_path_env_vars
-
-global TEST_EXTRA_LIBS
-set TEST_EXTRA_LIBS "-L${library_var}/libcilkrts/.libs"
-
dg-init
-
-# Run the tests that are shared with C++.
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/PS/*.c]] " -ftree-vectorize -fcilkplus -std=c99" " "
-# Run the C-only tests.
-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.c]] \
- "-ftree-vectorize -fcilkplus -std=c99" " "
-
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O1 -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O2 -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O3 -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -O2 -ftree-vectorize -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -std=c99" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -O2 -std=c99" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -O3 -std=c99" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -g -O0 -std=c99" " "
-
-if { [check_libcilkrts_available] } {
- dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -g " " "
- dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O1 " " "
- dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O2 -std=c99 " " "
- dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O2 -ftree-vectorize " " "
- dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O3 -g " " "
- if { [check_effective_target_lto] } {
- dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O3 -flto -g " " "
- }
+if [cilkplus_init] {
+ # Run the tests that are shared with C++.
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/PS/*.c]] " -ftree-vectorize -fcilkplus -std=c99" " "
+ # Run the C-only tests.
+ dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.c]] \
+ "-ftree-vectorize -fcilkplus -std=c99" " "
+
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O1 -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O2 -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O3 -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -O2 -ftree-vectorize -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -std=c99" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -O2 -std=c99" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -O3 -std=c99" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -g -O0 -std=c99" " "
+
+ if { [check_libcilkrts_available] } {
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -g " " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O1 " " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O2 -std=c99 " " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O2 -ftree-vectorize " " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O3 -g " " "
+ if { [check_effective_target_lto] } {
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O3 -flto -g " " "
+ }
+ }
+
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] " -g" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] " -O3 -std=c99" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] " -O3 -g" " "
}
-
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] " -g" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] " -O3 -std=c99" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] " -O3 -g" " "
-
+cilkplus_finish
dg-finish
-
-unset TEST_EXTRA_LIBS
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/graphite/pr60740.c b/gcc-4.9/gcc/testsuite/gcc.dg/graphite/pr60740.c
new file mode 100644
index 000000000..5b7c18022
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/graphite/pr60740.c
@@ -0,0 +1,16 @@
+/* { dg-options "-O2 -floop-interchange" } */
+
+int **db6 = 0;
+
+void
+k26(void)
+{
+ static int geb = 0;
+ int *a22 = &geb;
+ int **l30 = &a22;
+ int *c4b;
+ int ndf;
+ for (ndf = 0; ndf <= 1; ++ndf)
+ *c4b = (db6 == l30) && (*a22)--;
+}
+
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/graphite/pr60785.c b/gcc-4.9/gcc/testsuite/gcc.dg/graphite/pr60785.c
new file mode 100644
index 000000000..87c1c685b
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/graphite/pr60785.c
@@ -0,0 +1,27 @@
+/* { dg-options "-O2 -floop-interchange" } */
+
+static int
+aqc(void)
+{
+ return 1;
+}
+
+void
+gkd(void)
+{
+ int wu0;
+ static int b1y;
+ static int gw2;
+ static int *ydw = &gw2;
+ static int **m3l = &ydw;
+ **m3l = 0;
+ for (b1y = 0; b1y < 1; ++b1y)
+ {
+ int *cpj = &gw2;
+ if (*ydw |= aqc())
+ {
+ *cpj = 0;
+ *ydw = wu0;
+ }
+ }
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr55113_0.c b/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr55113_0.c
index 8ef11dc47..8c309761b 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr55113_0.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr55113_0.c
@@ -1,7 +1,8 @@
/* PR 55113 */
/* { dg-lto-do link } */
/* { dg-lto-options { { -flto -fshort-double -O0 } } }*/
-/* { dg-skip-if "PR60410" { { x86_64-*-* i?86-*-* } && lp64 } } */
+/* { dg-skip-if "PR60410" { x86_64-*-* || { i?86-*-* && lp64 } } } */
+/* { dg-skip-if "PR60410" { i?86-*-solaris2.1[0-9]* } } */
int
main(void)
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr59626_0.c b/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr59626_0.c
new file mode 100644
index 000000000..752982fb5
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr59626_0.c
@@ -0,0 +1,15 @@
+/* { dg-lto-do run } */
+
+int __atoi (const char *) __asm__("atoi");
+extern inline __attribute__((always_inline,gnu_inline))
+int atoi (const char *x)
+{
+ return __atoi (x);
+}
+
+int bar (int (*)(const char *));
+
+int main()
+{
+ return bar (atoi);
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr59626_1.c b/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr59626_1.c
new file mode 100644
index 000000000..9b3fa1d2e
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr59626_1.c
@@ -0,0 +1,4 @@
+int bar (int (*fn)(const char *))
+{
+ return fn ("0");
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/pr45416.c b/gcc-4.9/gcc/testsuite/gcc.dg/pr45416.c
index 2f013ccd6..579503448 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/pr45416.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/pr45416.c
@@ -9,7 +9,7 @@ int foo(long long a)
return 0;
}
-/* { dg-final { scan-assembler "andl" { target i?86-*-linux* i?86-*-gnu* x86_64-*-linux* } } } " */
+/* { dg-final { scan-assembler "andl|bextr" { target i?86-*-linux* i?86-*-gnu* x86_64-*-linux* } } } " */
/* { dg-final { scan-assembler-not "setne" { target i?86-*-linux* i?86-*-gnu* x86_64-*-linux* } } }" */
/* { dg-final { scan-assembler "and|ubfx" { target arm*-*-* } } } */
/* { dg-final { scan-assembler-not "moveq" { target arm*-*-* } } }" */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/pr59940.c b/gcc-4.9/gcc/testsuite/gcc.dg/pr59940.c
index b0fd17f50..d81eaf78e 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/pr59940.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/pr59940.c
@@ -3,11 +3,12 @@
/* { dg-options "-Wconversion -Woverflow" } */
int f (unsigned int);
+typedef sitype __attribute__((mode(SI)));
int
g (void)
{
- int si = 12;
+ sitype si = 12;
unsigned int ui = -1; /* { dg-warning "21:negative integer implicitly converted to unsigned type" } */
unsigned char uc;
ui = si; /* { dg-warning "8:conversion" } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/pr60647-1.c b/gcc-4.9/gcc/testsuite/gcc.dg/pr60647-1.c
new file mode 100644
index 000000000..73ea85688
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/pr60647-1.c
@@ -0,0 +1,26 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+struct _wincore
+{
+ int y;
+ int width;
+};
+int a;
+static fn1 (dpy, winInfo) struct _XDisplay *dpy;
+struct _wincore *winInfo;
+{
+ a = winInfo->width;
+ fn2 ();
+}
+
+static fn3 (dpy, winInfo, visrgn) struct _XDisplay *dpy;
+{
+ int b = fn1 (0, winInfo);
+ fn4 (0, 0, visrgn);
+}
+
+fn5 (event) struct _XEvent *event;
+{
+ fn3 (0, 0, 0);
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/pr60647-2.c b/gcc-4.9/gcc/testsuite/gcc.dg/pr60647-2.c
new file mode 100644
index 000000000..ddeb11785
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/pr60647-2.c
@@ -0,0 +1,26 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+struct _wincore
+{
+ int width, height;
+};
+
+static void
+foo (void *dpy, struct _wincore *winInfo, int offset)
+{
+ fn1 (winInfo->height);
+}
+
+static void
+bar (void *dpy, int winInfo, int *visrgn)
+{
+ ((void (*) (void *, int, int)) foo) ((void *) 0, winInfo, 0); /* { dg-warning "function called through a non-compatible type" } */
+ fn2 (0, 0, visrgn);
+}
+
+void
+baz (void *dpy, int win, int prop)
+{
+ bar ((void *) 0, 0, (int *) 0);
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/pr60704.c b/gcc-4.9/gcc/testsuite/gcc.dg/pr60704.c
new file mode 100644
index 000000000..8a9af39ff
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/pr60704.c
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-options "-flive-range-shrinkage" } */
+/* { dg-additional-options "-march=amdfam10" { target { i?86-*-* x86_64-*-* } } } */
+
+struct S
+{
+ int n;
+};
+
+int
+foo (struct S s, double a)
+{
+ return s.n * a;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/pr60797.c b/gcc-4.9/gcc/testsuite/gcc.dg/pr60797.c
new file mode 100644
index 000000000..45090bae5
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/pr60797.c
@@ -0,0 +1,8 @@
+/* { dg-do compile } */
+/* { dg-skip-if "" { alias } } */
+
+extern int foo __attribute__((alias("bar"))); /* { dg-error "supported" } */
+int main()
+{
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/predict-8.c b/gcc-4.9/gcc/testsuite/gcc.dg/predict-8.c
new file mode 100644
index 000000000..8c78ca7fc
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/predict-8.c
@@ -0,0 +1,12 @@
+/* { dg-do compile { target { i?86-*-* x86_64-*-* } } } */
+/* { dg-options "-O2 -fdump-rtl-expand" } */
+
+int foo(float a, float b) {
+ if (a == b)
+ return 1;
+ else
+ return 2;
+}
+
+/* { dg-final { scan-rtl-dump-times "REG_BR_PROB 100" 1 "expand"} } */
+/* { dg-final { cleanup-rtl-dump "expand" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr53922.c b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr53922.c
index d385587e3..3974dc660 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr53922.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr53922.c
@@ -4,6 +4,7 @@
/* { dg-skip-if "No undefined weak" { *-*-aix* } { "*" } { "" } } */
/* { dg-skip-if "No undefined weak" { hppa*-*-hpux* && { ! lp64 } } { "*" } { "" } } */
/* { dg-options "-Wl,-undefined,dynamic_lookup" { target *-*-darwin* } } */
+/* { dg-additional-options "-Wl,-flat_namespace" { target *-*-darwin[89]* } } */
int x(int a)
{
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr60092.c b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr60092.c
index a85720c60..337ff5295 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr60092.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr60092.c
@@ -1,6 +1,8 @@
/* { dg-do run } */
/* { dg-require-weak "" } */
-/* { dg-skip-if "No undefined weak" { hppa*-*-hpux* && { ! lp64 } } { "*" } { "" } } */
+/* { dg-skip-if "No undefined weak" { hppa*-*-hpux* && { ! lp64 } } } */
+/* { dg-additional-options "-Wl,-undefined,dynamic_lookup" { target *-*-darwin* } } */
+/* { dg-additional-options "-Wl,-flat_namespace" { target *-*-darwin[89]* } } */
/* { dg-xfail-run-if "posix_memalign modifies first arg on error" { *-*-solaris2.11* } { "-O0" } } */
typedef __SIZE_TYPE__ size_t;
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr60733.c b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr60733.c
new file mode 100644
index 000000000..49cc59ea3
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr60733.c
@@ -0,0 +1,36 @@
+/* { dg-do run } */
+
+int a, d, e, f, g, h, i, j, k;
+unsigned short b;
+
+short
+fn1 (int p1, int p2)
+{
+ return p1 * p2;
+}
+
+int
+main ()
+{
+ for (; a; a--)
+ {
+ int l = 0;
+ if (f >= 0)
+ {
+ for (; h;)
+ e = 0;
+ for (; l != -6; l--)
+ {
+ j = fn1 (b--, d);
+ for (g = 0; g; g = 1)
+ ;
+ k = e ? 2 : 0;
+ }
+ i = 0;
+ for (;;)
+ ;
+ }
+ }
+ d = 0;
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr60766.c b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr60766.c
new file mode 100644
index 000000000..6f16e3b74
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr60766.c
@@ -0,0 +1,15 @@
+/* { dg-do run } */
+
+int m = 9;
+
+int main()
+{
+ int n, x;
+
+ n = m;
+ for (x = 0; x <= n; x++)
+ if (n == x + (x + 1) + (x + 2))
+ return 0;
+
+ __builtin_abort();
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/20040517-1.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/20040517-1.c
index 99b27ce02..b49cf648c 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/20040517-1.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/20040517-1.c
@@ -16,6 +16,7 @@ void bar (void)
/* We used to treat malloc functions like pure and const functions, but
malloc functions may clobber global memory. Only the function result
does not alias any other pointer.
- Hence, we must have a VDEF for a before and after the call to foo(). */
-/* { dg-final { scan-tree-dump-times "VDEF" 2 "alias"} } */
+ Hence, we must have a VDEF for a before and after the call to foo().
+ And one after the call to abort(). */
+/* { dg-final { scan-tree-dump-times "VDEF" 3 "alias"} } */
/* { dg-final { cleanup-tree-dump "alias" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-4.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-4.c
index 1e46634c6..e85a24420 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-4.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-4.c
@@ -1,6 +1,5 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fdump-tree-dom1-details" } */
-/* { dg-additional-options "-mbranch-cost=2" { target s390*-*-* } } */
struct bitmap_head_def;
typedef struct bitmap_head_def *bitmap;
typedef const struct bitmap_head_def *const_bitmap;
@@ -76,6 +75,6 @@ bitmap_ior_and_compl (bitmap dst, const_bitmap a, const_bitmap b,
-> "kill_elt->indx == b_elt->indx" in the second condition,
skipping the known-true "b_elt && kill_elt" in the second
condition. */
-/* { dg-final { scan-tree-dump-times "Threaded" 4 "dom1" { target logical_op_short_circuit } } } */
+/* { dg-final { scan-tree-dump-times "Threaded" 4 "dom1" { target logical_op_short_circuit xfail logical_op_short_circuit } } } */
/* { dg-final { cleanup-tree-dump "dom1" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-13.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-13.c
index 19f892eaa..43b92c115 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-13.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-13.c
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-optimized" } */
-/* { dg-additional-options "-mbranch-cost=2" { target { i?86-*-* x86_64-*-* mips*-*-* s390*-*-* avr*-*-* } } } */
+/* { dg-additional-options "-mbranch-cost=2" { target { i?86-*-* x86_64-*-* s390*-*-* avr*-*-* } } } */
_Bool f1(_Bool a, _Bool b)
{
@@ -17,5 +17,5 @@ _Bool f1(_Bool a, _Bool b)
/* For LOGICAL_OP_NON_SHORT_CIRCUIT, this should be optimized
into return a & b;, with no ifs. */
-/* { dg-final { scan-tree-dump-not "if" "optimized" { target { i?86-*-* x86_64-*-* mips*-*-* s390*-*-* avr*-*-* } } } } */
+/* { dg-final { scan-tree-dump-not "if" "optimized" { target { i?86-*-* x86_64-*-* s390*-*-* avr*-*-* } } } } */
/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/vect/pr60505.c b/gcc-4.9/gcc/testsuite/gcc.dg/vect/pr60505.c
new file mode 100644
index 000000000..694051320
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/vect/pr60505.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-additional-options "-Wall -Werror" } */
+
+void foo(char *in, char *out, int num)
+{
+ int i;
+ char ovec[16] = {0};
+
+ for(i = 0; i < num ; ++i)
+ out[i] = (ovec[i] = in[i]);
+ out[num] = ovec[num/2];
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/vect/pr60656.c b/gcc-4.9/gcc/testsuite/gcc.dg/vect/pr60656.c
new file mode 100644
index 000000000..4950275fb
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/vect/pr60656.c
@@ -0,0 +1,47 @@
+/* { dg-require-effective-target vect_int } */
+/* { dg-require-effective-target vect_long } */
+
+#include "tree-vect.h"
+
+__attribute__ ((noinline)) long
+foo ()
+{
+ int v[] = {5000, 5001, 5002, 5003};
+ long s = 0;
+ int i;
+
+ for(i = 0; i < 4; ++i)
+ {
+ long P = v[i];
+ s += P * P * P;
+ }
+ return s;
+}
+
+long
+bar ()
+{
+ int v[] = {5000, 5001, 5002, 5003};
+ long s = 0;
+ int i;
+
+ for(i = 0; i < 4; ++i)
+ {
+ long P = v[i];
+ s += P * P * P;
+ __asm__ volatile ("");
+ }
+ return s;
+}
+
+int main()
+{
+ check_vect ();
+
+ if (foo () != bar ())
+ abort ();
+ return 0;
+}
+
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_widen_mult_si_to_di_pattern } } } */
+/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/pr60034.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/pr60034.c
new file mode 100644
index 000000000..ab7e7f4a3
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/pr60034.c
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-std=gnu99 -O" } */
+
+static unsigned long global_max_fast;
+
+void __libc_mallopt (int param_number, int value)
+{
+ __asm__ __volatile__ ("# %[_SDT_A21]" :: [_SDT_A21] "nor" ((global_max_fast)));
+ global_max_fast = 1;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/pr60580_1.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/pr60580_1.c
new file mode 100644
index 000000000..1adf508cf
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/pr60580_1.c
@@ -0,0 +1,45 @@
+/* { dg-do compile } */
+/* { dg-options "-O0 -fomit-frame-pointer -fno-inline --save-temps" } */
+
+void
+func_leaf (void)
+{
+ int a = 0;
+}
+
+void
+func_no_leaf (void)
+{
+ int a = 0;
+ func_leaf ();
+}
+
+void
+func1 (void)
+{
+ int a = 0;
+ func_no_leaf ();
+}
+
+/*
+ * This function calls XXX(), which modifies SP. This is incompatible to
+ * -fomit-frame-pointer generated code as SP is used to access the frame.
+ */
+__attribute__ ((optimize("no-omit-frame-pointer")))
+void
+func2 (void)
+{
+ int a = 0;
+ func_no_leaf ();
+}
+
+void
+func3 (void)
+{
+ int a = 0;
+ func_no_leaf ();
+}
+
+/* { dg-final { scan-assembler-times "stp\tx29, x30, \\\[sp, -\[0-9\]+\\\]!" 1 } } */
+
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/pr60675.C b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/pr60675.C
new file mode 100644
index 000000000..aa88cdb24
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/pr60675.C
@@ -0,0 +1,277 @@
+/* { dg-do compile } */
+/* { dg-options "-std=c++11 -w -O2 -fPIC" } */
+namespace CLHEP {
+ static const double meter = 1000.*10;
+ static const double meter2 = meter*meter;
+ static const double megaelectronvolt = 1. ;
+ static const double gigaelectronvolt = 1.e+3;
+ static const double GeV = gigaelectronvolt;
+ static const double megavolt = megaelectronvolt;
+ static const double volt = 1.e-6*megavolt;
+ static const double tesla = volt*1.e+9/meter2;
+ }
+ using CLHEP::GeV;
+ using CLHEP::tesla;
+ namespace std {
+ typedef long int ptrdiff_t;
+ }
+ extern "C" {
+ extern double cos (double __x) throw ();
+ extern double sin (double __x) throw ();
+ extern double sqrt (double __x) throw ();
+ }
+ namespace std __attribute__ ((__visibility__ ("default"))) {
+ using ::cos;
+ using ::sin;
+ using ::sqrt;
+ template<class _CharT> struct char_traits;
+ template<typename _CharT, typename _Traits = char_traits<_CharT> > struct basic_ostream;
+ typedef basic_ostream<char> ostream;
+ template<typename _Iterator> struct iterator_traits { };
+ template<typename _Tp> struct iterator_traits<_Tp*> {
+ typedef ptrdiff_t difference_type;
+ typedef _Tp& reference;
+ };
+ }
+ namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
+ using std::iterator_traits;
+ template<typename _Iterator, typename _Container> struct __normal_iterator {
+ _Iterator _M_current;
+ typedef iterator_traits<_Iterator> __traits_type;
+ typedef typename __traits_type::difference_type difference_type;
+ typedef typename __traits_type::reference reference;
+ explicit __normal_iterator(const _Iterator& __i) : _M_current(__i) { }
+ reference operator*() const {
+ return *_M_current;
+ }
+ __normal_iterator operator+(difference_type __n) const {
+ return __normal_iterator(_M_current + __n);
+ }
+ };
+ template<typename _Tp> struct new_allocator {
+ };
+ }
+ namespace std __attribute__ ((__visibility__ ("default"))) {
+ template<typename _Tp> struct allocator: public __gnu_cxx::new_allocator<_Tp> {
+ };
+ struct ios_base { };
+ template<typename _CharT, typename _Traits> struct basic_ios : public ios_base { };
+ template<typename _CharT, typename _Traits> struct basic_ostream : virtual public basic_ios<_CharT, _Traits> {
+ typedef basic_ostream<_CharT, _Traits> __ostream_type;
+ __ostream_type& operator<<(__ostream_type& (*__pf)(__ostream_type&)) { }
+ __ostream_type& operator<<(const void* __p) {
+ return _M_insert(__p);
+ }
+ template<typename _ValueT> __ostream_type& _M_insert(_ValueT __v);
+ };
+ template<typename _CharT, typename _Traits> inline basic_ostream<_CharT, _Traits>& endl(basic_ostream<_CharT, _Traits>& __os) {
+ }
+ }
+ typedef double G4double;
+ typedef int G4int;
+ extern __thread std::ostream *G4cout_p;
+ struct G4Field;
+ struct G4FieldManager {
+ inline G4Field* GetDetectorField() ;
+ };
+ namespace CLHEP {
+ struct Hep3Vector {
+ Hep3Vector(double x, double y, double z);
+ inline ~Hep3Vector();
+ inline double x() const;
+ inline double y() const;
+ inline double z() const;
+ inline double mag() const;
+ inline Hep3Vector cross(const Hep3Vector &) const;
+ double dx;
+ double dy;
+ double dz;
+ };
+ Hep3Vector operator / (const Hep3Vector &, double a);
+ inline double Hep3Vector::x() const {
+ return dx;
+ }
+ inline double Hep3Vector::y() const {
+ return dy;
+ }
+ inline double Hep3Vector::z() const {
+ return dz;
+ }
+ inline Hep3Vector operator + (const Hep3Vector & a, const Hep3Vector & b) { }
+ inline Hep3Vector operator * (const Hep3Vector & p, double a) { }
+ inline double operator * (const Hep3Vector & a, const Hep3Vector & b) { }
+ inline Hep3Vector::Hep3Vector(double x1, double y1, double z1) : dx(x1), dy(y1), dz(z1) {
+ }
+ inline Hep3Vector::~Hep3Vector() { }
+ inline Hep3Vector Hep3Vector::cross(const Hep3Vector & p) const {
+ return Hep3Vector(dy*p.dz-p.dy*dz, dz*p.dx-p.dz*dx, dx*p.dy-p.dx*dy);
+ }
+ }
+ typedef CLHEP::Hep3Vector G4ThreeVector;
+ namespace std __attribute__ ((__visibility__ ("default"))) {
+ template<typename _Tp, typename _Alloc = std::allocator<_Tp> > struct vector
+ {
+ typedef _Tp *pointer;
+ typedef __gnu_cxx::__normal_iterator<pointer, vector> iterator;
+ iterator begin() { }
+ };
+ }
+ struct G4TransportationManager {
+ static G4TransportationManager* GetTransportationManager();
+ inline G4FieldManager* GetFieldManager() const;
+ };
+ struct G4ErrorMatrix {
+ G4ErrorMatrix(G4int p, G4int q, G4int i);
+ virtual ~G4ErrorMatrix();
+ struct G4ErrorMatrix_row {
+ inline G4ErrorMatrix_row(G4ErrorMatrix&,G4int);
+ G4double & operator[](G4int);
+ G4ErrorMatrix& _a;
+ G4int _r;
+ };
+ inline G4ErrorMatrix_row operator[] (G4int);
+ std::vector<G4double > m;
+ G4int nrow, ncol;
+ };
+ inline G4ErrorMatrix::G4ErrorMatrix_row G4ErrorMatrix::operator[] (G4int r) {
+ G4ErrorMatrix_row b(*this,r);
+ return b;
+ }
+ inline G4double &G4ErrorMatrix::G4ErrorMatrix_row::operator[](G4int c) {
+ return *(_a.m.begin()+_r*_a.ncol+c);
+ }
+ inline G4ErrorMatrix:: G4ErrorMatrix_row::G4ErrorMatrix_row(G4ErrorMatrix&a, G4int r) : _a(a) {
+ _r = r;
+ };
+ struct G4DynamicParticle {
+ G4double GetCharge() const;
+ };
+ struct G4Step;
+ struct G4Track {
+ const G4DynamicParticle* GetDynamicParticle() const;
+ const G4ThreeVector& GetPosition() const;
+ G4ThreeVector GetMomentum() const;
+ const G4Step* GetStep() const;
+ };
+ struct G4StepPoint {
+ const G4ThreeVector& GetPosition() const;
+ G4ThreeVector GetMomentum() const;
+ };
+ struct G4Step {
+ G4StepPoint* GetPreStepPoint() const;
+ G4double GetStepLength() const;
+ };
+ namespace HepGeom {
+ template<class T> struct BasicVector3D {
+ T v_[3];
+ BasicVector3D(T x1, T y1, T z1) { }
+ operator T * () {
+ return v_;
+ }
+ T x() const {
+ return v_[0];
+ }
+ T y() const {
+ return v_[1];
+ }
+ T z() const {
+ return v_[2];
+ }
+ T perp2() const { }
+ T perp() const {
+ return std::sqrt(perp2());
+ }
+ T mag2() const { }
+ T mag() const {
+ return std::sqrt(mag2());
+ }
+ T theta() const { }
+ };
+ inline BasicVector3D<double> operator-(const BasicVector3D<double> & a,const BasicVector3D<double> & b) { }
+ inline BasicVector3D<double> operator*(const BasicVector3D<double> & v, double a) { }
+ template<class T> struct Point3D : public BasicVector3D<T> {
+ explicit Point3D(const double * a) : BasicVector3D<double>(a[0],a[1],a[2]) { }
+ Point3D(const CLHEP::Hep3Vector & v) : BasicVector3D<double>(v.dx,v.dy,v.dz) { }
+ };
+ }
+ typedef HepGeom::Point3D<G4double> G4Point3D;
+ namespace HepGeom {
+ template<class T> struct Vector3D : public BasicVector3D<T> {
+ Vector3D(const BasicVector3D<double> & v) : BasicVector3D<double>(v) { }
+ Vector3D(const CLHEP::Hep3Vector & v) : BasicVector3D<double>(v.dx,v.dy,v.dz) { }
+ operator CLHEP::Hep3Vector () const { }
+ };
+ }
+ typedef HepGeom::Vector3D<G4double> G4Vector3D;
+ struct G4ErrorFreeTrajState
+{
+ virtual G4int PropagateError( const G4Track* aTrack );
+ G4int PropagateErrorMSC( const G4Track* aTrack );
+ };
+ G4int G4ErrorFreeTrajState::PropagateError( const G4Track* aTrack ) {
+ G4double stepLengthCm = aTrack->GetStep()->GetStepLength()/10.;
+ G4Point3D vposPost = aTrack->GetPosition()/10.;
+ G4Vector3D vpPost = aTrack->GetMomentum()/GeV;
+ G4Point3D vposPre = aTrack->GetStep()->GetPreStepPoint()->GetPosition()/10.;
+ G4Vector3D vpPre = aTrack->GetStep()->GetPreStepPoint()->GetMomentum()/GeV;
+ G4double pPre = vpPre.mag();
+ G4double pPost = vpPost.mag();
+ G4double pInvPre = 1./pPre;
+ G4double pInvPost = 1./pPost;
+ G4double deltaPInv = pInvPost - pInvPre;
+ G4Vector3D vpPreNorm = vpPre * pInvPre;
+ G4Vector3D vpPostNorm = vpPost * pInvPost;
+ (*G4cout_p) << "G4EP: vpPreNorm " << vpPreNorm << " vpPostNorm " << vpPostNorm << std::endl;
+ G4double sinpPre = std::sin( vpPreNorm.theta() );
+ G4double sinpPostInv = 1./std::sin( vpPreNorm.theta() );
+ G4ErrorMatrix transf(5, 5, 0 );
+ G4double charge = aTrack->GetDynamicParticle()->GetCharge();
+ G4double h1[3], h2[3];
+ G4Field* field
+= G4TransportationManager::GetTransportationManager()->GetFieldManager()->GetDetectorField()
+;
+ if( charge != 0. && field )
+ {
+ G4ThreeVector HPre = G4ThreeVector( h1[0], h1[1], h1[2] ) / tesla *10.;
+ G4ThreeVector HPost= G4ThreeVector( h2[0], h2[1], h2[2] ) / tesla *10.;
+ {
+ G4double pInvAver = 1./(pInvPre + pInvPost );
+ G4double CFACT8 = 2.997925E-4;
+ G4ThreeVector vHAverNorm( (HPre*pInvPre + HPost*pInvPost ) * pInvAver * charge * CFACT8 );
+ G4double HAver = vHAverNorm.mag();
+ G4double pAver = (pPre+pPost)*0.5;
+ G4double QAver = -HAver/pAver;
+ G4double thetaAver = QAver * stepLengthCm;
+ G4double sinThetaAver = std::sin(thetaAver);
+ G4double cosThetaAver = std::cos(thetaAver);
+ G4double gamma = vHAverNorm * vpPostNorm;
+ G4ThreeVector AN2 = vHAverNorm.cross( vpPostNorm );
+ G4double AU = 1./vpPreNorm.perp();
+ G4ThreeVector vUPre( -AU*vpPreNorm.y(), AU*vpPreNorm.x(), 0. );
+ G4ThreeVector vVPre( -vpPreNorm.z()*vUPre.y(), vpPreNorm.z()*vUPre.x(), vpPreNorm.x()*vUPre.y() - vpPreNorm.y()*vUPre.x() );
+ AU = 1./vpPostNorm.perp();
+ G4ThreeVector vUPost( -AU*vpPostNorm.y(), AU*vpPostNorm.x(), 0. );
+ G4ThreeVector vVPost( -vpPostNorm.z()*vUPost.y(), vpPostNorm.z()*vUPost.x(), vpPostNorm.x()*vUPost.y() - vpPostNorm.y()*vUPost.x() );
+ G4Point3D deltaPos( vposPre - vposPost );
+ G4double QP = QAver * pAver;
+ G4double ANV = -( vHAverNorm.x()*vUPost.x() + vHAverNorm.y()*vUPost.y() );
+ G4double ANU = ( vHAverNorm.x()*vVPost.x() + vHAverNorm.y()*vVPost.y() + vHAverNorm.z()*vVPost.z() );
+ G4double OMcosThetaAver = 1. - cosThetaAver;
+ G4double TMSINT = thetaAver - sinThetaAver;
+ G4ThreeVector vHUPre( -vHAverNorm.z() * vUPre.y(), vHAverNorm.z() * vUPre.x(), vHAverNorm.x() * vUPre.y() - vHAverNorm.y() * vUPre.x() );
+ G4ThreeVector vHVPre( vHAverNorm.y() * vVPre.z() - vHAverNorm.z() * vVPre.y(), vHAverNorm.z() * vVPre.x() - vHAverNorm.x() * vVPre.z(), vHAverNorm.x() * vVPre.y() - vHAverNorm.y() * vVPre.x() );
+ transf[0][1] = -deltaPInv/thetaAver* ( TMSINT*gamma*(vHAverNorm.x()*vVPre.x()+vHAverNorm.y()*vVPre.y()+vHAverNorm.z()*vVPre.z()) + sinThetaAver*(vVPre.x()*vpPostNorm.x()+vVPre.y()*vpPostNorm.y()+vVPre.z()*vpPostNorm.z()) + OMcosThetaAver*(vHVPre.x()*vpPostNorm.x()+vHVPre.y()*vpPostNorm.y()+vHVPre.z()*vpPostNorm.z()) );
+ transf[0][2] = -sinpPre*deltaPInv/thetaAver* ( TMSINT*gamma*(vHAverNorm.x()*vUPre.x()+vHAverNorm.y()*vUPre.y() ) + sinThetaAver*(vUPre.x()*vpPostNorm.x()+vUPre.y()*vpPostNorm.y() ) + OMcosThetaAver*(vHUPre.x()*vpPostNorm.x()+vHUPre.y()*vpPostNorm.y()+vHUPre.z()*vpPostNorm.z()) );
+ transf[0][3] = -deltaPInv/stepLengthCm*(vUPre.x()*vpPostNorm.x()+vUPre.y()*vpPostNorm.y() );
+ transf[1][1] = cosThetaAver*(vVPre.x()*vVPost.x()+vVPre.y()*vVPost.y()+vVPre.z()*vVPost.z()) + sinThetaAver*(vHVPre.x()*vVPost.x()+vHVPre.y()*vVPost.y()+vHVPre.z()*vVPost.z()) + OMcosThetaAver*(vHAverNorm.x()*vVPre.x()+vHAverNorm.y()*vVPre.y()+vHAverNorm.z()*vVPre.z())* (vHAverNorm.x()*vVPost.x()+vHAverNorm.y()*vVPost.y()+vHAverNorm.z()*vVPost.z()) + ANV*( -sinThetaAver*(vVPre.x()*vpPostNorm.x()+vVPre.y()*vpPostNorm.y()+vVPre.z()*vpPostNorm.z()) + OMcosThetaAver*(vVPre.x()*AN2.x()+vVPre.y()*AN2.y()+vVPre.z()*AN2.z()) - TMSINT*gamma*(vHAverNorm.x()*vVPre.x()+vHAverNorm.y()*vVPre.y()+vHAverNorm.z()*vVPre.z()) );
+ transf[1][2] = cosThetaAver*(vUPre.x()*vVPost.x()+vUPre.y()*vVPost.y() ) + sinThetaAver*(vHUPre.x()*vVPost.x()+vHUPre.y()*vVPost.y()+vHUPre.z()*vVPost.z()) + OMcosThetaAver*(vHAverNorm.x()*vUPre.x()+vHAverNorm.y()*vUPre.y() )* (vHAverNorm.x()*vVPost.x()+vHAverNorm.y()*vVPost.y()+vHAverNorm.z()*vVPost.z()) + ANV*( -sinThetaAver*(vUPre.x()*vpPostNorm.x()+vUPre.y()*vpPostNorm.y() ) + OMcosThetaAver*(vUPre.x()*AN2.x()+vUPre.y()*AN2.y() ) - TMSINT*gamma*(vHAverNorm.x()*vUPre.x()+vHAverNorm.y()*vUPre.y() ) );
+ transf[2][0] = -QP*ANU*(vpPostNorm.x()*deltaPos.x()+vpPostNorm.y()*deltaPos.y()+vpPostNorm.z()*deltaPos.z())*sinpPostInv *(1.+deltaPInv*pAver);
+ transf[2][3] = -QAver*ANU*(vUPre.x()*vpPostNorm.x()+vUPre.y()*vpPostNorm.y() )*sinpPostInv;
+ transf[3][4] = (vVPre.x()*vUPost.x()+vVPre.y()*vUPost.y() );
+ transf[4][0] = pAver*(vVPost.x()*deltaPos.x()+vVPost.y()*deltaPos.y()+vVPost.z()*deltaPos.z()) *(1.+deltaPInv*pAver);
+ transf[4][1] = ( sinThetaAver*(vVPre.x()*vVPost.x()+vVPre.y()*vVPost.y()+vVPre.z()*vVPost.z()) + OMcosThetaAver*(vHVPre.x()*vVPost.x()+vHVPre.y()*vVPost.y()+vHVPre.z()*vVPost.z()) + TMSINT*(vHAverNorm.x()*vVPost.x()+vHAverNorm.y()*vVPost.y()+vHAverNorm.z()*vVPost.z())* (vHAverNorm.x()*vVPre.x()+vHAverNorm.y()*vVPre.y()+vHAverNorm.z()*vVPre.z()) )/QAver;
+ transf[4][2] = ( sinThetaAver*(vUPre.x()*vVPost.x()+vUPre.y()*vVPost.y() ) + OMcosThetaAver*(vHUPre.x()*vVPost.x()+vHUPre.y()*vVPost.y()+vHUPre.z()*vVPost.z()) + TMSINT*(vHAverNorm.x()*vVPost.x()+vHAverNorm.y()*vVPost.y()+vHAverNorm.z()*vVPost.z())* (vHAverNorm.x()*vUPre.x()+vHAverNorm.y()*vUPre.y() ) )*sinpPre/QAver;
+ }
+ }
+ PropagateErrorMSC( aTrack );
+ }
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/pr60697.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/pr60697.c
new file mode 100644
index 000000000..57ccecb1d
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/pr60697.c
@@ -0,0 +1,638 @@
+/* { dg-do compile } */
+/* { dg-options "-w -O3 -mcpu=cortex-a53" } */
+typedef struct __sFILE __FILE;
+typedef __FILE FILE;
+typedef int atom_id;
+typedef float real;
+typedef real rvec[3];
+typedef real matrix[3][3];
+enum {
+ ebCGS,ebMOLS,ebSBLOCKS,ebNR
+};
+enum {
+ efepNO, efepYES, efepNR
+};
+enum {
+ esolNO, esolMNO, esolWATER, esolWATERWATER, esolNR
+};
+typedef struct {
+ int nr;
+ atom_id *index;
+ atom_id *a;
+} t_block;
+enum {
+ F_LJ,
+ F_LJLR,
+ F_SR,
+ F_LR,
+ F_DVDL,
+};
+typedef struct {
+ t_block excl;
+} t_atoms;
+typedef struct {
+ t_atoms atoms;
+ t_block blocks[ebNR];
+} t_topology;
+typedef struct {
+} t_nsborder;
+extern FILE *debug;
+typedef struct {
+} t_nrnb;
+typedef struct {
+ int nri,maxnri;
+ int nrj,maxnrj;
+ int maxlen;
+ int solvent;
+ int *gid;
+ int *jindex;
+ atom_id *jjnr;
+ int *nsatoms;
+} t_nblist;
+typedef struct {
+ int nrx,nry,nrz;
+} t_grid;
+typedef struct {
+} t_commrec;
+enum { eNL_VDWQQ, eNL_VDW, eNL_QQ,
+ eNL_VDWQQ_FREE, eNL_VDW_FREE, eNL_QQ_FREE,
+ eNL_VDWQQ_SOLMNO, eNL_VDW_SOLMNO, eNL_QQ_SOLMNO,
+ eNL_VDWQQ_WATER, eNL_QQ_WATER,
+ eNL_VDWQQ_WATERWATER, eNL_QQ_WATERWATER,
+ eNL_NR };
+typedef struct {
+ real rlist,rlistlong;
+ real rcoulomb_switch,rcoulomb;
+ real rvdw_switch,rvdw;
+ int efep;
+ int cg0,hcg;
+ int *solvent_type;
+ int *mno_index;
+ rvec *cg_cm;
+ t_nblist nlist_sr[eNL_NR];
+ t_nblist nlist_lr[eNL_NR];
+ int bTwinRange;
+ rvec *f_twin;
+ int *eg_excl;
+} t_forcerec;
+typedef struct {
+ real *chargeA,*chargeB,*chargeT;
+ int *bPerturbed;
+ int *typeA,*typeB;
+ unsigned short *cTC,*cENER,*cACC,*cFREEZE,*cXTC,*cVCM;
+} t_mdatoms;
+enum { egCOUL, egLJ, egBHAM, egLR, egLJLR, egCOUL14, egLJ14, egNR };
+typedef struct {
+ real *ee[egNR];
+} t_grp_ener;
+typedef struct {
+ t_grp_ener estat;
+} t_groups;
+typedef unsigned long t_excl;
+static void reset_nblist(t_nblist *nl)
+{
+ nl->nri = 0;
+ nl->nrj = 0;
+ nl->maxlen = 0;
+ if (nl->maxnri > 0) {
+ nl->gid[0] = -1;
+ if (nl->maxnrj > 1) {
+ nl->jindex[0] = 0;
+ nl->jindex[1] = 0;
+ }
+ }
+}
+static void reset_neighbor_list(t_forcerec *fr,int bLR,int eNL)
+{
+ reset_nblist(&(fr->nlist_lr[eNL]));
+}
+static void close_i_nblist(t_nblist *nlist)
+{
+ int nri = nlist->nri;
+ int len;
+ nlist->jindex[nri+1] = nlist->nrj;
+ len=nlist->nrj - nlist->jindex[nri];
+ if (nlist->solvent==esolMNO)
+ len *= nlist->nsatoms[3*nri];
+ if(len > nlist->maxlen)
+ nlist->maxlen = len;
+}
+static void close_nblist(t_nblist *nlist)
+{
+ if (nlist->maxnri > 0) {
+ int nri = nlist->nri;
+ if ((nlist->jindex[nri+1] > nlist->jindex[nri]) &&
+ (nlist->gid[nri] != -1)) {
+ nlist->nri++;
+ nlist->jindex[nri+2] = nlist->nrj;
+ }
+ }
+}
+static void close_neighbor_list(t_forcerec *fr,int bLR,int eNL)
+{
+ close_nblist(&(fr->nlist_lr[eNL]));
+}
+static void add_j_to_nblist(t_nblist *nlist,atom_id j_atom)
+{
+ int nrj=nlist->nrj;
+ nlist->jjnr[nrj] = j_atom;
+ nlist->nrj ++;
+}
+static void put_in_list(int bHaveLJ[],
+ int ngid,t_mdatoms *md,
+ int icg,int jgid,int nj,atom_id jjcg[],
+ atom_id index[],
+ t_excl bExcl[],int shift,
+ t_forcerec *fr,int bLR,
+ int bVDWOnly,int bCoulOnly)
+{
+ t_nblist *vdwc,*vdw,*coul;
+ t_nblist *vdwc_ww=((void *)0),*coul_ww=((void *)0);
+ t_nblist *vdwc_free=((void *)0),*vdw_free=((void *)0),*coul_free=((void *)0);
+ int i,j,jcg,igid,gid,ind_ij;
+ atom_id jj,jj0,jj1,i_atom;
+ int i0,nicg,len;
+ int *type,*typeB;
+ unsigned short *cENER;
+ real *charge,*chargeB;
+ real qi,qiB,qq,rlj;
+ int bWater,bMNO,bFree,bFreeJ,bNotEx,*bPert;
+ charge = md->chargeA;
+ chargeB = md->chargeB;
+ type = md->typeA;
+ typeB = md->typeB;
+ cENER = md->cENER;
+ bPert = md->bPerturbed;
+ i0 = index[icg];
+ nicg = index[icg+1]-i0;
+ bMNO = (fr->solvent_type[icg] == esolMNO);
+ if (bLR) {
+ if (bWater) {
+ vdw = &fr->nlist_lr[eNL_VDW];
+ coul = &fr->nlist_lr[eNL_QQ_WATER];
+ vdwc_ww = &fr->nlist_lr[eNL_VDWQQ_WATERWATER];
+ } else if(bMNO) {
+ vdwc = &fr->nlist_lr[eNL_VDWQQ_SOLMNO];
+ }
+ if (fr->efep != efepNO) {
+ vdw_free = &fr->nlist_lr[eNL_VDW_FREE];
+ coul_free = &fr->nlist_lr[eNL_QQ_FREE];
+ }
+ }
+ else {
+ if (bWater) {
+ } else if(bMNO) {
+ vdwc = &fr->nlist_sr[eNL_VDWQQ_SOLMNO];
+ }
+ if (fr->efep != efepNO) {
+ vdwc_free = &fr->nlist_sr[eNL_VDWQQ_FREE];
+ }
+ }
+ if (fr->efep==efepNO) {
+ if (bWater) {
+ igid = cENER[i_atom];
+ gid = ((igid < jgid) ? (igid*ngid+jgid) : (jgid*ngid+igid));
+ if (!bCoulOnly && !bVDWOnly) {
+ new_i_nblist(vdwc,bLR ? F_LJLR : F_LJ,i_atom,shift,gid,((void *)0));
+ new_i_nblist(vdwc_ww,bLR ? F_LJLR : F_LJ,i_atom,shift,gid,((void *)0));
+ }
+ if (!bCoulOnly)
+ new_i_nblist(vdw,bLR ? F_LJLR : F_LJ,i_atom,shift,gid,((void *)0));
+ if (!bVDWOnly) {
+ new_i_nblist(coul,bLR ? F_LR : F_SR,i_atom,shift,gid,((void *)0));
+ new_i_nblist(coul_ww,bLR ? F_LR : F_SR,i_atom,shift,gid,((void *)0));
+ }
+ for(j=0; (j<nj); j++) {
+ jcg=jjcg[j];
+ if (jcg==icg)
+ jj0 = index[jcg];
+ if (bWater && (fr->solvent_type[jcg] == esolWATER)) {
+ if (bVDWOnly)
+ add_j_to_nblist(vdw,jj0);
+ else {
+ add_j_to_nblist(coul_ww,jj0);
+ add_j_to_nblist(vdwc_ww,jj0);
+ }
+ } else {
+ jj1 = index[jcg+1];
+ if (bCoulOnly) {
+ for(jj=jj0; (jj<jj1); jj++) {
+ if (fabs(charge[jj]) > 1.2e-38)
+ add_j_to_nblist(coul,jj);
+ }
+ } else if (bVDWOnly) {
+ for(jj=jj0; (jj<jj1); jj++)
+ if (bHaveLJ[type[jj]])
+ add_j_to_nblist(vdw,jj);
+ } else {
+ for(jj=jj0; (jj<jj1); jj++) {
+ if (bHaveLJ[type[jj]]) {
+ if (fabs(charge[jj]) > 1.2e-38)
+ add_j_to_nblist(vdwc,jj);
+ add_j_to_nblist(vdw,jj);
+ } else if (fabs(charge[jj]) > 1.2e-38)
+ add_j_to_nblist(coul,jj);
+ }
+ }
+ }
+ }
+ close_i_nblist(vdw);
+ close_i_nblist(coul);
+ close_i_nblist(vdwc);
+ close_i_nblist(coul_ww);
+ close_i_nblist(vdwc_ww);
+ } else if (bMNO) {
+ igid = cENER[i_atom];
+ gid = ((igid < jgid) ? (igid*ngid+jgid) : (jgid*ngid+igid));
+ if (!bCoulOnly && !bVDWOnly)
+ new_i_nblist(vdwc,bLR ? F_LJLR : F_LJ,i_atom,shift,gid,
+ &(fr->mno_index[icg*3]));
+ if (!bCoulOnly)
+ new_i_nblist(vdw,bLR ? F_LR : F_SR,i_atom,shift,gid,
+ &(fr->mno_index[icg*3]));
+ if (!bVDWOnly)
+ new_i_nblist(coul,bLR ? F_LR : F_SR,i_atom,shift,gid,
+ &(fr->mno_index[icg*3]));
+ for(j=0; (j<nj); j++) {
+ jcg=jjcg[j];
+ if (jcg == icg)
+ jj0 = index[jcg];
+ jj1=index[jcg+1];
+ for(jj=jj0; (jj<jj1); jj++) {
+ if (bCoulOnly) {
+ if (fabs(charge[jj]) > 1.2e-38)
+ add_j_to_nblist(coul,jj);
+ } else if (bVDWOnly) {
+ if (bHaveLJ[type[jj]])
+ add_j_to_nblist(vdw,jj);
+ } else {
+ if (bHaveLJ[type[jj]]) {
+ if (fabs(charge[jj]) > 1.2e-38)
+ add_j_to_nblist(vdwc,jj);
+ add_j_to_nblist(vdw,jj);
+ } else if (fabs(charge[jj]) > 1.2e-38)
+ add_j_to_nblist(coul,jj);
+ }
+ }
+ close_i_nblist(vdw);
+ close_i_nblist(coul);
+ close_i_nblist(vdwc);
+ }
+ } else {
+ for(i=0; i<nicg; i++) {
+ igid = cENER[i_atom];
+ gid = ((igid < jgid) ? (igid*ngid+jgid) : (jgid*ngid+igid));
+ qi = charge[i_atom];
+ if (!bCoulOnly && !bVDWOnly)
+ new_i_nblist(vdwc,bLR ? F_LJLR : F_LJ,i_atom,shift,gid,((void *)0));
+ if (!bCoulOnly)
+ new_i_nblist(vdw,bLR ? F_LR : F_SR,i_atom,shift,gid,((void *)0));
+ if (!bVDWOnly)
+ new_i_nblist(coul,bLR ? F_LR : F_SR,i_atom,shift,gid,((void *)0));
+ if (!(bVDWOnly || fabs(qi)<1.2e-38) || !(bCoulOnly || !bHaveLJ[type[i_atom]])) {
+ for(j=0; (j<nj); j++) {
+ jcg=jjcg[j];
+ if (jcg == icg)
+ jj0 = i0 + i + 1;
+ else
+ jj0 = index[jcg];
+ jj1=index[jcg+1];
+ for(jj=jj0; jj<jj1; jj++) {
+ bNotEx = !((int) ((bExcl)[((atom_id) (jj))] & (1<<((atom_id) (i)))));
+ if (bNotEx) {
+ if (bCoulOnly) {
+ if (fabs(charge[jj]) > 1.2e-38)
+ add_j_to_nblist(coul,jj);
+ } else if (bVDWOnly) {
+ if (bHaveLJ[type[jj]])
+ add_j_to_nblist(vdw,jj);
+ } else {
+ if (bHaveLJ[type[jj]]) {
+ if (fabs(qi) > 1.2e-38 && (fabs(charge[jj]) > 1.2e-38))
+ add_j_to_nblist(vdwc,jj);
+ add_j_to_nblist(vdw,jj);
+ } else if (fabs(qi) > 1.2e-38 && (fabs(charge[jj]) > 1.2e-38))
+ add_j_to_nblist(coul,jj);
+ }
+ }
+ }
+ }
+ }
+ close_i_nblist(vdw);
+ close_i_nblist(coul);
+ close_i_nblist(vdwc);
+ }
+ }
+ } else {
+ for(i=0; i<nicg; i++) {
+ igid = cENER[i_atom];
+ gid = ((igid < jgid) ? (igid*ngid+jgid) : (jgid*ngid+igid));
+ qi = charge[i_atom];
+ qiB = chargeB[i_atom];
+ if (!bCoulOnly && !bVDWOnly)
+ new_i_nblist(vdwc,bLR ? F_LJLR : F_LJ,i_atom,shift,gid,
+ bMNO ? &(fr->mno_index[icg*3]) : ((void *)0));
+ if (!bCoulOnly)
+ new_i_nblist(vdw,bLR ? F_LR : F_SR,i_atom,shift,gid,
+ bMNO ? &(fr->mno_index[icg*3]) : ((void *)0));
+ new_i_nblist(coul,bLR ? F_LR : F_SR,i_atom,shift,gid,
+ bMNO ? &(fr->mno_index[icg*3]) : ((void *)0));
+ new_i_nblist(vdw_free,F_DVDL,i_atom,shift,gid,((void *)0));
+ new_i_nblist(coul_free,F_DVDL,i_atom,shift,gid,((void *)0));
+ new_i_nblist(vdwc_free,F_DVDL,i_atom,shift,gid,((void *)0));
+ if (!(bVDWOnly || (fabs(qi)<1.2e-38 && fabs(qiB)<1.2e-38)) ||
+ !(bCoulOnly || (!bHaveLJ[type[i_atom]] && !bHaveLJ[typeB[i_atom]]))) {
+ for(j=0; (j<nj); j++) {
+ jcg=jjcg[j];
+ if (jcg == icg)
+ jj0 = i0 + i + 1;
+ else
+ jj0 = index[jcg];
+ jj1=index[jcg+1];
+ bFree = bPert[i_atom];
+ for(jj=jj0; (jj<jj1); jj++) {
+ bFreeJ = bFree || bPert[jj];
+ if ((!bWater && !bMNO) || i==0 || bFreeJ) {
+ bNotEx = !((int) ((bExcl)[((atom_id) (jj))] & (1<<((atom_id) (i)))));
+ if (bNotEx) {
+ if (bFreeJ) {
+ if (bCoulOnly)
+ add_j_to_nblist(coul_free,jj);
+ else if (bVDWOnly)
+ add_j_to_nblist(vdw_free,jj);
+ add_j_to_nblist(vdwc_free,jj);
+ } else if (bCoulOnly) {
+ add_j_to_nblist(coul,jj);
+ } else if (bVDWOnly) {
+ if (bHaveLJ[type[jj]])
+ add_j_to_nblist(vdw,jj);
+ } else {
+ if (bHaveLJ[type[jj]]) {
+ if (fabs(qi) > 1.2e-38 && (fabs(charge[jj]) > 1.2e-38))
+ add_j_to_nblist(vdwc,jj);
+ add_j_to_nblist(vdw,jj);
+ } else if (fabs(qi) > 1.2e-38 && (fabs(charge[jj]) > 1.2e-38))
+ add_j_to_nblist(coul,jj);
+ }
+ }
+ }
+ }
+ }
+ }
+ close_i_nblist(vdw);
+ close_i_nblist(coul);
+ close_i_nblist(vdwc);
+ if (bWater && (i==0)) {
+ close_i_nblist(coul_ww);
+ close_i_nblist(vdwc_ww);
+ }
+ close_i_nblist(vdw_free);
+ close_i_nblist(coul_free);
+ close_i_nblist(vdwc_free);
+ }
+ }
+}
+static void setexcl(atom_id start,atom_id end,t_block *excl,int b,
+ t_excl bexcl[])
+{
+ atom_id i,k;
+ if (b) {
+ for(i=start; i<end; i++) {
+ for(k=excl->index[i]; k<excl->index[i+1]; k++) {
+ (bexcl)[((atom_id) (excl->a[k]))] |= (1<<((atom_id) (i-start)));
+ }
+ }
+ }
+}
+int calc_naaj(int icg,int cgtot)
+{
+ int naaj;
+ if ((cgtot % 2) == 1) {
+ naaj = 1+(cgtot/2);
+ }
+ else if ((cgtot % 4) == 0) {
+ if (icg < cgtot/2) {
+ if ((icg % 2) == 0)
+ naaj=1+(cgtot/2);
+ }
+ else {
+ if ((icg % 2) == 1)
+ naaj=1+(cgtot/2);
+ }
+ }
+ else {
+ if ((icg % 2) == 0)
+ naaj=1+(cgtot/2);
+ else
+ naaj=cgtot/2;
+ }
+ return naaj;
+}
+static void get_dx(int Nx,real gridx,real grid_x,real rc2,real x,
+ int *dx0,int *dx1,real *dcx2)
+{
+ real dcx,tmp;
+ int xgi,xgi0,xgi1,i;
+ xgi = (int)(Nx+x*grid_x)-Nx;
+ if (xgi < 0) {
+ *dx0 = 0;
+ *dx1 = -1;
+ } else if (xgi >= Nx) {
+ *dx0 = Nx;
+ *dx1 = Nx-1;
+ } else {
+ dcx2[xgi] = 0;
+ *dx0 = xgi;
+ xgi0 = xgi-1;
+ *dx1 = xgi;
+ xgi1 = xgi+1;
+ }
+ for(i=xgi0; i>=0; i--) {
+ dcx = (i+1)*gridx-x;
+ tmp = dcx*dcx;
+ if (tmp >= rc2)
+ *dx0 = i;
+ dcx2[i] = tmp;
+ }
+ for(i=xgi1; i<Nx; i++) {
+ dcx = i*gridx-x;
+ tmp = dcx*dcx;
+ if (tmp >= rc2)
+ *dx1 = i;
+ dcx2[i] = tmp;
+ }
+}
+static void do_longrange(FILE *log,t_commrec *cr,t_topology *top,t_forcerec *fr,
+ int ngid,t_mdatoms *md,int icg,
+ int jgid,int nlr,
+ atom_id lr[],t_excl bexcl[],int shift,
+ rvec x[],rvec box_size,t_nrnb *nrnb,
+ real lambda,real *dvdlambda,
+ t_groups *grps,int bVDWOnly,int bCoulOnly,
+ int bDoForces,int bHaveLJ[])
+{
+ int i;
+ for(i=0; (i<eNL_NR); i++) {
+ if ((fr->nlist_lr[i].nri > fr->nlist_lr[i].maxnri-32) || bDoForces) {
+ close_neighbor_list(fr,1,i);
+ do_fnbf(log,cr,fr,x,fr->f_twin,md,
+ grps->estat.ee[egLJLR],grps->estat.ee[egLR],box_size,
+ nrnb,lambda,dvdlambda,1,i);
+ reset_neighbor_list(fr,1,i);
+ }
+ }
+ if (!bDoForces) {
+ put_in_list(bHaveLJ,ngid,md,icg,jgid,nlr,lr,top->blocks[ebCGS].index,
+ bexcl,shift,fr,
+ 1,bVDWOnly,bCoulOnly);
+ }
+}
+static int ns5_core(FILE *log,t_commrec *cr,t_forcerec *fr,int cg_index[],
+ matrix box,rvec box_size,int ngid,
+ t_topology *top,t_groups *grps,
+ t_grid *grid,rvec x[],t_excl bexcl[],int *bExcludeAlleg,
+ t_nrnb *nrnb,t_mdatoms *md,
+ real lambda,real *dvdlambda,
+ int bHaveLJ[])
+{
+ static atom_id **nl_lr_ljc,**nl_lr_one,**nl_sr=((void *)0);
+ static int *nlr_ljc,*nlr_one,*nsr;
+ static real *dcx2=((void *)0),*dcy2=((void *)0),*dcz2=((void *)0);
+ t_block *cgs=&(top->blocks[ebCGS]);
+ unsigned short *gid=md->cENER;
+ int tx,ty,tz,dx,dy,dz,cj;
+ int dx0,dx1,dy0,dy1,dz0,dz1;
+ int Nx,Ny,Nz,shift=-1,j,nrj,nns,nn=-1;
+ real gridx,gridy,gridz,grid_x,grid_y,grid_z;
+ int icg=-1,iicg,cgsnr,i0,nri,naaj,min_icg,icg_naaj,jjcg,cgj0,jgid;
+ int bVDWOnly,bCoulOnly;
+ rvec xi,*cgcm;
+ real r2,rs2,rvdw2,rcoul2,rm2,rl2,XI,YI,ZI,dcx,dcy,dcz,tmp1,tmp2;
+ int *i_eg_excl;
+ int use_twinrange,use_two_cutoffs;
+ cgsnr = cgs->nr;
+ rs2 = ((fr->rlist)*(fr->rlist));
+ if (fr->bTwinRange) {
+ rvdw2 = ((fr->rvdw)*(fr->rvdw));
+ rcoul2 = ((fr->rcoulomb)*(fr->rcoulomb));
+ } else {
+ }
+ rm2 = (((rvdw2) < (rcoul2)) ? (rvdw2) : (rcoul2) );
+ rl2 = (((rvdw2) > (rcoul2)) ? (rvdw2) : (rcoul2) );
+ use_twinrange = (rs2 < rm2);
+ use_two_cutoffs = (rm2 < rl2);
+ bVDWOnly = (rvdw2 > rcoul2);
+ bCoulOnly = !bVDWOnly;
+ if (nl_sr == ((void *)0)) {
+ (nl_sr)=save_calloc("nl_sr","ns.c",1341, (ngid),sizeof(*(nl_sr)));
+ (nsr)=save_calloc("nsr","ns.c",1343, (ngid),sizeof(*(nsr)));
+ (nlr_ljc)=save_calloc("nlr_ljc","ns.c",1344, (ngid),sizeof(*(nlr_ljc)));
+ (nlr_one)=save_calloc("nlr_one","ns.c",1345, (ngid),sizeof(*(nlr_one)));
+ if (use_twinrange)
+ (nl_lr_ljc)=save_calloc("nl_lr_ljc","ns.c",1349, (ngid),sizeof(*(nl_lr_ljc)));
+ if (use_two_cutoffs)
+ (nl_lr_one)=save_calloc("nl_lr_one","ns.c",1353, (ngid),sizeof(*(nl_lr_one)));
+ for(j=0; (j<ngid); j++) {
+ (nl_sr[j])=save_calloc("nl_sr[j]","ns.c",1356, (1024),sizeof(*(nl_sr[j])));
+ if (use_twinrange)
+ (nl_lr_ljc[j])=save_calloc("nl_lr_ljc[j]","ns.c",1358, (1024),sizeof(*(nl_lr_ljc[j])));
+ if (use_two_cutoffs)
+ (nl_lr_one[j])=save_calloc("nl_lr_one[j]","ns.c",1360, (1024),sizeof(*(nl_lr_one[j])));
+ }
+ if (debug)
+ fprintf(debug,"ns5_core: rs2 = %g, rvdw2 = %g, rcoul2 = %g (nm^2)\n",
+ rs2,rvdw2,rcoul2);
+ }
+ cgcm = fr->cg_cm;
+ Nx = grid->nrx;
+ Ny = grid->nry;
+ if (dcx2 == ((void *)0)) {
+ (dcx2)=save_calloc("dcx2","ns.c",1379, (Nx*2),sizeof(*(dcx2)));
+ (dcy2)=save_calloc("dcy2","ns.c",1380, (Ny*2),sizeof(*(dcy2)));
+ (dcz2)=save_calloc("dcz2","ns.c",1381, (Nz*2),sizeof(*(dcz2)));
+ }
+ gridx = box[0][0]/grid->nrx;
+ gridy = box[1][1]/grid->nry;
+ gridz = box[2][2]/grid->nrz;
+ grid_x = 1/gridx;
+ grid_y = 1/gridy;
+ grid_z = 1/gridz;
+ for(iicg=fr->cg0; (iicg < fr->hcg); iicg++) {
+ icg = cg_index[iicg];
+ if (icg != iicg)
+ fatal_error(0,"icg = %d, iicg = %d, file %s, line %d",icg,iicg,"ns.c",
+ 1408);
+ if(bExcludeAlleg[icg])
+ i_eg_excl = fr->eg_excl + ngid*gid[cgs->index[icg]];
+ setexcl(cgs->index[icg],cgs->index[icg+1],&top->atoms.excl,1,bexcl);
+ naaj = calc_naaj(icg,cgsnr);
+ icg_naaj = icg+naaj;
+ for (tz=-1; tz<=1; tz++) {
+ ZI = cgcm[icg][2]+tz*box[2][2];
+ get_dx(Nz,gridz,grid_z,rcoul2,ZI,&dz0,&dz1,dcz2);
+ if (dz0 > dz1)
+ for (ty=-1; ty<=1; ty++) {
+ YI = cgcm[icg][1]+ty*box[1][1]+tz*box[2][1];
+ get_dx(Ny,gridy,grid_y,rcoul2,YI,&dy0,&dy1,dcy2);
+ for (tx=-1; tx<=1; tx++) {
+ get_dx(Nx,gridx,grid_x,rcoul2,XI,&dx0,&dx1,dcx2);
+ shift=((2*1 +1)*((2*1 +1)*((tz)+1)+(ty)+1)+(tx)+1);
+ for (dx=dx0; (dx<=dx1); dx++) {
+ for (dy=dy0; (dy<=dy1); dy++) {
+ for (dz=dz0; (dz<=dz1); dz++) {
+ if (tmp2 > dcz2[dz]) {
+ for (j=0; (j<nrj); j++) {
+ if (((jjcg >= icg) && (jjcg < icg_naaj)) ||
+ ((jjcg < min_icg))) {
+ if (r2 < rl2) {
+ if (!i_eg_excl[jgid]) {
+ if (r2 < rs2) {
+ if (nsr[jgid] >= 1024) {
+ put_in_list(bHaveLJ,ngid,md,icg,jgid,
+ nsr[jgid],nl_sr[jgid],
+ cgs->index, bexcl,
+ shift,fr,0,0,0);
+ }
+ } else if (r2 < rm2) {
+ } else if (use_two_cutoffs) {
+ if (nlr_one[jgid] >= 1024) {
+ do_longrange(log,cr,top,fr,ngid,md,icg,jgid,
+ nlr_one[jgid],
+ nl_lr_one[jgid],bexcl,shift,x,
+ box_size,nrnb,
+ lambda,dvdlambda,grps,
+ bVDWOnly,bCoulOnly,0,
+ bHaveLJ);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+int search_neighbours(FILE *log,t_forcerec *fr,
+ rvec x[],matrix box,
+ t_topology *top,t_groups *grps,
+ t_commrec *cr,t_nsborder *nsb,
+ t_nrnb *nrnb,t_mdatoms *md,
+ real lambda,real *dvdlambda)
+{
+ static t_grid *grid=((void *)0);
+ static t_excl *bexcl;
+ static int *bHaveLJ;
+ static int *cg_index=((void *)0),*slab_index=((void *)0);
+ static int *bExcludeAlleg;
+ rvec box_size;
+ int i,j,m,ngid;
+ int nsearch;
+ nsearch = ns5_core(log,cr,fr,cg_index,box,box_size,ngid,top,grps,
+ grid,x,bexcl,bExcludeAlleg,nrnb,md,lambda,dvdlambda,bHaveLJ);
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/test_fp_attribute_1.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/test_fp_attribute_1.c
new file mode 100644
index 000000000..7538250c9
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/test_fp_attribute_1.c
@@ -0,0 +1,26 @@
+/* { dg-do compile } */
+/* { dg-options "-O0 -fno-omit-frame-pointer -fno-inline --save-temps" } */
+
+void
+leaf (void)
+{
+ int a = 0;
+}
+
+__attribute__ ((optimize("omit-frame-pointer")))
+void
+non_leaf_1 (void)
+{
+ leaf ();
+}
+
+__attribute__ ((optimize("omit-frame-pointer")))
+void
+non_leaf_2 (void)
+{
+ leaf ();
+}
+
+/* { dg-final { scan-assembler-times "str\tx30, \\\[sp\\\]" 2 } } */
+
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/test_fp_attribute_2.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/test_fp_attribute_2.c
new file mode 100644
index 000000000..675091f84
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/test_fp_attribute_2.c
@@ -0,0 +1,26 @@
+/* { dg-do compile } */
+/* { dg-options "-O0 -fomit-frame-pointer -fno-inline --save-temps" } */
+
+void
+leaf (void)
+{
+ int a = 0;
+}
+
+__attribute__ ((optimize("no-omit-frame-pointer")))
+void
+non_leaf_1 (void)
+{
+ leaf ();
+}
+
+__attribute__ ((optimize("no-omit-frame-pointer")))
+void
+non_leaf_2 (void)
+{
+ leaf ();
+}
+
+/* { dg-final { scan-assembler-times "stp\tx29, x30, \\\[sp, -\[0-9\]+\\\]!" 2 } } */
+
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/arm/pr60650-2.c b/gcc-4.9/gcc/testsuite/gcc.target/arm/pr60650-2.c
new file mode 100644
index 000000000..19467607b
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/arm/pr60650-2.c
@@ -0,0 +1,37 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fno-omit-frame-pointer -march=armv7-a" } */
+
+int a, h, j;
+long long d, e, i;
+int f;
+fn1 (void *p1, int p2)
+{
+ switch (p2)
+ case 8:
+{
+ register b = *(long long *) p1, c asm ("r2");
+ asm ("%0": "=r" (a), "=r" (c):"r" (b), "r" (0));
+ *(long long *) p1 = c;
+ }
+}
+
+fn2 ()
+{
+ int k;
+ k = f;
+ while (1)
+ {
+ fn1 (&i, sizeof i);
+ e = d + k;
+ switch (d)
+ case 0:
+ (
+ {
+ register l asm ("r4");
+ register m asm ("r0");
+ asm (" .err .endif\n\t": "=r" (h), "=r" (j):"r" (m),
+ "r"
+ (l));;
+ });
+ }
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/arm/pr60650.c b/gcc-4.9/gcc/testsuite/gcc.target/arm/pr60650.c
new file mode 100644
index 000000000..17a5ed448
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/arm/pr60650.c
@@ -0,0 +1,41 @@
+/* { dg-do compile } */
+/* { dg-skip-if "do not override -mfloat-abi" { *-*-* } { "-mfloat-abi=*" } {"-mfloat-abi=softfp" } } */
+/* { dg-options "-O2 -fno-omit-frame-pointer -mabi=apcs-gnu -mfloat-abi=softfp" } */
+
+
+struct super_block
+{
+ int s_blocksize_bits;
+};
+struct btrfs_fs_info
+{
+ struct super_block *sb;
+};
+struct btrfs_root
+{
+ struct btrfs_fs_info *fs_info;
+} *b;
+
+
+int a, c, d;
+long long e;
+
+truncate_one_csum (struct btrfs_root *p1, long long p2, long long p3)
+{
+ int f, g, i = p1->fs_info->sb->s_blocksize_bits;
+ g = a;
+ long long h = p2 + p3;
+ f = foo1 (b, 0, c, 0);
+ e = f / g;
+ e <<= p1->fs_info->sb->s_blocksize_bits;
+ if (d < p2)
+ {
+ int j = e - h >> i;
+ foo2 (p1, 0, j);
+ }
+ else
+ {
+ asm ("1\t.long ");
+ __builtin_unreachable ();
+ }
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/arm/pr60657.c b/gcc-4.9/gcc/testsuite/gcc.target/arm/pr60657.c
new file mode 100644
index 000000000..66355c39a
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/arm/pr60657.c
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -march=armv7-a" } */
+
+
+void foo (void);
+
+void
+bar (int x, int y)
+{
+ y = 9999;
+ if (x & (1 << y))
+ foo ();
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/arm/pr60663.c b/gcc-4.9/gcc/testsuite/gcc.target/arm/pr60663.c
new file mode 100644
index 000000000..b79b830e1
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/arm/pr60663.c
@@ -0,0 +1,11 @@
+/* PR rtl-optimization/60663 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -march=armv7-a" } */
+
+int
+foo (void)
+{
+ unsigned i, j;
+ asm ("%0 %1" : "=r" (i), "=r" (j));
+ return i;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/avr/dev-specific-rmw.c b/gcc-4.9/gcc/testsuite/gcc.target/avr/dev-specific-rmw.c
new file mode 100644
index 000000000..0a8393e49
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/avr/dev-specific-rmw.c
@@ -0,0 +1,13 @@
+/* Verify that rmw instructions supported */
+/* { dg-do assemble } */
+
+int main()
+{
+ #ifdef __AVR_ISA_RMW__
+ __asm("xch Z, r12");
+ __asm("las Z, r12");
+ __asm("lac Z, r12");
+ __asm("lat Z, r12");
+ #endif
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/387-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/387-3.c
index 1b8dc8bab..0c51a21b9 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/387-3.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/387-3.c
@@ -1,6 +1,6 @@
/* Verify that 387 mathematical constants are recognized. */
/* { dg-do compile } */
-/* { dg-options "-O2 -mfpmath=387 -mfancy-math-387" } */
+/* { dg-options "-O2 -mfpmath=387 -mfancy-math-387 -mtune=generic" } */
/* { dg-final { scan-assembler "fldpi" } } */
/* { dg-require-effective-target large_long_double } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/387-4.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/387-4.c
index 27c48ed20..10fe93119 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/387-4.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/387-4.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -mfancy-math-387" } */
+/* { dg-options "-O2 -mfancy-math-387 -mtune=generic" } */
/* { dg-final { scan-assembler "fldpi" } } */
/* { dg-require-effective-target large_long_double } */
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 238f02092..ee1f31356 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
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-mavx2 -O2 -ftree-vectorize -save-temps" } */
+/* { dg-options "-mavx2 -mno-prefer-avx128 -O2 -ftree-vectorize -save-temps" } */
/* { dg-require-effective-target avx2 } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddd-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddd-3.c
index c57ef8fea..5c3f22f49 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddd-3.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddd-3.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-mavx2 -O2 -ftree-vectorize -save-temps" } */
+/* { dg-options "-mavx2 -mno-prefer-avx128 -O2 -ftree-vectorize -save-temps" } */
/* { dg-require-effective-target avx2 } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddq-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddq-3.c
index 801bd39d8..41a07d26d 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddq-3.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddq-3.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-mavx2 -O2 -ftree-vectorize -save-temps" } */
+/* { dg-options "-mavx2 -mno-prefer-avx128 -O2 -ftree-vectorize -save-temps" } */
/* { dg-require-effective-target avx2 } */
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 facee9f2d..7e7e018c1 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
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-mavx2 -O2 -ftree-vectorize -save-temps" } */
+/* { dg-options "-mavx2 -mno-prefer-avx128 -O2 -ftree-vectorize -save-temps" } */
/* { dg-require-effective-target avx2 } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpand-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpand-3.c
index 67ca4a7cd..8c08bf5ce 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpand-3.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpand-3.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-mavx2 -O2 -ftree-vectorize -save-temps" } */
+/* { dg-options "-mavx2 -mno-prefer-avx128 -O2 -ftree-vectorize -save-temps" } */
/* { dg-require-effective-target avx2 } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpmulld-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpmulld-3.c
index b2d539ba4..8e33a986f 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpmulld-3.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpmulld-3.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-mavx2 -O2 -ftree-vectorize -save-temps" } */
+/* { dg-options "-mavx2 -mno-prefer-avx128 -O2 -ftree-vectorize -save-temps" } */
/* { dg-require-effective-target avx2 } */
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 46d173fc3..4d61d7a9f 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
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-mavx2 -O2 -ftree-vectorize -save-temps" } */
+/* { dg-options "-mavx2 -mno-prefer-avx128 -O2 -ftree-vectorize -save-temps" } */
/* { dg-require-effective-target avx2 } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsrad-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsrad-3.c
index 97affb4bb..a788681c0 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsrad-3.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsrad-3.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-mavx2 -O2 -ftree-vectorize -save-temps" } */
+/* { dg-options "-mavx2 -mno-prefer-avx128 -O2 -ftree-vectorize -save-temps" } */
/* { dg-require-effective-target avx2 } */
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 e7112565b..70bd5cd6b 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
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-mavx2 -O2 -ftree-vectorize -save-temps" } */
+/* { dg-options "-mavx2 -mno-prefer-avx128 -O2 -ftree-vectorize -save-temps" } */
/* { dg-require-effective-target avx2 } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsrld-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsrld-3.c
index 97affb4bb..a788681c0 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsrld-3.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsrld-3.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-mavx2 -O2 -ftree-vectorize -save-temps" } */
+/* { dg-options "-mavx2 -mno-prefer-avx128 -O2 -ftree-vectorize -save-temps" } */
/* { dg-require-effective-target avx2 } */
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 67f3afc41..691e02f3f 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
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-mavx2 -O2 -ftree-vectorize -save-temps" } */
+/* { dg-options "-mavx2 -mno-prefer-avx128 -O2 -ftree-vectorize -save-temps" } */
/* { dg-require-effective-target avx2 } */
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 843128b4f..45527f524 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
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-mavx2 -O2 -ftree-vectorize -save-temps" } */
+/* { dg-options "-mavx2 -mno-prefer-avx128 -O2 -ftree-vectorize -save-temps" } */
/* { dg-require-effective-target avx2 } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsubd-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsubd-3.c
index f8f399f6b..ae7966fbc 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsubd-3.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsubd-3.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-mavx2 -O2 -ftree-vectorize -save-temps" } */
+/* { dg-options "-mavx2 -mno-prefer-avx128 -O2 -ftree-vectorize -save-temps" } */
/* { dg-require-effective-target avx2 } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsubq-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsubq-3.c
index 0a23a280e..d96fee177 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsubq-3.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsubq-3.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-mavx2 -O2 -ftree-vectorize -save-temps" } */
+/* { dg-options "-mavx2 -mno-prefer-avx128 -O2 -ftree-vectorize -save-temps" } */
/* { dg-require-effective-target avx2 } */
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 1cb90b5a8..404c2eea9 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
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-mavx2 -O2 -ftree-vectorize -save-temps" } */
+/* { dg-options "-mavx2 -mno-prefer-avx128 -O2 -ftree-vectorize -save-temps" } */
/* { dg-require-effective-target avx2 } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c
index 1fe52bbb5..0c476cd78 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-load" } */
+/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-load -mno-prefer-avx128" } */
#define N 1024
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c
index 933f265ee..30b42aa38 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c
@@ -1,5 +1,5 @@
/* { dg-do compile { target { ! ia32 } } } */
-/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-load" } */
+/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-load -mno-prefer-avx128" } */
void
avx_test (char **cp, char **ep)
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c
index 1d35ef57b..dcd630d45 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O3 -dp -mavx -mno-avx256-split-unaligned-load -mno-avx256-split-unaligned-store -fno-common" } */
+/* { dg-options "-O3 -dp -mavx -mno-avx256-split-unaligned-load -mno-avx256-split-unaligned-store -mno-prefer-avx128 -fno-common" } */
#define N 1024
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c
index 77eaa422e..5e8c30d36 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-store -fno-common" } */
+/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-store -mno-prefer-avx128 -fno-common" } */
#define N 1024
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c
index 48e2efa13..eeabfe9f3 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c
@@ -1,5 +1,5 @@
/* { dg-do compile { target { ! ia32 } } } */
-/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-store" } */
+/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-store -mno-prefer-avx128" } */
#define N 1024
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c
index 85682452f..68ff92310 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O3 -dp -mavx -mno-avx256-split-unaligned-load -mno-avx256-split-unaligned-store -fno-common" } */
+/* { dg-options "-O3 -dp -mavx -mno-avx256-split-unaligned-load -mno-avx256-split-unaligned-store -mno-prefer-avx128 -fno-common" } */
#define N 1024
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshuff32x4-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshuff32x4-2.c
index 271c8624b..35eabc2cf 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshuff32x4-2.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshuff32x4-2.c
@@ -43,7 +43,7 @@ TEST (void)
for (i = 0; i < SIZE; i++)
{
s1.a[i] = 1.2 / (i + 0.378);
- s1.a[i] = 91.02 / (i + 4.3578);
+ s2.a[i] = 91.02 / (i + 4.3578);
u1.a[i] = DEFAULT_VALUE;
u2.a[i] = DEFAULT_VALUE;
u3.a[i] = DEFAULT_VALUE;
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshuff64x2-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshuff64x2-2.c
index 4842942ac..9fee4201a 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshuff64x2-2.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshuff64x2-2.c
@@ -43,7 +43,7 @@ TEST (void)
for (i = 0; i < SIZE; i++)
{
s1.a[i] = 1.2 / (i + 0.378);
- s1.a[i] = 91.02 / (i + 4.3578);
+ s2.a[i] = 91.02 / (i + 4.3578);
u1.a[i] = DEFAULT_VALUE;
u2.a[i] = DEFAULT_VALUE;
u3.a[i] = DEFAULT_VALUE;
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshufi32x4-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshufi32x4-2.c
index 105c71568..9b1603c66 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshufi32x4-2.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshufi32x4-2.c
@@ -43,7 +43,7 @@ TEST (void)
for (i = 0; i < SIZE; i++)
{
s1.a[i] = 1.2 / (i + 0.378);
- s1.a[i] = 91.02 / (i + 4.3578);
+ s2.a[i] = 91.02 / (i + 4.3578);
u1.a[i] = DEFAULT_VALUE;
u2.a[i] = DEFAULT_VALUE;
u3.a[i] = DEFAULT_VALUE;
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshufi64x2-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshufi64x2-2.c
index d79d8f6bc..85a591883 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshufi64x2-2.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshufi64x2-2.c
@@ -43,7 +43,7 @@ TEST (void)
for (i = 0; i < SIZE; i++)
{
s1.a[i] = 1.2 / (i + 0.378);
- s1.a[i] = 91.02 / (i + 4.3578);
+ s2.a[i] = 91.02 / (i + 4.3578);
u1.a[i] = DEFAULT_VALUE;
u2.a[i] = DEFAULT_VALUE;
u3.a[i] = DEFAULT_VALUE;
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-1.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-1.c
index a05cb275a..c66a9d83b 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-1.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-1.c
@@ -2,10 +2,10 @@
/* { dg-options "-O2 -mbmi " } */
/* { dg-final { scan-assembler "andn\[^\\n]*eax" } } */
/* { dg-final { scan-assembler-times "bextr\[ \\t]+\[^\\n]*eax" 2 } } */
-/* { dg-final { scan-assembler "blsi\[^\\n]*eax" } } */
-/* { dg-final { scan-assembler "blsmsk\[^\\n]*eax" } } */
-/* { dg-final { scan-assembler "blsr\[^\\n]*eax" } } */
-/* { dg-final { scan-assembler "tzcntl\[^\\n]*eax" } } */
+/* { dg-final { scan-assembler-times "blsi\[^\\n]*eax" 2 } } */
+/* { dg-final { scan-assembler-times "blsmsk\[^\\n]*eax" 2 } } */
+/* { dg-final { scan-assembler-times "blsr\[^\\n]*eax" 2 } } */
+/* { dg-final { scan-assembler-times "tzcntl\[^\\n]*eax" 2 } } */
#include <x86intrin.h>
@@ -36,19 +36,43 @@ func_blsi32 (unsigned int X)
}
unsigned int
+func_blsi32_2 (unsigned int X)
+{
+ return _blsi_u32(X);
+}
+
+unsigned int
func_blsmsk32 (unsigned int X)
{
return __blsmsk_u32(X);
}
unsigned int
+func_blsmsk32_2 (unsigned int X)
+{
+ return _blsmsk_u32(X);
+}
+
+unsigned int
func_blsr32 (unsigned int X)
{
return __blsr_u32(X);
}
unsigned int
+func_blsr32_2 (unsigned int X)
+{
+ return _blsr_u32(X);
+}
+
+unsigned int
func_tzcnt32 (unsigned int X)
{
return __tzcnt_u32(X);
}
+
+unsigned int
+func_tzcnt32_2 (unsigned int X)
+{
+ return _tzcnt_u32(X);
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-2.c
index 68d06a205..6eea66aa0 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-2.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-2.c
@@ -2,10 +2,10 @@
/* { dg-options "-O2 -mbmi " } */
/* { dg-final { scan-assembler "andn\[^\\n]*rax" } } */
/* { dg-final { scan-assembler-times "bextr\[ \\t]+\[^\\n]*rax" 2 } } */
-/* { dg-final { scan-assembler "blsi\[^\\n]*rax" } } */
-/* { dg-final { scan-assembler "blsmsk\[^\\n]*rax" } } */
-/* { dg-final { scan-assembler "blsr\[^\\n]*rax" } } */
-/* { dg-final { scan-assembler "tzcntq\[^\\n]*rax" } } */
+/* { dg-final { scan-assembler-times "blsi\[^\\n]*rax" 2 } } */
+/* { dg-final { scan-assembler-times "blsmsk\[^\\n]*rax" 2 } } */
+/* { dg-final { scan-assembler-times "blsr\[^\\n]*rax" 2 } } */
+/* { dg-final { scan-assembler-times "tzcntq\[^\\n]*rax" 2 } } */
#include <x86intrin.h>
@@ -36,19 +36,43 @@ func_blsi64 (unsigned long long X)
}
unsigned long long
+func_blsi64_2 (unsigned long long X)
+{
+ return _blsi_u64 (X);
+}
+
+unsigned long long
func_blsmsk64 (unsigned long long X)
{
return __blsmsk_u64 (X);
}
unsigned long long
+func_blsmsk64_2 (unsigned long long X)
+{
+ return _blsmsk_u64 (X);
+}
+
+unsigned long long
func_blsr64 (unsigned long long X)
{
return __blsr_u64 (X);
}
unsigned long long
+func_blsr64_2 (unsigned long long X)
+{
+ return _blsr_u64 (X);
+}
+
+unsigned long long
func_tzcnt64 (unsigned long long X)
{
return __tzcnt_u64 (X);
}
+
+unsigned long long
+func_tzcnt64_2 (unsigned long long X)
+{
+ return _tzcnt_u64 (X);
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-builtin.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-builtin.c
index 7135cc933..3e59a7181 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-builtin.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-builtin.c
@@ -2,7 +2,7 @@
and add instructions FMA4 systems. */
/* { dg-do compile { target { ! { ia32 } } } } */
-/* { dg-options "-O2 -mfma4" } */
+/* { dg-options "-O2 -mfma4 -mno-fma" } */
#ifndef __FP_FAST_FMAF
# error "__FP_FAST_FMAF should be defined"
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-fma-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-fma-2.c
index c15be1eda..ae6ca8d6d 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-fma-2.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-fma-2.c
@@ -3,7 +3,7 @@
vfnmsubss on FMA4 systems. */
/* { dg-do compile { target { ! { ia32 } } } } */
-/* { dg-options "-O2 -funsafe-math-optimizations -mfma4" } */
+/* { dg-options "-O2 -funsafe-math-optimizations -mfma4 -mno-fma" } */
extern void exit (int);
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-fma.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-fma.c
index 63b35dc4b..1b8fb849d 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-fma.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-fma.c
@@ -3,7 +3,7 @@
vfnmsubss on FMA4 systems. */
/* { dg-do compile { target { ! { ia32 } } } } */
-/* { dg-options "-O2 -mfma4" } */
+/* { dg-options "-O2 -mfma4 -mno-fma" } */
extern void exit (int);
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-vector-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-vector-2.c
index d8b0d0813..b518aa828 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-vector-2.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-vector-2.c
@@ -1,5 +1,5 @@
/* { dg-do compile { target { ! { ia32 } } } } */
-/* { dg-options "-O2 -mfma4 -ftree-vectorize -mtune=generic" } */
+/* { dg-options "-O2 -mfma4 -ftree-vectorize -mtune=generic -mno-fma" } */
float r[256], s[256];
float x[256];
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-vector.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-vector.c
index db5ffdd33..cd5506344 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-vector.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-vector.c
@@ -2,7 +2,7 @@
instructions vector into vfmaddps on FMA4 systems. */
/* { dg-do compile { target { ! { ia32 } } } } */
-/* { dg-options "-O2 -mfma4 -ftree-vectorize -mtune=generic" } */
+/* { dg-options "-O2 -mfma4 -ftree-vectorize -mtune=generic -mno-fma" } */
extern void exit (int);
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/funcspec-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/funcspec-2.c
index 88c14b29b..e535586f9 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/funcspec-2.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/funcspec-2.c
@@ -1,5 +1,6 @@
/* Test whether using target specific options, we can generate FMA4 code. */
/* { dg-do compile { target { ! { ia32 } } } } */
+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=k8" } } */
/* { dg-options "-O2 -march=k8" } */
extern void exit (int);
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/funcspec-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/funcspec-3.c
index f3f4db76a..bac79865d 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/funcspec-3.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/funcspec-3.c
@@ -2,6 +2,7 @@
setting the architecture. */
/* { dg-do compile } */
/* { dg-require-effective-target lp64 } */
+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=k8" } } */
/* { dg-options "-O2 -march=k8 -mno-sse3" } */
extern void exit (int);
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/funcspec-9.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/funcspec-9.c
index 78714e124..14b7abd26 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/funcspec-9.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/funcspec-9.c
@@ -1,5 +1,6 @@
/* Test whether using target specific options, we can generate FMA4 code. */
/* { dg-do compile } */
+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=k8" } } */
/* { dg-options "-O2 -march=k8 -mfpmath=sse -msse2" } */
extern void exit (int);
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/isa-1.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/isa-1.c
index d98c14ffb..3a4406fc0 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/isa-1.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/isa-1.c
@@ -1,4 +1,5 @@
/* { dg-do run } */
+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=x86-64" } } */
/* { dg-options "-march=x86-64 -msse4" } */
extern void abort (void);
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_1.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_1.c
index 1d99b4caa..94e512b96 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_1.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */
+/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */
/* Test that the compiler properly optimizes floating point multiply
and add instructions into FMA3 instructions. */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_2.c
index e10110006..ffceab48f 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_2.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_2.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */
+/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */
/* Test that the compiler properly optimizes floating point multiply
and add instructions into FMA3 instructions. */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_3.c
index f099e25f8..cdb4d33be 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_3.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_3.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */
+/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */
/* Test that the compiler properly optimizes floating point multiply
and add instructions into FMA3 instructions. */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_4.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_4.c
index 969f31c7f..dda487e98 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_4.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_4.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */
+/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */
/* Test that the compiler properly optimizes floating point multiply
and add instructions into FMA3 instructions. */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_5.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_5.c
index 85ccdd0da..98909aeeb 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_5.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_5.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */
+/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */
/* Test that the compiler properly optimizes floating point multiply
and add instructions into FMA3 instructions. */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_6.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_6.c
index 019ed9ad0..538065a31 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_6.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_6.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */
+/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */
/* Test that the compiler properly optimizes floating point multiply
and add instructions into FMA3 instructions. */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_1.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_1.c
index d1913d768..ff109817d 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_1.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */
+/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */
/* Test that the compiler properly optimizes floating point multiply
and add instructions into FMA3 instructions. */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_2.c
index 5e0142545..38c6b5283 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_2.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_2.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */
+/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */
/* Test that the compiler properly optimizes floating point multiply
and add instructions into FMA3 instructions. */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_3.c
index 7b9e3f545..177ba3522 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_3.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_3.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */
+/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */
/* Test that the compiler properly optimizes floating point multiply
and add instructions into FMA3 instructions. */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_4.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_4.c
index cc675c14a..8ee68d1af 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_4.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_4.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */
+/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */
/* Test that the compiler properly optimizes floating point multiply
and add instructions into FMA3 instructions. */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_5.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_5.c
index ac0b36147..23288d0da 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_5.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_5.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */
+/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */
/* Test that the compiler properly optimizes floating point multiply
and add instructions into FMA3 instructions. */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_6.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_6.c
index c84ac1196..07a5fbae3 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_6.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_6.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */
+/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */
/* Test that the compiler properly optimizes floating point multiply
and add instructions into FMA3 instructions. */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-strategy-1.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-strategy-1.c
index a2b66d966..3117771d4 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-strategy-1.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-strategy-1.c
@@ -1,4 +1,5 @@
/* { dg-do compile } */
+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=atom" } } */
/* { dg-options "-O2 -march=atom -mmemcpy-strategy=vector_loop:-1:align" } */
/* { dg-final { scan-assembler-times "movdqa" 8 { target { ! { ia32 } } } } } */
/* { dg-final { scan-assembler-times "movdqa" 4 { target { ia32 } } } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-strategy-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-strategy-2.c
index c2f49f0cc..303edca95 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-strategy-2.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-strategy-2.c
@@ -1,4 +1,5 @@
/* { dg-do compile } */
+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=atom" } } */
/* { dg-options "-O2 -march=atom -mmemcpy-strategy=vector_loop:3000:align,libcall:-1:align" } */
/* { dg-final { scan-assembler-times "movdqa" 8 { target { ! { ia32 } } } } } */
/* { dg-final { scan-assembler-times "movdqa" 4 { target { ia32 } } } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-vector_loop-1.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-vector_loop-1.c
index c61c06795..1ea682a10 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-vector_loop-1.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-vector_loop-1.c
@@ -1,4 +1,5 @@
/* { dg-do compile } */
+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=atom" } } */
/* { dg-options "-O2 -march=atom -minline-all-stringops -mstringop-strategy=vector_loop" } */
/* { dg-final { scan-assembler-times "movdqa" 8 { target { ! { ia32 } } } } } */
/* { dg-final { scan-assembler-times "movdqa" 4 { target { ia32 } } } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-vector_loop-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-vector_loop-2.c
index 8a646d509..3befef95d 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-vector_loop-2.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-vector_loop-2.c
@@ -1,4 +1,5 @@
/* { dg-do compile } */
+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=atom" } } */
/* { dg-options "-O2 -march=atom -minline-all-stringops -mstringop-strategy=vector_loop" } */
/* { dg-final { scan-assembler-times "movdqa" 4} } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/memset-vector_loop-1.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/memset-vector_loop-1.c
index ad0d13037..f7e45165c 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/memset-vector_loop-1.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/memset-vector_loop-1.c
@@ -1,4 +1,5 @@
/* { dg-do compile } */
+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=atom" } } */
/* { dg-options "-O2 -march=atom -minline-all-stringops -mstringop-strategy=vector_loop" } */
/* { dg-final { scan-assembler-times "movdqa" 4 } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/memset-vector_loop-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/memset-vector_loop-2.c
index f2ceb442c..92e610004 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/memset-vector_loop-2.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/memset-vector_loop-2.c
@@ -1,4 +1,5 @@
/* { dg-do compile } */
+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=atom" } } */
/* { dg-options "-O2 -march=atom -minline-all-stringops -mstringop-strategy=vector_loop" } */
/* { dg-final { scan-assembler-times "movdqa" 4} } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr27971.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr27971.c
index 27888de6d..149bf2b8e 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr27971.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr27971.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2" } */
+/* { dg-options "-O2 -mno-tbm" } */
unsigned array[4];
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr30970.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr30970.c
index 96d64e5a9..b1fc2d3ec 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr30970.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr30970.c
@@ -1,5 +1,5 @@
/* { dg-do compile }
-/* { dg-options "-msse2 -O2 -ftree-vectorize" } */
+/* { dg-options "-msse2 -O2 -ftree-vectorize -mtune=generic" } */
#define N 256
int b[N];
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr42542-4a.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr42542-4a.c
index bea6c1f50..19e872a7e 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr42542-4a.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr42542-4a.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O1 -msse4.2 -ftree-vectorize" } */
+/* { dg-options "-O1 -msse4.2 -ftree-vectorize -mno-avx" } */
#include "pr42542-4.c"
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr59390.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr59390.c
index 7dc925ae9..749c61a58 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr59390.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr59390.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-std=c99 -O3" } */
+/* { dg-options "-std=c99 -O3 -mno-fma -mno-fma4" } */
extern double fma (double, double, double);
void fun() __attribute__((target("fma")));
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr60693.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr60693.c
new file mode 100644
index 000000000..e6033a783
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr60693.c
@@ -0,0 +1,13 @@
+/* PR target/60693 */
+/* { dg-do compile } */
+/* { dg-options "-O0" } */
+
+void bar (char *);
+
+void
+foo (void)
+{
+ char buf[4096];
+ __builtin_memcpy (buf, (void *) 0x8000, 4096);
+ bar (buf);
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr60700.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr60700.c
new file mode 100644
index 000000000..5428f3616
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr60700.c
@@ -0,0 +1,59 @@
+/* PR rtl-optimization/60700 */
+/* { dg-do run { target ia32 } } */
+/* { dg-options "-O3 -march=i686" } */
+
+int
+__attribute__((noinline))
+foo (void)
+{
+ return 0;
+}
+
+void *g = (void *)1;
+
+struct st {
+ char data[36]; /* must be greater than 32. */
+};
+
+int
+__attribute__((noinline))
+repro(struct st **out)
+{
+ int status = 0;
+
+ *out = 0;
+
+ status = foo();
+ if (status != 0) {
+ return status;
+ }
+
+ if (0 == g) {
+ status = 999;
+ return status;
+ }
+
+ *out = (struct st *)__builtin_malloc(sizeof(struct st));
+ if (0 == *out) {
+ status = 42;
+ return status;
+ }
+
+ __builtin_memset(*out, 0, sizeof(struct st));
+
+ return status;
+}
+
+int
+main ()
+{
+ struct st *p;
+ int ret = repro (&p);
+ unsigned int i;
+
+ for (i = 0; i < sizeof (p->data)/sizeof (p->data[0]); i++)
+ if (p->data[i] != 0)
+ __builtin_abort ();
+
+ return ret;
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/sse2-init-v2di-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/sse2-init-v2di-2.c
index a2313a4b1..6a50573a5 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/sse2-init-v2di-2.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/sse2-init-v2di-2.c
@@ -1,4 +1,5 @@
/* { dg-do compile { target { ! { ia32 } } } } */
+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=core2" } } */
/* { dg-options "-O2 -msse4 -march=core2 -dp" } */
#include <emmintrin.h>
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/ssetype-1.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/ssetype-1.c
index ef89059b8..a82522955 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/ssetype-1.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/ssetype-1.c
@@ -1,6 +1,7 @@
/* { dg-do compile } */
/* This test checks for absolute memory operands. */
/* { dg-require-effective-target nonpic } */
+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=k8" } } */
/* { dg-options "-O2 -msse2 -march=k8" } */
/* { dg-final { scan-assembler "andpd\[^\\n\]*magic" } } */
/* { dg-final { scan-assembler "andnpd\[^\\n\]*magic" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/ssetype-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/ssetype-2.c
index b68a63923..37953ca64 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/ssetype-2.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/ssetype-2.c
@@ -1,4 +1,5 @@
/* { dg-do compile } */
+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=k8" } } */
/* { dg-options "-O2 -msse2 -march=k8" } */
/* { dg-final { scan-assembler "andpd" } } */
/* { dg-final { scan-assembler "andnpd" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/ssetype-5.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/ssetype-5.c
index 75133e9fa..4e22e59e5 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/i386/ssetype-5.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/ssetype-5.c
@@ -1,6 +1,7 @@
/* { dg-do compile } */
/* This test checks for absolute memory operands. */
/* { dg-require-effective-target nonpic } */
+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=k8" } } */
/* { dg-options "-O2 -msse2 -march=k8" } */
/* { dg-final { scan-assembler "pand\[^\\n\]*magic" } } */
/* { dg-final { scan-assembler "pandn\[^\\n\]*magic" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/atomic_load_store-p8.c b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/atomic_load_store-p8.c
new file mode 100644
index 000000000..8a5cbfaa3
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/atomic_load_store-p8.c
@@ -0,0 +1,22 @@
+/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_p8vector_ok } */
+/* { dg-options "-mcpu=power8 -O2" } */
+/* { dg-final { scan-assembler-times "lq" 1 } } */
+/* { dg-final { scan-assembler-times "stq" 1 } } */
+/* { dg-final { scan-assembler-not "bl __atomic" } } */
+/* { dg-final { scan-assembler-not "lqarx" } } */
+/* { dg-final { scan-assembler-not "stqcx" } } */
+
+__int128
+atomic_load_128_relaxed (__int128 *ptr)
+{
+ return __atomic_load_n (ptr, __ATOMIC_RELAXED);
+}
+
+void
+atomic_store_128_relaxed (__int128 *ptr, __int128 val)
+{
+ __atomic_store_n (ptr, val, __ATOMIC_RELAXED);
+}
+
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/p8vector-vbpermq.c b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/p8vector-vbpermq.c
new file mode 100644
index 000000000..d1664985a
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/p8vector-vbpermq.c
@@ -0,0 +1,27 @@
+/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_p8vector_ok } */
+/* { dg-options "-O3 -mcpu=power8" } */
+/* { dg-final { scan-assembler "vbpermq" } } */
+/* { dg-final { scan-assembler "mfvsrd" } } */
+/* { dg-final { scan-assembler-not "stfd" } } */
+/* { dg-final { scan-assembler-not "stxvd2x" } } */
+
+#include <altivec.h>
+
+#if __LITTLE_ENDIAN__
+#define OFFSET 1
+#else
+#define OFFSET 0
+#endif
+
+long foos (vector signed char a, vector signed char b)
+{
+ return vec_extract (vec_vbpermq (a, b), OFFSET);
+}
+
+long foou (vector unsigned char a, vector unsigned char b)
+{
+ return vec_extract (vec_vbpermq (a, b), OFFSET);
+}
+
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/pr60676.c b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/pr60676.c
new file mode 100644
index 000000000..86fd8c6d2
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/pr60676.c
@@ -0,0 +1,128 @@
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_vsx_ok } */
+/* { dg-options "-O3 -mcpu=power7" } */
+/* { dg-final { scan-assembler "xxsldwi" } } */
+/* { dg-final { scan-assembler "xxpermdi" } } */
+
+#include <altivec.h>
+
+vector double
+v2df_shift (vector double a, vector double b)
+{
+ return vec_xxsldwi (a, b, 1);
+}
+
+vector float
+v4sf_shift (vector float a, vector float b)
+{
+ return vec_xxsldwi (a, b, 1);
+}
+
+vector long long
+v2di_shift (vector long long a, vector long long b)
+{
+ return vec_xxsldwi (a, b, 1);
+}
+
+vector unsigned long long
+v2diu_shift (vector unsigned long long a, vector unsigned long long b)
+{
+ return vec_xxsldwi (a, b, 1);
+}
+
+vector int
+v4si_shift (vector int a, vector int b)
+{
+ return vec_xxsldwi (a, b, 1);
+}
+
+vector unsigned int
+v4siu_shift (vector unsigned int a, vector unsigned int b)
+{
+ return vec_xxsldwi (a, b, 1);
+}
+
+vector short
+v8hi_shift (vector short a, vector short b)
+{
+ return vec_xxsldwi (a, b, 1);
+}
+
+vector unsigned short
+v8hiu_shift (vector unsigned short a, vector unsigned short b)
+{
+ return vec_xxsldwi (a, b, 1);
+}
+
+vector signed char
+v16qi_shift (vector signed char a, vector signed char b)
+{
+ return vec_xxsldwi (a, b, 1);
+}
+
+vector unsigned char
+v16qiu_shift (vector unsigned char a, vector unsigned char b)
+{
+ return vec_xxsldwi (a, b, 1);
+}
+
+vector double
+v2df_permute (vector double a, vector double b)
+{
+ return vec_xxpermdi (a, b, 1);
+}
+
+vector float
+v4sf_permute (vector float a, vector float b)
+{
+ return vec_xxpermdi (a, b, 1);
+}
+
+vector long long
+v2di_permute (vector long long a, vector long long b)
+{
+ return vec_xxpermdi (a, b, 1);
+}
+
+vector unsigned long long
+v2diu_permute (vector unsigned long long a, vector unsigned long long b)
+{
+ return vec_xxpermdi (a, b, 1);
+}
+
+vector int
+v4si_permute (vector int a, vector int b)
+{
+ return vec_xxpermdi (a, b, 1);
+}
+
+vector unsigned int
+v4siu_permute (vector unsigned int a, vector unsigned int b)
+{
+ return vec_xxpermdi (a, b, 1);
+}
+
+vector short
+v8hi_permute (vector short a, vector short b)
+{
+ return vec_xxpermdi (a, b, 1);
+}
+
+vector unsigned short
+v8hiu_permute (vector unsigned short a, vector unsigned short b)
+{
+ return vec_xxpermdi (a, b, 1);
+}
+
+vector signed char
+v16qi_permute (vector signed char a, vector signed char b)
+{
+ return vec_xxpermdi (a, b, 1);
+}
+
+vector unsigned char
+v16qiu_permute (vector unsigned char a, vector unsigned char b)
+{
+ return vec_xxpermdi (a, b, 1);
+}
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/vsx-extract-1.c b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/vsx-extract-1.c
new file mode 100644
index 000000000..e1f0ca8e8
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/vsx-extract-1.c
@@ -0,0 +1,16 @@
+/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_vsx_ok } */
+/* { dg-options "-O3 -mcpu=power7" } */
+/* { dg-final { scan-assembler "lfd" } } */
+/* { dg-final { scan-assembler-not "lxvd2x" } } */
+
+#include <altivec.h>
+
+#if __LITTLE_ENDIAN__
+#define OFFSET 1
+#else
+#define OFFSET 0
+#endif
+
+double get_value (vector double *p) { return vec_extract (*p, OFFSET); }
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/vsx-extract-2.c b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/vsx-extract-2.c
new file mode 100644
index 000000000..be29af861
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/vsx-extract-2.c
@@ -0,0 +1,17 @@
+/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_vsx_ok } */
+/* { dg-options "-O3 -mcpu=power7" } */
+/* { dg-final { scan-assembler "xxlor" } } */
+/* { dg-final { scan-assembler-not "lfd" } } */
+/* { dg-final { scan-assembler-not "lxvd2x" } } */
+
+#include <altivec.h>
+
+#if __LITTLE_ENDIAN__
+#define OFFSET 1
+#else
+#define OFFSET 0
+#endif
+
+double get_value (vector double v) { return vec_extract (v, OFFSET); }
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/vsx-extract-3.c b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/vsx-extract-3.c
new file mode 100644
index 000000000..ea421265e
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/vsx-extract-3.c
@@ -0,0 +1,17 @@
+/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_p8vector_ok } */
+/* { dg-options "-O3 -mcpu=power8" } */
+/* { dg-final { scan-assembler "mfvsrd" } } */
+/* { dg-final { scan-assembler-not "stfd" } } */
+/* { dg-final { scan-assembler-not "stxvd2x" } } */
+
+#include <altivec.h>
+
+#if __LITTLE_ENDIAN__
+#define OFFSET 1
+#else
+#define OFFSET 0
+#endif
+
+long get_value (vector long v) { return vec_extract (v, OFFSET); }
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/s390/20140327-1.c b/gcc-4.9/gcc/testsuite/gcc.target/s390/20140327-1.c
new file mode 100644
index 000000000..f71c38f09
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/s390/20140327-1.c
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-O3 -m31 -mzarch" } */
+
+void
+foo ()
+{
+ asm ("" ::: "%f4");
+}
+
+/* { dg-final { scan-assembler "ld" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/s390/htm-builtins-compile-1.c b/gcc-4.9/gcc/testsuite/gcc.target/s390/htm-builtins-compile-1.c
index c1b98e2bb..982a7483d 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/s390/htm-builtins-compile-1.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/s390/htm-builtins-compile-1.c
@@ -27,8 +27,8 @@ foo (struct __htm_tdb* tdb, int reg, int *mem, uint64_t *mem64)
cc = __builtin_tbegin ((void *)0x12345678);
cc = __builtin_tbegin (tdb);
cc = __builtin_tbegin (&global_tdb);
- cc = __builtin_tbegin ((void *)(long long)(reg + 0x12345678));
- cc = __builtin_tbegin ((void *)(long long)(reg));
+ cc = __builtin_tbegin ((void *)(long)(reg + 0x12345678));
+ cc = __builtin_tbegin ((void *)(long)(reg));
__builtin_tbegin_nofloat ((void *)0);
__builtin_tbegin_nofloat ((void *)-99999);
@@ -36,8 +36,8 @@ foo (struct __htm_tdb* tdb, int reg, int *mem, uint64_t *mem64)
cc = __builtin_tbegin_nofloat ((void *)0x12345678);
cc = __builtin_tbegin_nofloat (tdb);
cc = __builtin_tbegin_nofloat (&global_tdb);
- cc = __builtin_tbegin_nofloat ((void *)(long long)(reg + 0x12345678));
- cc = __builtin_tbegin_nofloat ((void *)(long long)(reg));
+ cc = __builtin_tbegin_nofloat ((void *)(long)(reg + 0x12345678));
+ cc = __builtin_tbegin_nofloat ((void *)(long)(reg));
__builtin_tbegin_retry ((void *)0, 0);
cc = __builtin_tbegin_retry ((void *)0, 1);
@@ -50,9 +50,9 @@ foo (struct __htm_tdb* tdb, int reg, int *mem, uint64_t *mem64)
cc = __builtin_tbegin_retry (&global_tdb, 42);
cc = __builtin_tbegin_retry ((void *)0x12345678, global);
cc = __builtin_tbegin_retry (
- (void *)(long long) (reg + 0x12345678), global + 1);
+ (void *)(long) (reg + 0x12345678), global + 1);
cc = __builtin_tbegin_retry (
- (void *)(long long)(reg), global - 1);
+ (void *)(long)(reg), global - 1);
__builtin_tbegin_retry_nofloat ((void *)0, 0);
cc = __builtin_tbegin_retry_nofloat ((void *)0, 1);
@@ -65,9 +65,9 @@ foo (struct __htm_tdb* tdb, int reg, int *mem, uint64_t *mem64)
cc = __builtin_tbegin_retry_nofloat (&global_tdb, 42);
cc = __builtin_tbegin_retry_nofloat ((void *)0x12345678, global);
cc = __builtin_tbegin_retry_nofloat (
- (void *)(long long) (reg + 0x12345678), global + 1);
+ (void *)(long) (reg + 0x12345678), global + 1);
cc = __builtin_tbegin_retry_nofloat (
- (void *)(long long)(reg), global - 1);
+ (void *)(long)(reg), global - 1);
__builtin_tbeginc ();
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/s390/htm-nofloat-1.c b/gcc-4.9/gcc/testsuite/gcc.target/s390/htm-nofloat-1.c
index df7e2bac8..6022efb97 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/s390/htm-nofloat-1.c
+++ b/gcc-4.9/gcc/testsuite/gcc.target/s390/htm-nofloat-1.c
@@ -1,12 +1,50 @@
-/* { dg-do compile } */
-/* { dg-options "-O3 -march=zEC12 -mzarch" } */
+/* { dg-do run } */
+/* { dg-require-effective-target htm } */
+/* { dg-options "-O3 -march=zEC12 -mzarch --save-temps" } */
-int
-foo ()
+/* __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.
+ However, since the frame layout has been fixed before, the prologue
+ still generated the stack pointer decrement making foo return with
+ a modified stack pointer. */
+
+void abort(void);
+
+void __attribute__((noinline))
+foo (int a)
+{
+ if (__builtin_tbegin (0) == 0)
+ __builtin_tend ();
+}
+
+#ifdef __s390x__
+#define GET_STACK_POINTER(SP) \
+ asm volatile ("stg %%r15, %0" : "=QRST" (SP));
+#else
+#define GET_STACK_POINTER(SP) \
+ asm volatile ("st %%r15, %0" : "=QR" (SP));
+#endif
+
+int main(void)
{
- __builtin_tbegin_nofloat (0);
- __builtin_tbegin_retry_nofloat (0, 42);
+ unsigned long new_sp, old_sp;
+
+ GET_STACK_POINTER (old_sp);
+ foo(42);
+ GET_STACK_POINTER (new_sp);
+
+ if (old_sp != new_sp)
+ abort ();
+
+ return 0;
}
+
/* Make sure no FPR saves/restores are emitted. */
-/* { dg-final { scan-assembler-not "std" } } */
-/* { dg-final { scan-assembler-not "ld" } } */
+/* { dg-final { scan-assembler-not "\tstd\t" } } */
+/* { dg-final { scan-assembler-not "\tld\t" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/s390/htm-nofloat-compile-1.c b/gcc-4.9/gcc/testsuite/gcc.target/s390/htm-nofloat-compile-1.c
new file mode 100644
index 000000000..df7e2bac8
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/s390/htm-nofloat-compile-1.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-options "-O3 -march=zEC12 -mzarch" } */
+
+int
+foo ()
+{
+ __builtin_tbegin_nofloat (0);
+ __builtin_tbegin_retry_nofloat (0, 42);
+}
+/* Make sure no FPR saves/restores are emitted. */
+/* { dg-final { scan-assembler-not "std" } } */
+/* { dg-final { scan-assembler-not "ld" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/s390/s390.exp b/gcc-4.9/gcc/testsuite/gcc.target/s390/s390.exp
index 1b6d94a23..f2ba92986 100644
--- a/gcc-4.9/gcc/testsuite/gcc.target/s390/s390.exp
+++ b/gcc-4.9/gcc/testsuite/gcc.target/s390/s390.exp
@@ -24,17 +24,17 @@ if ![istarget s390*-*-*] then {
# Load support procs.
load_lib gcc-dg.exp
-# Return 1 if htm (etnd - extract nesting depth) instructions can be
-# compiled.
+# Return 1 if htm (etnd - extract nesting depth) instructions are
+# understood by the assembler and can be executed.
proc check_effective_target_htm { } {
if { ![check_runtime s390_check_htm [subst {
int main (void)
{
- unsigned int nd = 77;
- asm (".insn rre,0xb2ec0000,%0,0" : "=d" (nd));
+ unsigned int nd;
+ asm ("etnd %0" : "=d" (nd));
return nd;
}
- }]] } { return 0 } else { return 1 }
+ }] "-march=zEC12 -mzarch" ] } { return 0 } else { return 1 }
}
# If a testcase doesn't have special options, use these.
diff --git a/gcc-4.9/gcc/testsuite/gfortran.dg/arrayio_13.f90 b/gcc-4.9/gcc/testsuite/gfortran.dg/arrayio_13.f90
new file mode 100644
index 000000000..92a856bc8
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gfortran.dg/arrayio_13.f90
@@ -0,0 +1,14 @@
+! { dg-do run }
+! PR60810 Bogus end-of-file
+program readstrlist
+ character(len=80), dimension(2) :: ver
+ integer :: a, b, c
+ a = 1
+ b = 2
+ c = 3
+ ver(1) = '285 383'
+ ver(2) = '985'
+ read( ver, *) a, b, c
+ if (a /= 285 .or. b /= 383 .or. c /= 985) call abort
+ !write ( *, *) a, b, c
+end
diff --git a/gcc-4.9/gcc/testsuite/gfortran.dg/associate_15.f90 b/gcc-4.9/gcc/testsuite/gfortran.dg/associate_15.f90
new file mode 100644
index 000000000..7e34eb518
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gfortran.dg/associate_15.f90
@@ -0,0 +1,40 @@
+! { dg-do run }
+! Test the fix for PR58085, where the offset for 'x' was set to zero,
+! rather than -1.
+!
+! Contributed by Vladimir Fuka <vladimir.fuka@gmail.com>
+!
+module foo
+contains
+ function bar (arg) result (res)
+ integer arg, res(3)
+ res = [arg, arg+1, arg +2]
+ end function
+end module
+ use foo
+ real d(3,3)
+ integer a,b,c
+ character(48) line1, line2
+ associate (x=>shape(d))
+ a = x(1)
+ b = x(2)
+ write (line1, *) a, b
+ write (line2, *) x
+ if (trim (line1) .ne. trim (line2)) call abort
+ end associate
+ associate (x=>[1,2])
+ a = x(1)
+ b = x(2)
+ write (line1, *) a, b
+ write (line2, *) x
+ if (trim (line1) .ne. trim (line2)) call abort
+ end associate
+ associate (x=>bar(5)) ! make sure that we haven't broken function association
+ a = x(1)
+ b = x(2)
+ c = x(3)
+ write (line1, *) a, b, c
+ write (line2, *) x
+ if (trim (line1) .ne. trim (line2)) call abort
+ end associate
+end
diff --git a/gcc-4.9/gcc/testsuite/gfortran.dg/class_nameclash.f90 b/gcc-4.9/gcc/testsuite/gfortran.dg/class_nameclash.f90
new file mode 100644
index 000000000..227d86596
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gfortran.dg/class_nameclash.f90
@@ -0,0 +1,39 @@
+! { dg-do run }
+!
+! try to provoke class name clashes in gfc_build_class_symbol
+!
+module test_module
+
+ implicit none
+
+ type, public :: test_p
+ private
+ class (test_p), pointer :: next => null()
+ end type test_p
+
+ type, public :: test
+! Error in "call do_it (x)" below:
+! Type mismatch in argument 'x' at (1); passed CLASS(test_p) to CLASS(test)
+ class (test), pointer :: next => null()
+ end type test
+
+contains
+
+ subroutine do_it (x)
+ class (test_p), target :: x
+
+ x%next => x
+ return
+ end subroutine do_it
+
+end module test_module
+
+use test_module
+
+ implicit none
+ class (test_p), pointer :: x
+
+ allocate (x)
+ call do_it (x)
+ deallocate (x)
+end
diff --git a/gcc-4.9/gcc/testsuite/gfortran.dg/finalize_24.f90 b/gcc-4.9/gcc/testsuite/gfortran.dg/finalize_24.f90
new file mode 100644
index 000000000..2a218584a
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gfortran.dg/finalize_24.f90
@@ -0,0 +1,28 @@
+! { dg-do compile }
+!
+! PR fortran/58880
+!
+! Contributed by Andrew Benson
+!
+
+module gn
+ type sl
+ integer, allocatable, dimension(:) :: lv
+ contains
+ final :: sld
+ end type sl
+ type :: nde
+ type(sl) :: r
+ end type nde
+contains
+ subroutine ndm(s)
+ type(nde), intent(inout) :: s
+ type(nde) :: i
+ i=s
+ end subroutine ndm
+ subroutine sld(s)
+ implicit none
+ type(sl), intent(inout) :: s
+ return
+ end subroutine sld
+end module gn
diff --git a/gcc-4.9/gcc/testsuite/gfortran.dg/fmt_en.f90 b/gcc-4.9/gcc/testsuite/gfortran.dg/fmt_en.f90
index 7d9c8aa61..4c5b72123 100644
--- a/gcc-4.9/gcc/testsuite/gfortran.dg/fmt_en.f90
+++ b/gcc-4.9/gcc/testsuite/gfortran.dg/fmt_en.f90
@@ -7,8 +7,8 @@ use ISO_FORTRAN_ENV
integer, parameter :: j(size(real_kinds)+4)=[REAL_KINDS, [4, 4, 4, 4]]
logical :: l_skip(4) = .false.
integer :: i
- integer :: n_tst = 0, n_cnt = 0
- character(len=20) :: s
+ integer :: n_tst = 0, n_cnt = 0, n_skip = 0
+ character(len=20) :: s, s1
open (unit = 10, file = 'fmt_en.res')
! Check that the default rounding mode is to nearest and to even on tie.
@@ -17,22 +17,30 @@ use ISO_FORTRAN_ENV
write(s, '(2F4.1,2F4.0)') real(-9.49999905,kind=j(1)), &
real(9.49999905,kind=j(1)), &
real(9.5,kind=j(1)), real(8.5,kind=j(1))
+ write(s1, '(3PE10.3,2PE10.3)') real(987350.,kind=j(1)), &
+ real(98765.0,kind=j(1))
else if (i == 2) then
write(s, '(2F4.1,2F4.0)') real(-9.49999905,kind=j(2)), &
real(9.49999905,kind=j(2)), &
real(9.5,kind=j(2)), real(8.5,kind=j(2))
+ write(s1, '(3PE10.3,2PE10.3)') real(987350.,kind=j(2)), &
+ real(98765.0,kind=j(2))
else if (i == 3) then
write(s, '(2F4.1,2F4.0)') real(-9.49999905,kind=j(3)), &
real(9.49999905,kind=j(3)), &
real(9.5,kind=j(3)), real(8.5,kind=j(3))
+ write(s1, '(3PE10.3,2PE10.3)') real(987350.,kind=j(3)), &
+ real(98765.0,kind=j(3))
else if (i == 4) then
write(s, '(2F4.1,2F4.0)') real(-9.49999905,kind=j(4)), &
real(9.49999905,kind=j(4)), &
real(9.5,kind=j(4)), real(8.5,kind=j(4))
+ write(s1, '(3PE10.3,2PE10.3)') real(987350.,kind=j(4)), &
+ real(98765.0,kind=j(4))
end if
- if (s /= '-9.5 9.5 10. 8.') then
+ if (s /= '-9.5 9.5 10. 8.' .or. s1 /= ' 987.4E+03 98.76E+03') then
l_skip(i) = .true.
- print "('Unsupported rounding for real(',i0,')')", j(i)
+! print "('Unsupported rounding for real(',i0,')')", j(i)
end if
end do
@@ -139,7 +147,7 @@ use ISO_FORTRAN_ENV
call checkfmt("(en15.3)", -9.765625E-04," -976.562E-06")
call checkfmt("(en15.6)", -2.9296875E-03," -2.929688E-03")
- !print *, n_tst, n_cnt
+ ! print *, n_tst, n_cnt, n_skip
if (n_cnt /= 0) call abort
if (all(.not. l_skip)) write (10, *) "All kinds rounded to nearest"
close (10)
@@ -152,7 +160,6 @@ contains
real, intent(in) :: x
character(len=*), intent(in) :: cmp
do i=1,size(real_kinds)
- if (l_skip(i)) cycle
if (i == 1) then
write(s, fmt) real(x,kind=j(1))
else if (i == 2) then
@@ -164,12 +171,16 @@ contains
end if
n_tst = n_tst + 1
if (s /= cmp) then
- print "(a,1x,a,' expected: ',1x,a)", fmt, s, cmp
- n_cnt = n_cnt + 1
- end if
+ if (l_skip(i)) then
+ n_skip = n_skip + 1
+ else
+ print "(a,1x,a,' expected: ',1x,a)", fmt, s, cmp
+ n_cnt = n_cnt + 1
+ end if
+ end if
end do
end subroutine
end program
-! { dg-final { scan-file fmt_en.res "All kinds rounded to nearest" { xfail i?86-*-solaris2.9* } } }
+! { dg-final { scan-file fmt_en.res "All kinds rounded to nearest" { xfail { i?86-*-solaris2.9* hppa*-*-hpux* } } } }
! { dg-final { cleanup-saved-temps } }
diff --git a/gcc-4.9/gcc/testsuite/gfortran.dg/lto/pr60635_0.f90 b/gcc-4.9/gcc/testsuite/gfortran.dg/lto/pr60635_0.f90
new file mode 100644
index 000000000..e12187985
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gfortran.dg/lto/pr60635_0.f90
@@ -0,0 +1,16 @@
+! { dg-lto-do link }
+program test
+ use iso_fortran_env
+
+ interface
+ integer(int16) function bigendc16(x) bind(C)
+ import
+ integer(int16), intent(in) :: x
+ end function
+ end interface
+
+ integer(int16) :: x16 = 12345
+ x16 = bigendc16(x16)
+ print *,x16
+end program
+
diff --git a/gcc-4.9/gcc/testsuite/gfortran.dg/lto/pr60635_1.c b/gcc-4.9/gcc/testsuite/gfortran.dg/lto/pr60635_1.c
new file mode 100644
index 000000000..eddc569e6
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gfortran.dg/lto/pr60635_1.c
@@ -0,0 +1,14 @@
+#include <stdint.h>
+#include <stdbool.h>
+
+static bool littleendian=true;
+
+uint16_t bigendc16(union{uint16_t * n;uint8_t* b;}x){
+
+ if (!littleendian) return *x.n;
+
+ uint16_t res = ((uint16_t)(x.b[1])<<0) |
+ ((uint16_t)(x.b[0])<<8);
+ return res;
+}
+
diff --git a/gcc-4.9/gcc/testsuite/gfortran.dg/unlimited_polymorphic_17.f90 b/gcc-4.9/gcc/testsuite/gfortran.dg/unlimited_polymorphic_17.f90
new file mode 100644
index 000000000..0fcff74b9
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gfortran.dg/unlimited_polymorphic_17.f90
@@ -0,0 +1,51 @@
+! { dg-do run }
+! Tests fix for PR60717 in which offsets in recursive calls below
+! were not being set correctly.
+!
+! Reported on comp.lang.fortran by Thomas Schnurrenberger
+!
+module m
+ implicit none
+ real :: chksum0 = 0, chksum1 = 0, chksum2 = 0
+contains
+ recursive subroutine show_real(a)
+ real, intent(in) :: a(:)
+ if (size (a) > 0) then
+ chksum0 = a(1) + chksum0
+ call show_real (a(2:))
+ end if
+ return
+ end subroutine show_real
+ recursive subroutine show_generic1(a)
+ class(*), intent(in) :: a(:)
+ if (size (a) > 0) then
+ select type (a)
+ type is (real)
+ chksum1 = a(1) + chksum1
+ end select
+ call show_generic1 (a(2:)) ! recursive call outside SELECT TYPE
+ end if
+ return
+ end subroutine show_generic1
+ recursive subroutine show_generic2(a)
+ class(*), intent(in) :: a(:)
+ if (size (a) > 0) then
+ select type (a)
+ type is (real)
+ chksum2 = a(1) + chksum2
+ call show_generic2 (a(2:)) ! recursive call inside SELECT TYPE
+ end select
+ end if
+ return
+ end subroutine show_generic2
+end module m
+program test
+ use :: m
+ implicit none
+ real :: array(1:6) = (/ 0, 1, 2, 3, 4, 5 /)
+ call show_real (array)
+ call show_generic1 (array)
+ call show_generic2 (array)
+ if (chksum0 .ne. chksum1) call abort
+ if (chksum0 .ne. chksum2) call abort
+end program test
diff --git a/gcc-4.9/gcc/testsuite/gfortran.dg/warn_conversion_4.f90 b/gcc-4.9/gcc/testsuite/gfortran.dg/warn_conversion_4.f90
index f911741f5..3d1b12582 100644
--- a/gcc-4.9/gcc/testsuite/gfortran.dg/warn_conversion_4.f90
+++ b/gcc-4.9/gcc/testsuite/gfortran.dg/warn_conversion_4.f90
@@ -11,8 +11,8 @@ contains
subroutine test
integer :: x
x = int (abs (cmplx(2.3,0.1)))
- x = int (abs (cmplx(2.3_dp,0.1))) ! { dg-warning "Conversion from REAL.8. to default-kind COMPLEX.4. at .1. might loose precision, consider using the KIND argument" }
- x = int (abs (cmplx(2.3,0.1_dp))) ! { dg-warning "Conversion from REAL.8. to default-kind COMPLEX.4. at .1. might loose precision, consider using the KIND argument" }
- x = int (abs (cmplx(2.3_dp,0.1_dp))) ! { dg-warning "Conversion from REAL.8. to default-kind COMPLEX.4. at .1. might loose precision, consider using the KIND argument" }
+ x = int (abs (cmplx(2.3_dp,0.1))) ! { dg-warning "Conversion from REAL.8. to default-kind COMPLEX.4. at .1. might lose precision, consider using the KIND argument" }
+ x = int (abs (cmplx(2.3,0.1_dp))) ! { dg-warning "Conversion from REAL.8. to default-kind COMPLEX.4. at .1. might lose precision, consider using the KIND argument" }
+ x = int (abs (cmplx(2.3_dp,0.1_dp))) ! { dg-warning "Conversion from REAL.8. to default-kind COMPLEX.4. at .1. might lose precision, consider using the KIND argument" }
end subroutine test
end module fft_mod
diff --git a/gcc-4.9/gcc/testsuite/gfortran.dg/where_4.f90 b/gcc-4.9/gcc/testsuite/gfortran.dg/where_4.f90
new file mode 100644
index 000000000..1ff2e4ca3
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gfortran.dg/where_4.f90
@@ -0,0 +1,18 @@
+! { dg-do compile }
+! PR 60522 - this used to ICE.
+! Original test case Roger Ferrer Ibanez
+subroutine foo(a, b)
+ implicit none
+ integer, dimension(:), intent(inout) :: a
+ integer, dimension(:), intent(in) :: b
+
+ where (b(:) > 0)
+ where (b(:) > 100)
+ a(lbound(a, 1):ubound(a, 1)) = b(lbound(b, 1):ubound(b, 1)) * b(lbound(b, 1):ubound(b, 1)) - 100
+ elsewhere
+ a(lbound(a, 1):ubound(a, 1)) = b(lbound(b, 1):ubound(b, 1)) * b(lbound(b, 1):ubound(b, 1))
+ end where
+ elsewhere
+ a(lbound(a, 1):ubound(a, 1)) = - b(lbound(b, 1):ubound(b, 1)) * b(lbound(b, 1):ubound(b, 1))
+ end where
+end subroutine foo
diff --git a/gcc-4.9/gcc/testsuite/gnat.dg/opt33.adb b/gcc-4.9/gcc/testsuite/gnat.dg/opt33.adb
new file mode 100644
index 000000000..e1ac27c31
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gnat.dg/opt33.adb
@@ -0,0 +1,41 @@
+-- { dg-do compile }
+-- { dg-options "-O" }
+
+with Ada.Containers.Ordered_Sets;
+with Ada.Strings.Unbounded;
+
+procedure Opt33 is
+
+ type Rec is record
+ Name : Ada.Strings.Unbounded.Unbounded_String;
+ end record;
+
+ function "<" (Left : Rec; Right : Rec) return Boolean;
+
+ package My_Ordered_Sets is new Ada.Containers.Ordered_Sets (Rec);
+
+ protected type Data is
+ procedure Do_It;
+ private
+ Set : My_Ordered_Sets.Set;
+ end Data;
+
+ function "<" (Left : Rec; Right : Rec) return Boolean is
+ begin
+ return False;
+ end "<";
+
+ protected body Data is
+ procedure Do_It is
+ procedure Dummy (Position : My_Ordered_Sets.Cursor) is
+ begin
+ null;
+ end;
+ begin
+ Set.Iterate (Dummy'Access);
+ end;
+ end Data;
+
+begin
+ null;
+end;
diff --git a/gcc-4.9/gcc/testsuite/gnat.dg/test_raise_from_pure.adb b/gcc-4.9/gcc/testsuite/gnat.dg/test_raise_from_pure.adb
index 66db2232e..8f928c585 100644
--- a/gcc-4.9/gcc/testsuite/gnat.dg/test_raise_from_pure.adb
+++ b/gcc-4.9/gcc/testsuite/gnat.dg/test_raise_from_pure.adb
@@ -1,4 +1,4 @@
--- { dg-do run { xfail arm*-*-* } }
+-- { dg-do run }
-- { dg-options "-O2" }
-- This is an optimization test and its failure is only a missed optimization.
diff --git a/gcc-4.9/gcc/testsuite/lib/cilk-plus-dg.exp b/gcc-4.9/gcc/testsuite/lib/cilk-plus-dg.exp
new file mode 100644
index 000000000..bfb4b71de
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/lib/cilk-plus-dg.exp
@@ -0,0 +1,104 @@
+# Copyright (C) 2014 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/>.
+
+#
+# cilkplus_link_flags -- compute library path and flags to find libcilkrts.
+# (originally from g++.exp)
+#
+
+proc cilkplus_link_flags { paths } {
+ global srcdir
+ global ld_library_path
+ global shlib_ext
+
+ set gccpath ${paths}
+ set flags ""
+
+ set shlib_ext [get_shlib_extension]
+
+ if { $gccpath != "" } {
+ if { [file exists "${gccpath}/libcilkrts/.libs/libcilkrts.a"]
+ || [file exists "${gccpath}/libcilkrts/.libs/libcilkrts.${shlib_ext}"] } {
+ append flags " -B${gccpath}/libcilkrts/ "
+ append flags " -L${gccpath}/libcilkrts/.libs"
+ append ld_library_path ":${gccpath}/libcilkrts/.libs"
+ }
+ } else {
+ global tool_root_dir
+
+ set libcilkrts [lookfor_file ${tool_root_dir} libcilkrts]
+ if { $libcilkrts != "" } {
+ append flags "-L${libcilkrts} "
+ append ld_library_path ":${libcilkrts}"
+ }
+ }
+
+ set_ld_library_path_env_vars
+
+ return "$flags"
+}
+
+#
+# cilkplus_init -- called at the start of each subdir of tests
+#
+
+proc cilkplus_init { args } {
+ global TEST_ALWAYS_FLAGS
+ global ALWAYS_CXXFLAGS
+ global TOOL_OPTIONS
+ global cilkplus_saved_TEST_ALWAYS_FLAGS
+
+ set link_flags ""
+ if ![is_remote host] {
+ if [info exists TOOL_OPTIONS] {
+ set link_flags "[cilkplus_link_flags [get_multilibs ${TOOL_OPTIONS}]]"
+ } else {
+ set link_flags "[cilkplus_link_flags [get_multilibs]]"
+ }
+ }
+
+ if [info exists TEST_ALWAYS_FLAGS] {
+ set cilkplus_saved_TEST_ALWAYS_FLAGS $TEST_ALWAYS_FLAGS
+ }
+ if [info exists ALWAYS_CXXFLAGS] {
+ set ALWAYS_CXXFLAGS [concat "{ldflags=$link_flags}" $ALWAYS_CXXFLAGS]
+ } else {
+ if [info exists TEST_ALWAYS_FLAGS] {
+ set TEST_ALWAYS_FLAGS "$link_flags $TEST_ALWAYS_FLAGS"
+ } else {
+ set TEST_ALWAYS_FLAGS "$link_flags"
+ }
+ }
+ if { $link_flags != "" } {
+ return 1
+ }
+ return 0
+}
+
+#
+# cilkplus_finish -- called at the end of each subdir of tests
+#
+
+proc cilkplus_finish { args } {
+ global TEST_ALWAYS_FLAGS
+ global cilkplus_saved_TEST_ALWAYS_FLAGS
+
+ if [info exists cilkplus_saved_TEST_ALWAYS_FLAGS] {
+ set TEST_ALWAYS_FLAGS $cilkplus_saved_TEST_ALWAYS_FLAGS
+ } else {
+ unset TEST_ALWAYS_FLAGS
+ }
+}
diff --git a/gcc-4.9/gcc/testsuite/lib/gcc-dg.exp b/gcc-4.9/gcc/testsuite/lib/gcc-dg.exp
index f9d52bcf6..a758d4740 100644
--- a/gcc-4.9/gcc/testsuite/lib/gcc-dg.exp
+++ b/gcc-4.9/gcc/testsuite/lib/gcc-dg.exp
@@ -181,6 +181,7 @@ proc gcc-dg-test-1 { target_compile prog do_what extra_tool_flags } {
lappend options "additional_flags=$extra_tool_flags"
}
+ verbose "$target_compile $prog $output_file $compile_type $options" 4
set comp_output [$target_compile "$prog" "$output_file" "$compile_type" $options]
# Look for an internal compiler error, which sometimes masks the fact
diff --git a/gcc-4.9/gcc/testsuite/lib/prune.exp b/gcc-4.9/gcc/testsuite/lib/prune.exp
index 72ecde770..679d894e2 100644
--- a/gcc-4.9/gcc/testsuite/lib/prune.exp
+++ b/gcc-4.9/gcc/testsuite/lib/prune.exp
@@ -59,7 +59,7 @@ proc prune_gcc_output { text } {
# Ignore harmless warnings from Xcode 3.2.x.
regsub -all "(^|\n)\[^\n\]*ld: warning: can't add line info to anonymous symbol\[^\n\]*" $text "" text
- regsub -all "(^|\n)\[^\n\]*warning: DWARFDebugInfoEntry::AppendDependants\[^\n\]*AT_\[^\n\]*_bound\[^\n\]*FORM_ref4\[^\n\]*" $text "" text
+ regsub -all "(^|\n)\[^\n\]*warning: DWARFDebugInfoEntry::AppendDependants\[^\n\]*AT_\[^\n\]*FORM_ref4\[^\n\]*" $text "" text
regsub -all "(^|\n)\[^\n\]*warning:\[^\n\]*TAG_variable: AT_location\[^\n\]*didn't have valid function low pc\[^\n\]*" $text "" text
# Ignore harmless warnings from Xcode 4.0.
diff --git a/gcc-4.9/gcc/testsuite/lib/target-supports.exp b/gcc-4.9/gcc/testsuite/lib/target-supports.exp
index bee847133..57b10d0a8 100644
--- a/gcc-4.9/gcc/testsuite/lib/target-supports.exp
+++ b/gcc-4.9/gcc/testsuite/lib/target-supports.exp
@@ -746,7 +746,14 @@ proc check_effective_target_mmap {} {
# Return 1 if the target supports dlopen, 0 otherwise.
proc check_effective_target_dlopen {} {
- return [check_function_available "dlopen"]
+ return [check_no_compiler_messages dlopen executable {
+ #include <dlfcn.h>
+ int main(void) { dlopen ("dummy.so", RTLD_NOW); }
+ } [add_options_for_dlopen ""]]
+}
+
+proc add_options_for_dlopen { flags } {
+ return "$flags -ldl"
}
# Return 1 if the target supports clone, 0 otherwise.
@@ -3732,6 +3739,28 @@ proc check_effective_target_vect_widen_mult_hi_to_si_pattern { } {
}
# Return 1 if the target plus current options supports a vector
+# widening multiplication of *int* args into *long* result, 0 otherwise.
+#
+# This won't change for different subtargets so cache the result.
+
+proc check_effective_target_vect_widen_mult_si_to_di_pattern { } {
+ global et_vect_widen_mult_si_to_di_pattern
+
+ if [info exists et_vect_widen_mult_si_to_di_pattern_saved] {
+ verbose "check_effective_target_vect_widen_mult_si_to_di_pattern: using cached result" 2
+ } else {
+ set et_vect_widen_mult_si_to_di_pattern_saved 0
+ if {[istarget ia64-*-*]
+ || [istarget i?86-*-*]
+ || [istarget x86_64-*-*] } {
+ set et_vect_widen_mult_si_to_di_pattern_saved 1
+ }
+ }
+ verbose "check_effective_target_vect_widen_mult_si_to_di_pattern: returning $et_vect_widen_mult_si_to_di_pattern_saved" 2
+ return $et_vect_widen_mult_si_to_di_pattern_saved
+}
+
+# Return 1 if the target plus current options supports a vector
# widening shift, 0 otherwise.
#
# This won't change for different subtargets so cache the result.
@@ -5712,6 +5741,7 @@ proc check_effective_target_logical_op_short_circuit {} {
|| [istarget arc*-*-*]
|| [istarget avr*-*-*]
|| [istarget crisv32-*-*] || [istarget cris-*-*]
+ || [istarget s390*-*-*]
|| [check_effective_target_arm_cortex_m] } {
return 1
}