From e97c99f15937e5762a973b25192aab824126a6d3 Mon Sep 17 00:00:00 2001 From: Rong Xu Date: Tue, 2 Sep 2014 15:29:57 -0700 Subject: [gcc-4.9] Merge svn r214745 from google/gcc-4_9 branch. Merge gcc-4_9 source r214745 from google/gcc-4_9 branch. Change-Id: Ie6fa0fd72f4b4eec3adc4db4bb922e652d1c2605 --- gcc-4.9/gcc/testsuite/ChangeLog | 217 +++++++++++++++++++++ .../c-c++-common/cilk-plus/AN/pr61455-2.c | 13 ++ .../testsuite/c-c++-common/cilk-plus/AN/pr61455.c | 9 + .../testsuite/c-c++-common/cilk-plus/AN/pr61962.c | 14 ++ .../testsuite/c-c++-common/cilk-plus/AN/pr61963.c | 9 + .../testsuite/c-c++-common/cilk-plus/AN/pr62008.c | 10 + gcc-4.9/gcc/testsuite/c-c++-common/pr61741.c | 22 +++ .../gcc/testsuite/g++.dg/cpp0x/constexpr-array7.C | 13 ++ .../gcc/testsuite/g++.dg/cpp0x/constexpr-empty7.C | 28 +++ .../gcc/testsuite/g++.dg/cpp0x/constexpr-ptrmem3.C | 16 ++ .../gcc/testsuite/g++.dg/cpp0x/initlist-array4.C | 9 + .../g++.dg/cpp0x/lambda/lambda-template13.C | 7 +- gcc-4.9/gcc/testsuite/g++.dg/cpp0x/rv-cond1.C | 13 ++ gcc-4.9/gcc/testsuite/g++.dg/expr/cond12.C | 12 ++ gcc-4.9/gcc/testsuite/g++.dg/ext/restrict2.C | 8 + gcc-4.9/gcc/testsuite/g++.dg/init/explicit2.C | 8 + gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-39.C | 28 +++ gcc-4.9/gcc/testsuite/g++.dg/opt/pr62146.C | 51 +++++ gcc-4.9/gcc/testsuite/g++.dg/tls/thread_local10.C | 23 +++ .../testsuite/gcc.c-torture/compile/pr60655-1.c | 2 +- .../testsuite/gcc.c-torture/execute/20050316-3.x | 2 + .../gcc/testsuite/gcc.c-torture/execute/bitfld-6.c | 23 +++ .../gcc/testsuite/gcc.c-torture/execute/pr23135.x | 2 + .../gcc/testsuite/gcc.c-torture/execute/pr61375.c | 35 ++++ .../testsuite/gcc.dg/atomic/c11-atomic-exec-4.c | 2 +- .../testsuite/gcc.dg/atomic/c11-atomic-exec-5.c | 2 +- .../gcc/testsuite/gcc.dg/atomic/stdatomic-flag.c | 1 + gcc-4.9/gcc/testsuite/gcc.dg/lto/pr60449_0.c | 30 +++ gcc-4.9/gcc/testsuite/gcc.dg/lto/pr60449_1.c | 76 ++++++++ gcc-4.9/gcc/testsuite/gcc.dg/pr51879-18.c | 2 +- gcc-4.9/gcc/testsuite/gcc.dg/pr57233.c | 1 + gcc-4.9/gcc/testsuite/gcc.dg/pr59418.c | 2 +- gcc-4.9/gcc/testsuite/gcc.dg/pr61756.c | 14 ++ gcc-4.9/gcc/testsuite/gcc.dg/pr61776.c | 27 +++ gcc-4.9/gcc/testsuite/gcc.dg/pr62004.c | 47 +++++ gcc-4.9/gcc/testsuite/gcc.dg/pr62030.c | 50 +++++ gcc-4.9/gcc/testsuite/gcc.dg/torture/pr61964.c | 33 ++++ .../gcc/testsuite/gcc.dg/tree-ssa/ssa-copyprop-2.c | 13 ++ gcc-4.9/gcc/testsuite/gcc.dg/vect/pr62073.c | 40 ++++ .../gcc/testsuite/gcc.target/arm/frame-pointer-1.c | 1 + .../testsuite/gcc.target/arm/neon-vext-execute.c | 1 + gcc-4.9/gcc/testsuite/gcc.target/arm/pr56184.C | 1 + gcc-4.9/gcc/testsuite/gcc.target/arm/pr58784.c | 1 + gcc-4.9/gcc/testsuite/gcc.target/arm/pr59896.c | 1 + gcc-4.9/gcc/testsuite/gcc.target/arm/pr59985.C | 1 + .../gcc/testsuite/gcc.target/arm/stack-red-zone.c | 1 + .../gcc.target/arm/thumb-find-work-register.c | 1 + .../gcc.target/i386/avx512f-vfixupimmpd-2.c | 7 +- .../gcc.target/i386/avx512f-vfixupimmps-2.c | 6 +- .../gcc.target/i386/avx512f-vfixupimmsd-2.c | 6 +- .../gcc.target/i386/avx512f-vfixupimmss-2.c | 6 +- .../testsuite/gcc.target/i386/avx512f-vpermi2d-2.c | 1 - .../gcc.target/i386/avx512f-vpermi2pd-2.c | 1 - .../gcc.target/i386/avx512f-vpermi2ps-2.c | 1 - .../testsuite/gcc.target/i386/avx512f-vpermi2q-2.c | 1 - .../testsuite/gcc.target/i386/avx512f-vpermt2d-2.c | 1 - .../gcc.target/i386/avx512f-vpermt2pd-2.c | 1 - .../gcc.target/i386/avx512f-vpermt2ps-2.c | 1 - .../testsuite/gcc.target/i386/avx512f-vpermt2q-2.c | 1 - gcc-4.9/gcc/testsuite/gcc.target/i386/pr61794.c | 12 ++ gcc-4.9/gcc/testsuite/gcc.target/i386/pr61801.c | 21 ++ gcc-4.9/gcc/testsuite/gcc.target/i386/pr61855.c | 10 + gcc-4.9/gcc/testsuite/gcc.target/i386/pr61923.c | 36 ++++ .../testsuite/gcc.target/i386/xop-imul64-vector.c | 1 - .../gcc/testsuite/gcc.target/mips/pr62030-octeon.c | 50 +++++ .../gcc.target/powerpc/ppc64-abi-warn-1.c | 12 ++ .../gcc.target/powerpc/ppc64-abi-warn-2.c | 11 ++ .../gcc.target/powerpc/ppc64-abi-warn-3.c | 9 + gcc-4.9/gcc/testsuite/gcc.target/powerpc/pr60102.c | 11 ++ gcc-4.9/gcc/testsuite/gcc.target/sh/pr61996.c | 12 ++ .../testsuite/gfortran.dg/array_assignment_5.f90 | 16 ++ .../testsuite/gfortran.dg/array_constructor_49.f90 | 13 ++ gcc-4.9/gcc/testsuite/gfortran.dg/bessel_7.f90 | 2 +- .../gcc/testsuite/gfortran.dg/dependency_44.f90 | 36 ++++ .../gcc/testsuite/gfortran.dg/dot_product_3.f90 | 15 ++ gcc-4.9/gcc/testsuite/gfortran.dg/gomp/pr62131.f90 | 19 ++ gcc-4.9/gcc/testsuite/gfortran.dg/pr45636.f90 | 2 +- .../testsuite/gfortran.dg/realloc_on_assign_24.f90 | 10 + gcc-4.9/gcc/testsuite/gnat.dg/pack20.adb | 9 + gcc-4.9/gcc/testsuite/gnat.dg/pack20.ads | 15 ++ gcc-4.9/gcc/testsuite/gnat.dg/pack20_pkg.ads | 7 + gcc-4.9/gcc/testsuite/lib/target-supports.exp | 7 +- 82 files changed, 1261 insertions(+), 30 deletions(-) create mode 100644 gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr61455-2.c create mode 100644 gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr61455.c create mode 100644 gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr61962.c create mode 100644 gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr61963.c create mode 100644 gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr62008.c create mode 100644 gcc-4.9/gcc/testsuite/c-c++-common/pr61741.c create mode 100644 gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-array7.C create mode 100644 gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-empty7.C create mode 100644 gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-ptrmem3.C create mode 100644 gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist-array4.C create mode 100644 gcc-4.9/gcc/testsuite/g++.dg/cpp0x/rv-cond1.C create mode 100644 gcc-4.9/gcc/testsuite/g++.dg/expr/cond12.C create mode 100644 gcc-4.9/gcc/testsuite/g++.dg/ext/restrict2.C create mode 100644 gcc-4.9/gcc/testsuite/g++.dg/init/explicit2.C create mode 100644 gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-39.C create mode 100644 gcc-4.9/gcc/testsuite/g++.dg/opt/pr62146.C create mode 100644 gcc-4.9/gcc/testsuite/g++.dg/tls/thread_local10.C create mode 100644 gcc-4.9/gcc/testsuite/gcc.c-torture/execute/20050316-3.x create mode 100644 gcc-4.9/gcc/testsuite/gcc.c-torture/execute/bitfld-6.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr23135.x create mode 100644 gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr61375.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.dg/lto/pr60449_0.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.dg/lto/pr60449_1.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.dg/pr61756.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.dg/pr61776.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.dg/pr62004.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.dg/pr62030.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.dg/torture/pr61964.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ssa-copyprop-2.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.dg/vect/pr62073.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/i386/pr61794.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/i386/pr61801.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/i386/pr61855.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/i386/pr61923.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/mips/pr62030-octeon.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-1.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-2.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-3.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/powerpc/pr60102.c create mode 100644 gcc-4.9/gcc/testsuite/gcc.target/sh/pr61996.c create mode 100644 gcc-4.9/gcc/testsuite/gfortran.dg/array_assignment_5.f90 create mode 100644 gcc-4.9/gcc/testsuite/gfortran.dg/array_constructor_49.f90 create mode 100644 gcc-4.9/gcc/testsuite/gfortran.dg/dependency_44.f90 create mode 100644 gcc-4.9/gcc/testsuite/gfortran.dg/dot_product_3.f90 create mode 100644 gcc-4.9/gcc/testsuite/gfortran.dg/gomp/pr62131.f90 create mode 100644 gcc-4.9/gcc/testsuite/gfortran.dg/realloc_on_assign_24.f90 create mode 100644 gcc-4.9/gcc/testsuite/gnat.dg/pack20.adb create mode 100644 gcc-4.9/gcc/testsuite/gnat.dg/pack20.ads create mode 100644 gcc-4.9/gcc/testsuite/gnat.dg/pack20_pkg.ads (limited to 'gcc-4.9/gcc/testsuite') diff --git a/gcc-4.9/gcc/testsuite/ChangeLog b/gcc-4.9/gcc/testsuite/ChangeLog index 790319955..4a7de28b3 100644 --- a/gcc-4.9/gcc/testsuite/ChangeLog +++ b/gcc-4.9/gcc/testsuite/ChangeLog @@ -1,3 +1,220 @@ +2014-08-26 Dominik Vogt + + * gfortran.dg/bessel_7.f90: Bump allowed precision to avoid + failure on s390*-*-linux-gnu. + +2014-08-24 Oleg Endo + + Backport from mainline + 2014-08-24 Oleg Endo + + PR target/61996 + * gcc.target/sh/pr61996.c: New. + +2014-08-22 Igor Zamyatin + + PR other/62008 + * c-c++-common/cilk-plus/AN/pr62008.c: New test. + +2014-08-21 Thomas Koenig + + Backport from trunk + PR fortran/62214 + * gfortran.dg/array_assignment_5.f90: New test. + +2014-08-20 Martin Jambor + Wei Mi + + PR ipa/60449 + PR middle-end/61776 + * testsuite/gcc.dg/lto/pr60449_1.c: New test. + * testsuite/gcc.dg/lto/pr60449_0.c: New test. + * testsuite/gcc.dg/pr61776.c: New test. + +2014-08-19 Janis Johnson + + Backport from mainline: + 2014-08-19 Janis Johnson + + * lib/target-supports.exp + (check_effective_target_arm_v8_neon_ok_nocache): Add + "-march-armv8-a" to compile flags. + +2014-08-15 Thomas Koenig + + Backport from trunk + PR fortran/62142 + * gfortran.dg/realloc_on_assign_24.f90: New test. + +2014-08-15 Tom de Vries + + Backport from mainline: + 2014-08-14 Tom de Vries + + PR rtl-optimization/62004 + PR rtl-optimization/62030 + * gcc.dg/pr62004.c: New test. + * gcc.dg/pr62030.c: Same. + * gcc.target/mips/pr62030-octeon.c: Same. + +2014-08-15 Thomas Koenig + + Backport from trunk + PR fortran/62106 + * gfortran.dg/array_constructor_49.f90: New test. + +2014-08-15 Jakub Jelinek + Tobias Burnus + + PR fortran/62131 + * gfortran.dg/gomp/pr62131.f90: New test. + +2014-08-14 Kyrylo Tkachov + + Backport from mainline + 2014-08-04 Kyrylo Tkachov + + PR target/61713 + * gcc.dg/pr61756.c: New test. + +2014-08-14 Thomas Preud'homme + + Backport from mainline + 2014-08-12 Thomas Preud'homme + + PR middle-end/62103 + * gcc.c-torture/execute/bitfld-6.c: New test. + +2014-08-12 Felix Yang + + PR tree-optimization/62073 + * gcc.dg/vect/pr62073.c: New test. + +2014-08-12 Janis Johnson + + Backport from mainline + 2014-08-12 Janis Johnson + + * lib/target/supports.exp + (check_effective_target_arm_v8_neon_ok_nocache): Check for armv8 + or later. + + * gcc.dg/pr59418.c: Don't add ARM options for a Thumb1 multilib. + + * gcc.target/arm/neon-vext-execute.c: Skip if the test won't run + on Neon hardware. + + * gcc.target/arm/pr48784.c: Skip for thumb1 multilib. + * gcc.target/arm/pr59985.c: Likewise. + +2014-08-12 Igor Zamyatin + + PR other/61962 + * c-c++-common/cilk-plus/AN/pr61962.c: New test. + +2014-08-12 Ganesh Gopalasubramanian + + Backport from mainline + 2014-06-16 Ganesh Gopalasubramanian + + + * gcc.target/i386/xop-imul64-vector.c: Remove the check for + vpmacsdql instruction. + +2014-08-11 Janis Johnson + + Backport from mainline + 2014-08-11 Janis Johnson + + * lib/target-supports.exp (check_effective_target_arm_thumb1_ok, + check_effective_target_arm_thumb2_ok): Test with code that passes + an argument and returns a result. + + * gcc.target/arm/frame-pointer-1.c: Skip if Thumb is not supported. + * gcc.target/arm/pr56184.C: Likewise. + * gcc.target/arm/pr59896.c: Likewise. + * gcc.target/arm/stack-red-zone.c: Likewise. + * gcc.target/arm/thumb-find-work-register.c: Likewise. + +2014-08-10 Thomas Koenig + + Backport from trunk + PR fortran/61999 + * gfortran.dg/dot_product_3.f90: New test case. + +2014-08-07 John David Anglin + + PR tree-optimization/60707 + * gfortran.dg/pr45636.f90: xfail on 32-bit hppa*-*-*. + + * gcc.dg/atomic/c11-atomic-exec-4.c: Undefine _POSIX_C_SOURCE before + defining in dg-options. + * gcc.dg/atomic/c11-atomic-exec-5.c: Likewise. + + * gcc.dg/atomic/stdatomic-flag.c: Add xfail comment. + + * gcc.c-torture/compile/pr60655-1.c: Don't add -fdata-sections option + on 32-bit hppa-hpux. + + * gcc.dg/pr57233.c: Add -fno-common option on hppa*-*-hpux*. + +2014-08-07 Petr Murzin + + * gcc.target/i386/avx512f-vfixupimmpd-2.c: Include float.h instead of + values.h, change MAXDOUBLE for DBL_MAX. + * gcc.target/i386/avx512f-vfixupimmsd-2.c: Ditto. + * gcc.target/i386/avx512f-vfixupimmps-2.c: Include float.h instead of + values.h, change MAXFLOAT for FLT_MAX. + * gcc.target/i386/avx512f-vfixupimmss-2.c: Ditto. + * gcc.target/i386/avx512f-vpermi2d-2.c: Do not include values.h. + * gcc.target/i386/avx512f-vpermi2pd-2.c: Ditto. + * gcc.target/i386/avx512f-vpermi2ps-2.c: Ditto. + * gcc.target/i386/avx512f-vpermi2q-2.c: Ditto. + * gcc.target/i386/avx512f-vpermt2d-2.c: Ditto. + * gcc.target/i386/avx512f-vpermt2pd-2.c: Ditto. + * gcc.target/i386/avx512f-vpermt2ps-2.c: Ditto. + * gcc.target/i386/avx512f-vpermt2q-2.c: Ditto. + +2014-08-06 Vladimir Makarov + + PR debug/61923 + * gcc.target/i386/pr61923.c: New test. + +2014-08-06 Jakub Jelinek + + PR rtl-optimization/61801 + * gcc.target/i386/pr61801.c: Rewritten. + +2014-08-04 Rohit + + PR target/60102 + * gcc.target/powerpc/pr60102.c: New testcase. + +2014-08-01 Igor Zamyatin + + PR other/61963 + * c-c++-common/cilk-plus/AN/pr61963.c: New test. + +2014-08-01 Igor Zamyatin + + PR middle-end/61455 + * c-c++-common/cilk-plus/AN/pr61455.c: New test. + * c-c++-common/cilk-plus/AN/pr61455-2.c: Likewise. + +2014-08-01 Thomas Preud'homme + + Backport from mainline + 2014-06-13 Thomas Preud'homme + + PR tree-optimization/61375 + * gcc.c-torture/execute/pr61375-1.c: New test. + +2014-08-01 Richard Biener + + PR tree-optimization/61964 + * gcc.dg/torture/pr61964.c: New testcase. + * gcc.dg/pr51879-18.c: XFAIL. + 2014-07-28 Richard Biener PR rtl-optimization/61801 diff --git a/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr61455-2.c b/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr61455-2.c new file mode 100644 index 000000000..60b424873 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr61455-2.c @@ -0,0 +1,13 @@ +/* PR c++/61455 */ +/* { dg-options "-fcilkplus" } */ + +int a[3] = {2, 3, 4}; + +int main () +{ + int c = 10; + int b = __sec_reduce_add(a[:]); + if (b+c != 19) + __builtin_abort(); + return 0; +} diff --git a/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr61455.c b/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr61455.c new file mode 100644 index 000000000..35a11b66c --- /dev/null +++ b/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr61455.c @@ -0,0 +1,9 @@ +/* PR c++/61455 */ +/* { dg-do compile } */ +/* { dg-options "-fcilkplus" } */ + +void foo () +{ + int a[2]; + int b = a[:]; /* { dg-error "cannot be scalar" } */ +} diff --git a/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr61962.c b/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr61962.c new file mode 100644 index 000000000..08d4fe236 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr61962.c @@ -0,0 +1,14 @@ +/* PR other/61962 */ +/* { dg-do compile } */ +/* { dg-options "-fcilkplus" } */ + +struct FloatStruct +{ + float *f; +}; + +/* Either SRC or DST must be a struct, otherwise the bug does not occur. */ +void f (struct FloatStruct* dst, float *src, unsigned int length) +{ + dst->f[0:length] = src[0:length]; +} diff --git a/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr61963.c b/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr61963.c new file mode 100644 index 000000000..dfa713c4d --- /dev/null +++ b/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr61963.c @@ -0,0 +1,9 @@ +/* PR other/61963 */ +/* { dg-do compile } */ +/* { dg-options "-fcilkplus" } */ + +void f (int * int *a) /* { dg-error "expected" } */ +{ + a[0:64] = 0; /* { dg-error "was not declared" "" { target c++ } 7 } */ + a[0:64] = 0; +} diff --git a/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr62008.c b/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr62008.c new file mode 100644 index 000000000..05734c560 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/AN/pr62008.c @@ -0,0 +1,10 @@ +/* PR other/62008 */ +/* { dg-do compile } */ +/* { dg-options "-fcilkplus" } */ + +void f(int *a, int w, int h) +{ + int tmp[w][h]; + tmp[:][:] = a[0:w][0:h]; /* { dg-error "base of array section must be pointer or array type" } */ + /* { dg-error "start-index and length fields necessary" "" { target c } 8 } */ +} diff --git a/gcc-4.9/gcc/testsuite/c-c++-common/pr61741.c b/gcc-4.9/gcc/testsuite/c-c++-common/pr61741.c new file mode 100644 index 000000000..a2bc4bda3 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/c-c++-common/pr61741.c @@ -0,0 +1,22 @@ +/* { dg-do run } */ + +int a = 1, b; + +void +foo (void) +{ + signed char c = 0; + for (; a; a--) + for (; c >= 0; c++); + if (!c) + b = 1; +} + +int +main () +{ + foo (); + if (b != 0) + __builtin_abort (); + return 0; +} diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-array7.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-array7.C new file mode 100644 index 000000000..8f74675f2 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-array7.C @@ -0,0 +1,13 @@ +// PR c++/61994 +// { dg-do compile { target c++11 } } + +struct A { int i,j; }; + +struct X { + A a = {1,1}; +}; + +constexpr X table[1][1] = {{ {} }}; + +#define SA(X) static_assert(X,#X) +SA(table[0][0].a.i == 1); diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-empty7.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-empty7.C new file mode 100644 index 000000000..f491994a1 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-empty7.C @@ -0,0 +1,28 @@ +// PR c++/61959 +// { dg-do compile { target c++11 } } + +template struct BasePoint +{ + Coord x, y; + constexpr BasePoint (Coord, Coord) : x (0), y (0) {} +}; +template struct BaseCoord +{ + int value; + constexpr BaseCoord (T) : value (1) {} +}; +template struct IntCoordTyped : BaseCoord, units +{ + typedef BaseCoord Super; + constexpr IntCoordTyped (int) : Super (0) {} +}; +template +struct IntPointTyped : BasePoint >, units +{ + typedef BasePoint > Super; + constexpr IntPointTyped (int, int) : Super (0, 0) {} +}; +struct A +{ +}; +IntPointTyped a (0, 0); diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-ptrmem3.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-ptrmem3.C new file mode 100644 index 000000000..c5e2101c0 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-ptrmem3.C @@ -0,0 +1,16 @@ +// PR c++/62129 +// { dg-do compile { target c++11 } } + +class Evaluator +{ + int MakeChangelist (); + typedef int (Evaluator::*fac_t)(); + struct CreatorEntry + { + const char *type; + fac_t factory; + }; + static constexpr CreatorEntry kCreators[] = { "", &Evaluator::MakeChangelist }; +}; + +constexpr Evaluator::CreatorEntry Evaluator::kCreators[]; diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist-array4.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist-array4.C new file mode 100644 index 000000000..af2045d9b --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist-array4.C @@ -0,0 +1,9 @@ +// PR c++/58636 +// { dg-do compile { target c++11 } } + +#include + +// { dg-error "pointer to reference" "" { target *-*-* } 0 } +int foo(std::initializer_list); + +int i = foo({ 0 }); // { dg-error "std::initializer_list" } diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template13.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template13.C index adbb4dbca..79ab4107d 100644 --- a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template13.C +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template13.C @@ -1,5 +1,6 @@ // PR c++/61566 // { dg-do compile { target c++11 } } +// { dg-options "-fabi-version=0" } struct function { @@ -7,6 +8,7 @@ struct function function (_Functor); }; +template struct C { template @@ -15,6 +17,9 @@ struct C void bar () { - C c; + C c; c.foo (1); } + +// { dg-final { scan-assembler "_ZN8functionC1IZN1CIiE3fooIiEEvT_S_Ed_UlvE_EET_" } } +// { dg-final { scan-assembler-not "_ZZN1CIiE3fooIiEEvT_8functionEd_NKUlvE_clEv" } } diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/rv-cond1.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/rv-cond1.C new file mode 100644 index 000000000..a8f598f17 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/rv-cond1.C @@ -0,0 +1,13 @@ +// PR c++/58714 +// { dg-do compile { target c++11 } } + +struct X { + X& operator=(const X&) = delete; + X& operator=(X&& ) = default; +}; + +void f(bool t) { + X a, b; + *(t ? &a : &b) = X(); + (t ? a : b) = X(); +} diff --git a/gcc-4.9/gcc/testsuite/g++.dg/expr/cond12.C b/gcc-4.9/gcc/testsuite/g++.dg/expr/cond12.C new file mode 100644 index 000000000..9134f8166 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/expr/cond12.C @@ -0,0 +1,12 @@ +// PR c++/58714 +// { dg-do run } + +struct X { + X& operator=(const X&){} + X& operator=(X&){__builtin_abort();} +}; + +int main(int argv,char**) { + X a, b; + ((argv > 2) ? a : b) = X(); +} diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ext/restrict2.C b/gcc-4.9/gcc/testsuite/g++.dg/ext/restrict2.C new file mode 100644 index 000000000..f05321002 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/ext/restrict2.C @@ -0,0 +1,8 @@ +// PR c++/60872 +// { dg-options "" } + +typedef double *__restrict T; +void f(T* p) +{ + void *p2 = p; +} diff --git a/gcc-4.9/gcc/testsuite/g++.dg/init/explicit2.C b/gcc-4.9/gcc/testsuite/g++.dg/init/explicit2.C new file mode 100644 index 000000000..d1dbb39fc --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/init/explicit2.C @@ -0,0 +1,8 @@ +// PR c++/60417 + +struct A { explicit A(int = 0); }; + +int main() +{ + A a[1] = { }; +} diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-39.C b/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-39.C new file mode 100644 index 000000000..fbeea126e --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-39.C @@ -0,0 +1,28 @@ +// PR c++/61214 +/* { dg-options "-O2 -fdump-tree-optimized" } */ + +struct Base +{ + virtual ~Base(); + virtual Base* clone() { + return 0; + } +}; + +struct Foo : Base +{ + virtual ~Foo(); + virtual Base* clone() { + return new Foo(); + } +}; + +int main() +{ + Base* f = new Foo(); + f->clone(); + return 0; +} + +/* { dg-final { scan-tree-dump-not "OBJ_TYPE_REF" "optimized" } } */ +/* { dg-final { cleanup-tree-dump "optimized" } } */ diff --git a/gcc-4.9/gcc/testsuite/g++.dg/opt/pr62146.C b/gcc-4.9/gcc/testsuite/g++.dg/opt/pr62146.C new file mode 100644 index 000000000..dbe417434 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/opt/pr62146.C @@ -0,0 +1,51 @@ +/* PR rtl-optimization/62146 */ +/* { dg-do compile } */ +/* { dg-options "-O2 " } */ +class F +{ +public: + virtual ~ F (); +}; +template < class CL > class G:public F +{ + int *member_; +public: + G ( int *b): member_ (0) + { + } +}; + +class D +{ +public: + template < class CL > void RegisterNonTagCallback (int, + void (CL:: + *p3) ()) + { + InternalRegisterNonTag (p3 ? new G < CL > ( 0) : 0); + } void InternalRegisterNonTag (F *); +}; + +void fn1 (); +class C1 +{ + void foo(); + class TokenType + { + public: + void AddToken () + { + } + }; + C1::TokenType bar_t; +}; +D a; +void C1::foo() +{ + if (&bar_t) + fn1 (); + for (int i = 0; i < sizeof 0; ++i) + a.RegisterNonTagCallback (0, &TokenType::AddToken); +} + +/* { dg-final { scan-assembler-not "mov.*_ZN2C19TokenType8AddTokenEv, .\\\(" } } */ diff --git a/gcc-4.9/gcc/testsuite/g++.dg/tls/thread_local10.C b/gcc-4.9/gcc/testsuite/g++.dg/tls/thread_local10.C new file mode 100644 index 000000000..48c1b861c --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/tls/thread_local10.C @@ -0,0 +1,23 @@ +// PR c++/58624 + +// { dg-do run { target c++11 } } +// { dg-add-options tls } +// { dg-require-effective-target tls_runtime } + +int i; + +template struct A +{ + static thread_local int s; + + A () { i = s; } +}; + +int f() { return 42; } +template thread_local int A::s = f(); + +int main () { + A a; + if (i != 42) + __builtin_abort(); +} 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 index 6f84f6e4e..1e1e46073 100644 --- 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 @@ -1,4 +1,4 @@ -/* { dg-options "-fdata-sections" } */ +/* { dg-options "-fdata-sections" { target { ! { { hppa*-*-hpux* } && { ! lp64 } } } } } */ typedef unsigned char unit; typedef unit *unitptr; diff --git a/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/20050316-3.x b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/20050316-3.x new file mode 100644 index 000000000..cb7b119b8 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/20050316-3.x @@ -0,0 +1,2 @@ +set additional_flags "-Wno-psabi" +return 0 diff --git a/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/bitfld-6.c b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/bitfld-6.c new file mode 100644 index 000000000..50927dc1d --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/bitfld-6.c @@ -0,0 +1,23 @@ +union U +{ + const int a; + unsigned b : 20; +}; + +static union U u = { 0x12345678 }; + +/* Constant folding used to fail to account for endianness when folding a + union. */ + +int +main (void) +{ +#ifdef __BYTE_ORDER__ +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ + return u.b - 0x45678; +#else + return u.b - 0x12345; +#endif +#endif + return 0; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr23135.x b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr23135.x new file mode 100644 index 000000000..cb7b119b8 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr23135.x @@ -0,0 +1,2 @@ +set additional_flags "-Wno-psabi" +return 0 diff --git a/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr61375.c b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr61375.c new file mode 100644 index 000000000..6fb46939e --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/pr61375.c @@ -0,0 +1,35 @@ +#ifdef __UINT64_TYPE__ +typedef __UINT64_TYPE__ uint64_t; +#else +typedef unsigned long long uint64_t; +#endif + +#ifndef __SIZEOF_INT128__ +#define __int128 long long +#endif + +/* Some version of bswap optimization would ICE when analyzing a mask constant + too big for an HOST_WIDE_INT (PR61375). */ + +__attribute__ ((noinline, noclone)) uint64_t +uint128_central_bitsi_ior (unsigned __int128 in1, uint64_t in2) +{ + __int128 mask = (__int128)0xffff << 56; + return ((in1 & mask) >> 56) | in2; +} + +int +main (int argc) +{ + __int128 in = 1; +#ifdef __SIZEOF_INT128__ + in <<= 64; +#endif + if (sizeof (uint64_t) * __CHAR_BIT__ != 64) + return 0; + if (sizeof (unsigned __int128) * __CHAR_BIT__ != 128) + return 0; + if (uint128_central_bitsi_ior (in, 2) != 0x102) + __builtin_abort (); + return 0; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-4.c b/gcc-4.9/gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-4.c index 1558200db..b03d2c88d 100644 --- a/gcc-4.9/gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-4.c +++ b/gcc-4.9/gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-4.c @@ -2,7 +2,7 @@ operating properly when operations on the same variable are carried out in two threads. */ /* { dg-do run } */ -/* { dg-options "-std=c11 -pedantic-errors -pthread -D_POSIX_C_SOURCE=200809L" } */ +/* { dg-options "-std=c11 -pedantic-errors -pthread -U_POSIX_C_SOURCE -D_POSIX_C_SOURCE=200809L" } */ /* { dg-additional-options "-D_XOPEN_SOURCE=600" { target *-*-solaris2.1[0-9]* } } /* { dg-require-effective-target pthread } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-5.c b/gcc-4.9/gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-5.c index bc87de4cc..e3e0aae4d 100644 --- a/gcc-4.9/gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-5.c +++ b/gcc-4.9/gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-5.c @@ -3,7 +3,7 @@ iterations of the compare-and-exchange loop are needed, exceptions get properly cleared). */ /* { dg-do run } */ -/* { dg-options "-std=c11 -pedantic-errors -pthread -D_POSIX_C_SOURCE=200809L" } */ +/* { dg-options "-std=c11 -pedantic-errors -pthread -U_POSIX_C_SOURCE -D_POSIX_C_SOURCE=200809L" } */ /* { dg-additional-options "-D_XOPEN_SOURCE=600" { target *-*-solaris2.1[0-9]* } } /* { dg-require-effective-target fenv_exceptions } */ /* { dg-require-effective-target pthread } */ 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 c1a63f1b3..515d5d8dd 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,4 +1,5 @@ /* Test atomic_flag routines for existence and execution. */ +/* The test needs a lockless atomic implementation. */ /* { dg-do run { xfail hppa*-*-hpux* } } */ /* { dg-options "-std=c11 -pedantic-errors" } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr60449_0.c b/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr60449_0.c new file mode 100644 index 000000000..a430830cb --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr60449_0.c @@ -0,0 +1,30 @@ +/* { dg-lto-do link } */ + +extern int printf (const char *__restrict __format, ...); +typedef long int __time_t; +typedef long int __suseconds_t; + +struct timeval + { + __time_t tv_sec; + __suseconds_t tv_usec; + }; + +struct timezone + { + int tz_minuteswest; + int tz_dsttime; + }; +typedef struct timezone *__restrict __timezone_ptr_t; + +extern int gettimeofday (struct timeval *__restrict __tv, __timezone_ptr_t __tz); + +int bar (void) +{ + struct timeval tv; + struct timezone tz; + + gettimeofday (&tv, &tz); + printf ("This is from bar %i\n", tz.tz_dsttime); + return 5; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr60449_1.c b/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr60449_1.c new file mode 100644 index 000000000..ddc25296d --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr60449_1.c @@ -0,0 +1,76 @@ +extern int printf (const char *__restrict __format, ...); +typedef long int __time_t; +typedef long int __suseconds_t; +struct timeval + { + __time_t tv_sec; + __suseconds_t tv_usec; + }; +struct timezone + { + int tz_minuteswest; + int tz_dsttime; + }; +typedef struct timezone *__restrict __timezone_ptr_t; +extern int gettimeofday (struct timeval *__restrict __tv, + __timezone_ptr_t __tz) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); + +typedef long int __jmp_buf[8]; +typedef struct + { + unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))]; + } __sigset_t; +struct __jmp_buf_tag + { + __jmp_buf __jmpbuf; + int __mask_was_saved; + __sigset_t __saved_mask; + }; +typedef struct __jmp_buf_tag jmp_buf[1]; + +extern int setjmp (jmp_buf __env) __attribute__ ((__nothrow__)); +extern void longjmp (struct __jmp_buf_tag __env[1], int __val) + __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__)); + +extern int bar (void); + +int __attribute__ ((noinline, noclone)) +get_input (void) +{ + return 0; +} + +static jmp_buf buf; + +int foo (void) +{ + if (get_input ()) + longjmp(buf, 1); + return 0; +} + +volatile int z; + + +int main (void) +{ + struct timeval tv; + struct timezone tz; + + bar(); + if (setjmp (buf)) + return 1; + + if (!get_input ()) + { + gettimeofday (&tv, &tz); + z = 0; + printf ("This is from main %i\n", tz.tz_dsttime); + } + + foo (); + bar (); + bar (); + + return 0; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/pr51879-18.c b/gcc-4.9/gcc/testsuite/gcc.dg/pr51879-18.c index 95629f122..9b3cb80a4 100644 --- a/gcc-4.9/gcc/testsuite/gcc.dg/pr51879-18.c +++ b/gcc-4.9/gcc/testsuite/gcc.dg/pr51879-18.c @@ -13,5 +13,5 @@ void bar (int c, int *p) *q = foo (); } -/* { dg-final { scan-tree-dump-times "foo \\(" 1 "pre"} } */ +/* { dg-final { scan-tree-dump-times "foo \\(" 1 "pre" { xfail *-*-* } } } */ /* { dg-final { cleanup-tree-dump "pre" } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/pr57233.c b/gcc-4.9/gcc/testsuite/gcc.dg/pr57233.c index 58c05348b..484844e49 100644 --- a/gcc-4.9/gcc/testsuite/gcc.dg/pr57233.c +++ b/gcc-4.9/gcc/testsuite/gcc.dg/pr57233.c @@ -1,6 +1,7 @@ /* PR tree-optimization/57233 */ /* { dg-do run { target { ilp32 || lp64 } } } */ /* { dg-options "-O2" } */ +/* { dg-additional-options "-fno-common" { target hppa*-*-hpux* } } */ typedef unsigned V4 __attribute__((vector_size(4 * sizeof (int)))); typedef unsigned V8 __attribute__((vector_size(8 * sizeof (int)))); diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/pr59418.c b/gcc-4.9/gcc/testsuite/gcc.dg/pr59418.c index 114c1d383..257ce79f1 100644 --- a/gcc-4.9/gcc/testsuite/gcc.dg/pr59418.c +++ b/gcc-4.9/gcc/testsuite/gcc.dg/pr59418.c @@ -3,7 +3,7 @@ /* { dg-do compile } */ /* { dg-options "-Os -g" } */ -/* { dg-options "-march=armv7-a -mfloat-abi=hard -Os -g" { target arm*-*-* } } */ +/* { dg-options "-march=armv7-a -mfloat-abi=hard -Os -g" { target { arm*-*-* && { ! arm_thumb1 } } } } */ extern int printf (const char *__format, ...); diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/pr61756.c b/gcc-4.9/gcc/testsuite/gcc.dg/pr61756.c new file mode 100644 index 000000000..4ca90448f --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.dg/pr61756.c @@ -0,0 +1,14 @@ +/* PR target/61756 */ + +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +#include + +static volatile atomic_flag guard = ATOMIC_FLAG_INIT; + +void +try_atomic_flag_test_and_set (void) +{ + atomic_flag_test_and_set (&guard); +} diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/pr61776.c b/gcc-4.9/gcc/testsuite/gcc.dg/pr61776.c new file mode 100644 index 000000000..8768c546b --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.dg/pr61776.c @@ -0,0 +1,27 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fprofile-generate" } */ + +#include + +int cond1, cond2; + +int goo() __attribute__((noinline)); + +int goo() { + if (cond1) + return 1; + else + return 2; +} + +jmp_buf env; +int foo() { + int a; + + setjmp(env); + if (cond2) + a = goo(); + else + a = 3; + return a; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/pr62004.c b/gcc-4.9/gcc/testsuite/gcc.dg/pr62004.c new file mode 100644 index 000000000..c994a411b --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.dg/pr62004.c @@ -0,0 +1,47 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -fno-tree-tail-merge" } */ + +struct node +{ + struct node *next; + struct node *prev; +}; + +struct node node; + +struct head +{ + struct node *first; +}; + +struct head heads[5]; + +int k = 2; + +struct head *head = &heads[2]; + +int +main () +{ + struct node *p; + + node.next = (void*)0; + + node.prev = (void *)head; + + head->first = &node; + + struct node *n = head->first; + + struct head *h = &heads[k]; + + heads[2].first = n->next; + + if ((void*)n->prev == (void *)h) + p = h->first; + else + /* Dead tbaa-unsafe load from ((struct node *)&heads[2])->next. */ + p = n->prev->next; + + return !(p == (void*)0); +} diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/pr62030.c b/gcc-4.9/gcc/testsuite/gcc.dg/pr62030.c new file mode 100644 index 000000000..b8baf9343 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.dg/pr62030.c @@ -0,0 +1,50 @@ +/* { dg-do run } */ +/* { dg-options "-O2" } */ + +extern void abort (void); + +struct node +{ + struct node *next; + struct node *prev; +}; + +struct node node; + +struct head +{ + struct node *first; +}; + +struct head heads[5]; + +int k = 2; + +struct head *head = &heads[2]; + +static int __attribute__((noinline)) +foo (void) +{ + node.prev = (void *)head; + head->first = &node; + + struct node *n = head->first; + struct head *h = &heads[k]; + struct node *next = n->next; + + if (n->prev == (void *)h) + h->first = next; + else + n->prev->next = next; + + n->next = h->first; + return n->next == &node; +} + +int +main (void) +{ + if (foo ()) + abort (); + return 0; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr61964.c b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr61964.c new file mode 100644 index 000000000..a03cfdc37 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr61964.c @@ -0,0 +1,33 @@ +/* { dg-do run } */ + +extern void abort (void); + +struct node { struct node *next, *prev; } node; +struct head { struct node *first; } heads[5]; +int k = 2; +struct head *head = &heads[2]; + +static int __attribute__((noinline)) +foo() +{ + node.prev = (void *)head; + head->first = &node; + + struct node *n = head->first; + struct head *h = &heads[k]; + + if (n->prev == (void *)h) + h->first = n->next; + else + n->prev->next = n->next; + + n->next = h->first; + return n->next == &node; +} + +int main() +{ + if (foo ()) + abort (); + return 0; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ssa-copyprop-2.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ssa-copyprop-2.c new file mode 100644 index 000000000..975701391 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ssa-copyprop-2.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-Og -fdump-tree-optimized" } */ + +extern long long __sdt_unsp; +void +f(void) +{ + for (;;) + __asm__ ("%0" :: "i" (((!__extension__ (__builtin_constant_p ((((unsigned long long) (__typeof (__builtin_choose_expr (((__builtin_classify_type (0) + 3) & -4) == 4, (0), 0U))) __sdt_unsp) ) == 0) )) ? 1 : -1) )); +} + +/* { dg-final { scan-tree-dump-not "PHI" "optimized" } } */ +/* { dg-final { cleanup-tree-dump "optimized" } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/vect/pr62073.c b/gcc-4.9/gcc/testsuite/gcc.dg/vect/pr62073.c new file mode 100644 index 000000000..15f2ad66b --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.dg/vect/pr62073.c @@ -0,0 +1,40 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-O1" } */ + +struct S0 +{ + int f7; +}; +struct S0 g_50; +int g_70; +int g_76; + +int foo (long long p_56, int * p_57) +{ + int *l_77; + int l_101; + + for (; g_70;) + { + int **l_78 = &l_77; + if (g_50.f7) + continue; + *l_78 = 0; + } + for (g_76 = 1; g_76 >= 0; g_76--) + { + int *l_90; + for (l_101 = 4; l_101 >= 0; l_101--) + if (l_101) + *l_90 = 0; + else + { + int **l_113 = &l_77; + *l_113 = p_57; + } + } + + return *l_77; +} + +/* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/arm/frame-pointer-1.c b/gcc-4.9/gcc/testsuite/gcc.target/arm/frame-pointer-1.c index bb1888e38..c288fef83 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/arm/frame-pointer-1.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/arm/frame-pointer-1.c @@ -1,6 +1,7 @@ /* Check local register variables using a register conventionally used as the frame pointer aren't clobbered under high register pressure. */ /* { dg-do run } */ +/* { dg-skip-if "incompatible options" { ! { arm_thumb1_ok || arm_thumb2_ok } } { "*" } { "" } } */ /* { dg-options "-Os -mthumb -fomit-frame-pointer" } */ #include diff --git a/gcc-4.9/gcc/testsuite/gcc.target/arm/neon-vext-execute.c b/gcc-4.9/gcc/testsuite/gcc.target/arm/neon-vext-execute.c index 3d6c28cca..8e44d9ad5 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/arm/neon-vext-execute.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/arm/neon-vext-execute.c @@ -1,5 +1,6 @@ /* { dg-do run } */ /* { dg-require-effective-target arm_neon_ok } */ +/* { dg-require-effective-target arm_neon_hw } */ /* { dg-require-effective-target arm_little_endian } */ /* { dg-options "-O2" } */ /* { dg-add-options arm_neon } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/arm/pr56184.C b/gcc-4.9/gcc/testsuite/gcc.target/arm/pr56184.C index d44c1b432..5d23c40c5 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/arm/pr56184.C +++ b/gcc-4.9/gcc/testsuite/gcc.target/arm/pr56184.C @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-skip-if "incompatible options" { ! { arm_thumb1_ok || arm_thumb2_ok } } { "*" } { "" } } */ /* { dg-options "-fno-short-enums -O2 -mthumb -march=armv7-a -mfpu=neon -mfloat-abi=softfp -mtune=cortex-a9 -fno-section-anchors" } */ typedef unsigned int size_t; diff --git a/gcc-4.9/gcc/testsuite/gcc.target/arm/pr58784.c b/gcc-4.9/gcc/testsuite/gcc.target/arm/pr58784.c index e3ef950b4..9a1fcff1c 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/arm/pr58784.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/arm/pr58784.c @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-skip-if "incompatible options" { arm_thumb1 } { "*" } { "" } } */ /* { dg-options "-march=armv7-a -mfloat-abi=hard -mfpu=neon -marm -O2" } */ typedef struct __attribute__ ((__packed__)) diff --git a/gcc-4.9/gcc/testsuite/gcc.target/arm/pr59896.c b/gcc-4.9/gcc/testsuite/gcc.target/arm/pr59896.c index 5896e7379..ea6dc248b 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/arm/pr59896.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/arm/pr59896.c @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-skip-if "incompatible options" { ! { arm_thumb1_ok || arm_thumb2_ok } } { "*" } { "" } } */ /* { dg-options "-mthumb -O2" } */ typedef unsigned int size_t; diff --git a/gcc-4.9/gcc/testsuite/gcc.target/arm/pr59985.C b/gcc-4.9/gcc/testsuite/gcc.target/arm/pr59985.C index cc688a965..1351c486f 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/arm/pr59985.C +++ b/gcc-4.9/gcc/testsuite/gcc.target/arm/pr59985.C @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-skip-if "incompatible options" { arm_thumb1 } { "*" } { "" } } */ /* { dg-options "-g -fcompare-debug -O2 -march=armv7-a -mtune=cortex-a9 -mfpu=vfpv3-d16 -mfloat-abi=hard" } */ extern void *f1 (unsigned long, unsigned long); diff --git a/gcc-4.9/gcc/testsuite/gcc.target/arm/stack-red-zone.c b/gcc-4.9/gcc/testsuite/gcc.target/arm/stack-red-zone.c index b9f0f9937..8db2e2c09 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/arm/stack-red-zone.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/arm/stack-red-zone.c @@ -1,4 +1,5 @@ /* No stack red zone. PR38644. */ +/* { dg-skip-if "incompatible options" { ! { arm_thumb1_ok || arm_thumb2_ok } } { "*" } { "" } } */ /* { dg-options "-mthumb -O2" } */ /* { dg-final { scan-assembler "ldrb\[^\n\]*\\n\[\t \]*add\[\t \]*sp" } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/arm/thumb-find-work-register.c b/gcc-4.9/gcc/testsuite/gcc.target/arm/thumb-find-work-register.c index f2c0225a4..e67a627ea 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/arm/thumb-find-work-register.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/arm/thumb-find-work-register.c @@ -1,5 +1,6 @@ /* Wrong method to get number of arg reg will cause argument corruption. */ /* { dg-do run } */ +/* { dg-skip-if "incompatible options" { ! { arm_thumb1_ok || arm_thumb2_ok } } { "*" } { "" } } */ /* { dg-require-effective-target arm_eabi } */ /* { dg-options "-mthumb -O1" } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmpd-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmpd-2.c index d4ddd3214..995b446d8 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmpd-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmpd-2.c @@ -10,7 +10,8 @@ #define SIZE (AVX512F_LEN / 64) #include "avx512f-mask-type.h" #include "math.h" -#include "values.h" +#include "float.h" + static void CALC (double *r, double src, long long tbl) @@ -60,10 +61,10 @@ CALC (double *r, double src, long long tbl) *r = M_PI_2; break; case 14: - *r = MAXDOUBLE; + *r = DBL_MAX; break; case 15: - *r = -MAXDOUBLE; + *r = -DBL_MAX; break; default: abort (); diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmps-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmps-2.c index 6c2539d0f..edb149cf5 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmps-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmps-2.c @@ -10,7 +10,7 @@ #define SIZE (AVX512F_LEN / 32) #include "avx512f-mask-type.h" #include "math.h" -#include "values.h" +#include "float.h" static void CALC (float *r, float src, int tbl) @@ -60,10 +60,10 @@ CALC (float *r, float src, int tbl) *r = M_PI_2; break; case 14: - *r = MAXFLOAT; + *r = FLT_MAX; break; case 15: - *r = -MAXFLOAT; + *r = -FLT_MAX; break; default: abort (); diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmsd-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmsd-2.c index 1344c7fd1..1b66a9821 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmsd-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmsd-2.c @@ -6,7 +6,7 @@ #include "avx512f-check.h" #include "avx512f-helper.h" #include -#include +#include #include "avx512f-mask-type.h" void @@ -57,10 +57,10 @@ compute_fixupimmpd (double *r, double src, long long tbl) *r = M_PI_2; break; case 14: - *r = MAXDOUBLE; + *r = DBL_MAX; break; case 15: - *r = -MAXDOUBLE; + *r = -DBL_MAX; break; default: abort (); diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmss-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmss-2.c index 25e165ff5..87883ba6a 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmss-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vfixupimmss-2.c @@ -6,7 +6,7 @@ #include "avx512f-check.h" #include "avx512f-helper.h" #include -#include +#include #include "avx512f-mask-type.h" void @@ -57,10 +57,10 @@ compute_fixupimmps (float *r, float src, int tbl) *r = M_PI_2; break; case 14: - *r = MAXFLOAT; + *r = FLT_MAX; break; case 15: - *r = -MAXFLOAT; + *r = -FLT_MAX; break; default: abort (); diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermi2d-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermi2d-2.c index 9aa104bbf..6205cc530 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermi2d-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermi2d-2.c @@ -9,7 +9,6 @@ #define SIZE (AVX512F_LEN / 32) #include "avx512f-mask-type.h" #include "math.h" -#include "values.h" static void CALC (int *dst, int *src1, int *ind, int *src2) diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermi2pd-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermi2pd-2.c index a2daca0bd..0bb5b4c52 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermi2pd-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermi2pd-2.c @@ -9,7 +9,6 @@ #define SIZE (AVX512F_LEN / 64) #include "avx512f-mask-type.h" #include "math.h" -#include "values.h" static void CALC (double *dst, double *src1, long long *ind, double *src2) diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermi2ps-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermi2ps-2.c index 56215cfca..f8038ef15 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermi2ps-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermi2ps-2.c @@ -9,7 +9,6 @@ #define SIZE (AVX512F_LEN / 32) #include "avx512f-mask-type.h" #include "math.h" -#include "values.h" static void CALC (float *dst, float *src1, int *ind, float *src2) diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermi2q-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermi2q-2.c index 9d7b9bec3..0268afbce 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermi2q-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermi2q-2.c @@ -9,7 +9,6 @@ #define SIZE (AVX512F_LEN / 64) #include "avx512f-mask-type.h" #include "math.h" -#include "values.h" static void CALC (long long *dst, long long *src1, long long *ind, long long *src2) diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermt2d-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermt2d-2.c index ef8d1951b..bba108abd 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermt2d-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermt2d-2.c @@ -9,7 +9,6 @@ #define SIZE (AVX512F_LEN / 32) #include "avx512f-mask-type.h" #include "math.h" -#include "values.h" static void CALC (int *dst, int *src1, int *ind, int *src2) diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermt2pd-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermt2pd-2.c index 511a47015..4891c8553 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermt2pd-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermt2pd-2.c @@ -9,7 +9,6 @@ #define SIZE (AVX512F_LEN / 64) #include "avx512f-mask-type.h" #include "math.h" -#include "values.h" static void CALC (double *dst, double *src1, long long *ind, double *src2) diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermt2ps-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermt2ps-2.c index cd35d1237..a3d57c41d 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermt2ps-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermt2ps-2.c @@ -9,7 +9,6 @@ #define SIZE (AVX512F_LEN / 32) #include "avx512f-mask-type.h" #include "math.h" -#include "values.h" static void CALC (float *dst, float *src1, int *ind, float *src2) diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermt2q-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermt2q-2.c index 5f449adec..57fe3d4b1 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermt2q-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vpermt2q-2.c @@ -9,7 +9,6 @@ #define SIZE (AVX512F_LEN / 64) #include "avx512f-mask-type.h" #include "math.h" -#include "values.h" static void CALC (long long *dst, long long *src1, long long *ind, long long *src2) diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61794.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61794.c new file mode 100644 index 000000000..5f8e7d06c --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61794.c @@ -0,0 +1,12 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f" } */ + +#include + +__m512i zmm; +__m128i xmm; + +void test (void) +{ + xmm = _mm512_extracti32x4_epi32 (zmm, 0); +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61801.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61801.c new file mode 100644 index 000000000..d0d08ccb4 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61801.c @@ -0,0 +1,21 @@ +/* PR rtl-optimization/61801 */ +/* { dg-do compile } */ +/* { dg-options "-Os -fcompare-debug" } */ + +int a, c; +int bar (void); +void baz (void); + +void +foo (void) +{ + int d; + if (bar ()) + { + int e; + baz (); + asm volatile ("" : "=a" (e) : "0" (a), "i" (0)); + d = e; + } + c = d; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61855.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61855.c new file mode 100644 index 000000000..09c62aebb --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61855.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f" } */ + +#include + +__m512 test (__m512 x) +{ + return _mm512_getmant_ps(x, _MM_MANT_NORM_1_2, _MM_MANT_SIGN_zero); +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61923.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61923.c new file mode 100644 index 000000000..458158cc6 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr61923.c @@ -0,0 +1,36 @@ +/* PR debug/61923 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -fcompare-debug" } */ + +typedef struct +{ + struct + { + struct + { + char head; + } tickets; + }; +} arch_spinlock_t; +struct ext4_map_blocks +{ + int m_lblk; + int m_len; + int m_flags; +}; +int ext4_da_map_blocks_ei_0; +void fn1 (int p1, struct ext4_map_blocks *p2) +{ + int ret; + if (p2->m_flags) + { + ext4_da_map_blocks_ei_0++; + arch_spinlock_t *lock; + switch (sizeof *&lock->tickets.head) + case 1: + asm("" : "+m"(*&lock->tickets.head) : ""(0)); + __asm__(""); + ret = 0; + } + fn2 (p2->m_lblk, p2->m_len); +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/xop-imul64-vector.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/xop-imul64-vector.c index 382677e60..97ef3935a 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/xop-imul64-vector.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/xop-imul64-vector.c @@ -33,4 +33,3 @@ int main () /* { dg-final { scan-assembler "vpmulld" } } */ /* { dg-final { scan-assembler "vphadddq" } } */ -/* { dg-final { scan-assembler "vpmacsdql" } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/mips/pr62030-octeon.c b/gcc-4.9/gcc/testsuite/gcc.target/mips/pr62030-octeon.c new file mode 100644 index 000000000..5e3d3b3b6 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/mips/pr62030-octeon.c @@ -0,0 +1,50 @@ +/* { dg-do run } */ +/* { dg-options "-march=octeon" } */ + +extern void abort (void); + +struct node +{ + struct node *next; + struct node *prev; +}; + +struct node node; + +struct head +{ + struct node *first; +}; + +struct head heads[5]; + +int k = 2; + +struct head *head = &heads[2]; + +static int __attribute__((noinline)) +foo (void) +{ + node.prev = (void *)head; + head->first = &node; + + struct node *n = head->first; + struct head *h = &heads[k]; + struct node *next = n->next; + + if (n->prev == (void *)h) + h->first = next; + else + n->prev->next = next; + + n->next = h->first; + return n->next == &node; +} + +int +main (void) +{ + if (foo ()) + abort (); + return 0; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-1.c b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-1.c new file mode 100644 index 000000000..6e0d54883 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-1.c @@ -0,0 +1,12 @@ +/* { dg-do compile { target { powerpc*-*-linux* && lp64 } } } */ +/* { dg-options "-mabi=elfv2" } */ + +struct f8 + { + float x[8]; + }; + +void test (struct f8 a, struct f8 b) /* { dg-message "note: the ABI of passing homogeneous float aggregates will change" } */ +{ +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-2.c b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-2.c new file mode 100644 index 000000000..c4820e925 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-2.c @@ -0,0 +1,11 @@ +/* { dg-do compile { target { powerpc*-*-linux* && lp64 } } } */ + +struct test + { + long a __attribute__((aligned (16))); + }; + +void test (struct test a) /* { dg-message "note: the ABI of passing aggregates with 16-byte alignment will change" } */ +{ +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-3.c b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-3.c new file mode 100644 index 000000000..830de6bcc --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-3.c @@ -0,0 +1,9 @@ +/* { dg-do compile { target { powerpc*-*-linux* && lp64 } } } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-maltivec" } */ + +struct test + { + int a __attribute__((vector_size (8))); + }; /* { dg-message "note: the layout of aggregates containing vectors with 8-byte alignment will change" } */ + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/pr60102.c b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/pr60102.c new file mode 100644 index 000000000..d32e41d68 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/pr60102.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-skip-if "not an SPE target" { ! powerpc_spe_nocache } { "*" } { "" } } */ +/* { dg-options "-mcpu=8548 -mspe -mabi=spe -g -mfloat-gprs=double" } */ + +double +pr60102 (double x, int m) +{ + double y; + y = m % 2 ? x : 1; + return y; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/sh/pr61996.c b/gcc-4.9/gcc/testsuite/gcc.target/sh/pr61996.c new file mode 100644 index 000000000..51a5f929d --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/sh/pr61996.c @@ -0,0 +1,12 @@ +/* Check that the option -musermode has no effect on targets that do not + support user/privileged mode and that it does not interfere with option + -matomic-model=soft-imask. */ +/* { dg-do compile } */ +/* { dg-options "-matomic-model=soft-imask" } */ +/* { dg-skip-if "" { "sh*-*-*" } { "*"} { "-m1*" "-m2*" } } */ + +int +test (void) +{ + return 0; +} diff --git a/gcc-4.9/gcc/testsuite/gfortran.dg/array_assignment_5.f90 b/gcc-4.9/gcc/testsuite/gfortran.dg/array_assignment_5.f90 new file mode 100644 index 000000000..6d585270c --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gfortran.dg/array_assignment_5.f90 @@ -0,0 +1,16 @@ +! { dg-do run } +! { dg-options "-ffrontend-optimize" } +! PR 62214 - this used to give the wrong result. +! Original test case by Oliver Fuhrer +PROGRAM test + IMPLICIT NONE + CHARACTER(LEN=20) :: fullNames(2) + CHARACTER(LEN=255) :: pathName + CHARACTER(LEN=5) :: fileNames(2) + + pathName = "/dir1/dir2/" + fileNames = (/ "file1", "file2" /) + fullNames = SPREAD(TRIM(pathName),1,2) // fileNames + if (fullNames(1) /= '/dir1/dir2/file1' .or. & + & fullnames(2) /= '/dir1/dir2/file2') call abort +END PROGRAM test diff --git a/gcc-4.9/gcc/testsuite/gfortran.dg/array_constructor_49.f90 b/gcc-4.9/gcc/testsuite/gfortran.dg/array_constructor_49.f90 new file mode 100644 index 000000000..6a198d676 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gfortran.dg/array_constructor_49.f90 @@ -0,0 +1,13 @@ +! { dg-do run } +! { dg-options "-ffrontend-optimize -fdump-tree-original" } +! PR 62106 - this used to give wrong results because +! of a bogus extra temporary variable. +! Original test case by Martien Hulsen +program t + integer :: ndim=2, ndfp=4, i + character (len=8) :: line + write (unit=line,fmt='(4I2)'), (/ ( i, i = 1, ndfp ) /) + ndim + if (line /= ' 3 4 5 6') call abort +end program t +! { dg-final { scan-tree-dump-times "__var" 3 "original" } } +! { dg-final { cleanup-tree-dump "original" } } diff --git a/gcc-4.9/gcc/testsuite/gfortran.dg/bessel_7.f90 b/gcc-4.9/gcc/testsuite/gfortran.dg/bessel_7.f90 index 7e63ed1e8..c6b5f7407 100644 --- a/gcc-4.9/gcc/testsuite/gfortran.dg/bessel_7.f90 +++ b/gcc-4.9/gcc/testsuite/gfortran.dg/bessel_7.f90 @@ -16,7 +16,7 @@ implicit none real,parameter :: values(*) = [0.0, 0.5, 1.0, 0.9, 1.8,2.0,3.0,4.0,4.25,8.0,34.53, 475.78] real,parameter :: myeps(size(values)) = epsilon(0.0) & - * [2, 3, 4, 5, 8, 2, 12, 6, 7, 6, 36, 168 ] + * [2, 3, 4, 5, 8, 2, 13, 6, 7, 6, 36, 168 ] ! The following is sufficient for me - the values above are a bit ! more tolerant ! * [0, 0, 0, 3, 3, 0, 9, 0, 2, 1, 22, 130 ] diff --git a/gcc-4.9/gcc/testsuite/gfortran.dg/dependency_44.f90 b/gcc-4.9/gcc/testsuite/gfortran.dg/dependency_44.f90 new file mode 100644 index 000000000..ebfeec64c --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gfortran.dg/dependency_44.f90 @@ -0,0 +1,36 @@ +! { dg-do run } +! Tests fix for PR61780 in which the loop reversal mechanism was +! not accounting for the first index being an element so that no +! loop in this dimension is created. +! +! Contributed by Manfred Tietze on clf. +! +program prgm3 + implicit none + integer, parameter :: n = 10, k = 3 + integer :: i, j + integer, dimension(n,n) :: y + integer :: res1(n), res2(n) + +1 format(10i5) + +!initialize + do i=1,n + do j=1,n + y(i,j) = n*i + j + end do + end do + res2 = y(k,:) + +!shift right + y(k,4:n) = y(k,3:n-1) + y(k,3) = 0 + res1 = y(k,:) + y(k,:) = res2 + y(k,n:4:-1) = y(k,n-1:3:-1) + y(k,3) = 0 + res2 = y(k,:) +! print *, res1 +! print *, res2 + if (any(res1 /= res2)) call abort () +end program prgm3 diff --git a/gcc-4.9/gcc/testsuite/gfortran.dg/dot_product_3.f90 b/gcc-4.9/gcc/testsuite/gfortran.dg/dot_product_3.f90 new file mode 100644 index 000000000..6e11556ee --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gfortran.dg/dot_product_3.f90 @@ -0,0 +1,15 @@ +! { dg-do compile } +! { dg-options "-fdump-tree-original" } +! PR 61999 - this used to ICE. +! Original test case by A. Kasahara +program main + use, intrinsic:: iso_fortran_env, only: output_unit + + implicit none + + write(output_unit, *) dot_product([1, 2], [2.0, 3.0]) + + stop +end program main +! { dg-final { scan-tree-dump-times "8\\.0e\\+0" 1 "original" } } +! { dg-final { cleanup-tree-dump "original" } } diff --git a/gcc-4.9/gcc/testsuite/gfortran.dg/gomp/pr62131.f90 b/gcc-4.9/gcc/testsuite/gfortran.dg/gomp/pr62131.f90 new file mode 100644 index 000000000..8e88cd70b --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gfortran.dg/gomp/pr62131.f90 @@ -0,0 +1,19 @@ +! PR fortran/62131 +! { dg-do compile } +! { dg-options "-fopenmp" } + +program pr62131 + integer,allocatable :: nerrs(:,:) + allocate(nerrs(10,10)) + nerrs(:,:) = 0 +!$omp parallel do + do k=1,10 + call uperrs(k,1) + end do +contains + subroutine uperrs(i,io) + integer,intent(in) :: i,io +!$omp atomic + nerrs(i,io)=nerrs(i,io)+1 + end subroutine +end diff --git a/gcc-4.9/gcc/testsuite/gfortran.dg/pr45636.f90 b/gcc-4.9/gcc/testsuite/gfortran.dg/pr45636.f90 index ee7cf3863..c80dda45b 100644 --- a/gcc-4.9/gcc/testsuite/gfortran.dg/pr45636.f90 +++ b/gcc-4.9/gcc/testsuite/gfortran.dg/pr45636.f90 @@ -10,5 +10,5 @@ program main b = y call sub(a, b) end program main -! { dg-final { scan-tree-dump-times "memset" 0 "forwprop2" { xfail { mips*-*-* && { ! nomips16 } } } } } +! { dg-final { scan-tree-dump-times "memset" 0 "forwprop2" { xfail { { hppa*-*-* && { ! lp64 } } || { mips*-*-* && { ! nomips16 } } } } } } ! { dg-final { cleanup-tree-dump "forwprop2" } } diff --git a/gcc-4.9/gcc/testsuite/gfortran.dg/realloc_on_assign_24.f90 b/gcc-4.9/gcc/testsuite/gfortran.dg/realloc_on_assign_24.f90 new file mode 100644 index 000000000..6f88c2bf2 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gfortran.dg/realloc_on_assign_24.f90 @@ -0,0 +1,10 @@ +! { dg-do compile } +! PR 62142 - this used to segfault +! Original test case by Ondřej Čertík . +program test_segfault + implicit none + real, allocatable :: X(:) + allocate (x(1)) + x = 1. + X = floor(X) +end program diff --git a/gcc-4.9/gcc/testsuite/gnat.dg/pack20.adb b/gcc-4.9/gcc/testsuite/gnat.dg/pack20.adb new file mode 100644 index 000000000..5ec3e93a6 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gnat.dg/pack20.adb @@ -0,0 +1,9 @@ +package body Pack20 is + + procedure Proc (A : Rec) is + Local : Rec := A; + begin + Modify (Local.Fixed); + end; + +end Pack20; diff --git a/gcc-4.9/gcc/testsuite/gnat.dg/pack20.ads b/gcc-4.9/gcc/testsuite/gnat.dg/pack20.ads new file mode 100644 index 000000000..ddfb9d8a4 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gnat.dg/pack20.ads @@ -0,0 +1,15 @@ +-- { dg-do compile } + +with Pack20_Pkg; use Pack20_Pkg; + +package Pack20 is + + type Rec is record + Simple_Type : Integer; + Fixed : String_Ptr; + end record; + pragma Pack (Rec); + + procedure Proc (A : Rec); + +end Pack20; diff --git a/gcc-4.9/gcc/testsuite/gnat.dg/pack20_pkg.ads b/gcc-4.9/gcc/testsuite/gnat.dg/pack20_pkg.ads new file mode 100644 index 000000000..8f3c554a3 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gnat.dg/pack20_pkg.ads @@ -0,0 +1,7 @@ +package Pack20_Pkg is + + type String_Ptr is access all String; + + procedure Modify (Fixed : in out String_Ptr); + +end Pack20_Pkg; diff --git a/gcc-4.9/gcc/testsuite/lib/target-supports.exp b/gcc-4.9/gcc/testsuite/lib/target-supports.exp index 902771bd5..0e226a2d6 100644 --- a/gcc-4.9/gcc/testsuite/lib/target-supports.exp +++ b/gcc-4.9/gcc/testsuite/lib/target-supports.exp @@ -2652,13 +2652,16 @@ proc check_effective_target_arm_v8_neon_ok_nocache { } { if { [check_effective_target_arm32] } { foreach flags {"" "-mfloat-abi=softfp" "-mfpu=neon-fp-armv8" "-mfpu=neon-fp-armv8 -mfloat-abi=softfp"} { if { [check_no_compiler_messages_nocache arm_v8_neon_ok object { + #if __ARM_ARCH < 8 + #error not armv8 or later + #endif #include "arm_neon.h" void foo () { __asm__ volatile ("vrintn.f32 q0, q0"); } - } "$flags"] } { + } "$flags -march=armv8-a"] } { set et_arm_v8_neon_flags $flags return 1 } @@ -2835,6 +2838,7 @@ proc check_effective_target_arm_thumb1_ok { } { #if !defined(__arm__) || !defined(__thumb__) || defined(__thumb2__) #error FOO #endif + int foo (int i) { return i; } } "-mthumb"] } @@ -2846,6 +2850,7 @@ proc check_effective_target_arm_thumb2_ok { } { #if !defined(__thumb2__) #error FOO #endif + int foo (int i) { return i; } } "-mthumb"] } -- cgit v1.2.3