diff options
Diffstat (limited to 'gcc/testsuite')
34 files changed, 651 insertions, 71 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 95cddc46651..7a851a34413 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,109 @@ +2009-10-15 Michael Meissner <meissner@linux.vnet.ibm.com> + + PR target/23983 + * gcc.target/powerpc/altivec-4.c (b): Make sure altivec builtin + result used. + * g++.dg/ext/altivec-2.C (main): Ditto. + +2009-10-15 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * lib/target-supports.exp (add_options_for_bind_pic_locally): New. + * gcc.dg/tree-ssa/ipa-cp-1.c: Bind pic locally. + +2009-10-15 Richard Guenther <rguenther@suse.de> + + PR lto/41669 + * gcc.dg/lto/20091015-1_0.c: New testcase. + * gcc.dg/lto/20091015-1_1.c: Likewise. + * gcc.dg/lto/20091015-1_2.c: Likewise. + * gcc.dg/lto/20091015-1_a.h: Likewise. + * gcc.dg/lto/20091015-1_b.h: Likewise. + +2009-10-15 Steve Ellcey <sje@cup.hp.com> + + * gcc.dg/torture/pr41555.c: Add -std=c99 option. + +2009-10-14 Daniel Gutson <dgutson@codesourcery.com> + + * gcc.target/arm/neon/vfp-shift-a2t2.c: New test case. + +2009-10-14 Jakub Jelinek <jakub@redhat.com> + + * obj-c++.dg/layout-1.mm: Don't xfail dg-bogus on lp64, change + line from 1 to 0. + * obj-c++.dg/bitfield-1.mm: Likewise. + * obj-c++.dg/bitfield-4.mm: Likewise. + +2009-10-14 Richard Guenther <rguenther@suse.de> + + PR lto/41173 + * gcc.dg/lto/20091014-1_0.c: New testcase. + +2009-10-14 Jakub Jelinek <jakub@redhat.com> + + PR testsuite/41707 + * g++.dg/plugin/attribute_plugin-test-1.C: Expect the first + warning on line 0 instead of 1. + +2009-10-14 Richard Guenther <rguenther@suse.de> + + PR lto/41521 + * gfortran.dg/lto/pr41521_0.f90: New testcase. + * gfortran.dg/lto/pr41521_1.f90: Likewise. + +2009-10-14 Jakub Jelinek <jakub@redhat.com> + + PR preprocessor/41543 + * gcc.dg/debug/dwarf2/pr41543.c: New test. + + PR debug/41695 + * gcc.dg/debug/dwarf2/pr41695.c: New test. + +2009-10-14 Uros Bizjak <ubizjak@gmail.com> + + * gcc.target/i386/i386.exp (check_effective_target_ms_hook_prologue): + New procedure. + * gcc.target/i386/ms_hook_prologue.c: Check for ms_hook_prologue + effective target. + +2009-10-14 Jason Merrill <jason@redhat.com> + + PR c++/39866 + * g++.dg/cpp0x/defaulted14.C: New. + +2009-10-14 Larry Evans <cppljevans@suddenlink.net> + + * g++.dg/cpp0x/vt-40092.C: New. + +2009-10-14 Alexandre Oliva <aoliva@redhat.com> + + * gcc.dg/guality/pr41616-1.c: Drop -O2. + * gcc.dg/guality/pr41447-1.c: Likewise. Name main. + +2009-10-13 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * gfortran.dg/complex_intrinsic_8.f90: New test. + +2009-10-13 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * gcc.dg/torture/builtin-math-6.c: Test complex "arc" functions. + * lib/target-supports.exp (check_effective_target_mpc_arc): New. + +2009-10-14 Hans-Peter Nilsson <hp@axis.com> + + PR target/38948 + * gcc.dg/torture/pr38948.c: New test. + +2009-10-13 Steve Ellcey <sje@cup.hp.com> + + * gfortran.dg/vect/fast-math-pr38968.f90: Add timeout. + +2009-10-13 Janus Weil <janus@gcc.gnu.org> + + PR fortran/41581 + * gfortran.dg/class_allocate_2.f03: Modified. + * gfortran.dg/class_allocate_3.f03: New test case. + 2009-10-13 Richard Guenther <rguenther@suse.de> PR lto/41668 @@ -68,7 +174,7 @@ 2009-10-12 Dodji Seketeli <dodji@redhat.com> PR c++/41570 - * gcc/testsuite/g++.dg/debug/dwarf2/template-params-7.C: New test. + * g++.dg/debug/dwarf2/template-params-7.C: New test. 2009-10-12 Alexandre Oliva <aoliva@redhat.com> @@ -743,56 +849,55 @@ 2009-09-29 Harsha Jagasia <harsha.jagasia@amd.com> - * gcc.target/i386/fma4-check.h - * gcc.target/i386/fma4-fma.c - * gcc.target/i386/fma4-maccXX.c - * gcc.target/i386/fma4-msubXX.c - * gcc.target/i386/fma4-nmaccXX.c - * gcc.target/i386/fma4-nmsubXX.c - * gcc.target/i386/fma4-vector.c - * gcc.target/i386/fma4-256-maccXX.c - * gcc.target/i386/fma4-256-msubXX.c - * gcc.target/i386/fma4-256-nmaccXX.c - * gcc.target/i386/fma4-256-nmsubXX.c - * gcc.target/i386/fma4-256-vector.c - * gcc.target/i386/funcspec-2.c: New file. - - * gcc.target/i386/funcspec-4.c: Test error conditions - related to FMA4. - - * gcc.target/i386/funcspec-5.c - * gcc.target/i386/funcspec-6.c - * gcc.target/i386/funcspec-8.c: Add FMA4. + * gcc.target/i386/fma4-check.h: New file. + * gcc.target/i386/fma4-fma.c: Ditto. + * gcc.target/i386/fma4-maccXX.c: Ditto. + * gcc.target/i386/fma4-msubXX.c: Ditto. + * gcc.target/i386/fma4-nmaccXX.c: Ditto. + * gcc.target/i386/fma4-nmsubXX.c: Ditto. + * gcc.target/i386/fma4-vector.c: Ditto. + * gcc.target/i386/fma4-256-maccXX.c: Ditto. + * gcc.target/i386/fma4-256-msubXX.c: Ditto. + * gcc.target/i386/fma4-256-nmaccXX.c: Ditto. + * gcc.target/i386/fma4-256-nmsubXX.c: Ditto. + * gcc.target/i386/fma4-256-vector.c: Ditto. + * gcc.target/i386/funcspec-2.c: Ditto. + + * gcc.target/i386/funcspec-4.c: Test error conditions related to FMA4. + + * gcc.target/i386/funcspec-5.c: Add FMA4. + * gcc.target/i386/funcspec-6.c: Ditto. + * gcc.target/i386/funcspec-8.c: Ditto. * gcc.target/i386/funcspec-9.c: New file. * gcc.target/i386/i386.exp: Add check_effective_target_fma4. - * gcc.target/i386/isa-10.c - * gcc.target/i386/isa-11.c - * gcc.target/i386/isa-12.c - * gcc.target/i386/isa-13.c - * gcc.target/i386/isa-2.c - * gcc.target/i386/isa-3.c - * gcc.target/i386/isa-4.c - * gcc.target/i386/isa-7.c - * gcc.target/i386/isa-8.c - * gcc.target/i386/isa-9.c: New file. - - * gcc.target/i386/isa-14.c - * gcc.target/i386/isa-1.c - * gcc.target/i386/isa-5.c - * gcc.target/i386/isa-6.c: Add FMA4. - - * gcc.target/i386/sse-12.c - * gcc.target/i386/sse-13.c - * gcc.target/i386/sse-14.c - * gcc.target/i386/sse-22.c: New file. - - * g++.dg/other/i386-2.C - * g++.dg/other/i386-3.C - * g++.dg/other/i386-5.C - * g++.dg/other/i386-6.C: Add -mfma4 in dg-options. + * gcc.target/i386/isa-10.c: New file. + * gcc.target/i386/isa-11.c: Ditto. + * gcc.target/i386/isa-12.c: Ditto. + * gcc.target/i386/isa-13.c: Ditto. + * gcc.target/i386/isa-2.c: Ditto. + * gcc.target/i386/isa-3.c: Ditto. + * gcc.target/i386/isa-4.c: Ditto. + * gcc.target/i386/isa-7.c: Ditto. + * gcc.target/i386/isa-8.c: Ditto. + * gcc.target/i386/isa-9.c: Ditto. + + * gcc.target/i386/isa-14.c: Add FMA4. + * gcc.target/i386/isa-1.c: Ditto. + * gcc.target/i386/isa-5.c: Ditto. + * gcc.target/i386/isa-6.c: Ditto. + + * gcc.target/i386/sse-12.c: New file. + * gcc.target/i386/sse-13.c: Ditto. + * gcc.target/i386/sse-14.c: Ditto. + * gcc.target/i386/sse-22.c: Ditto. + + * g++.dg/other/i386-2.C: Add -mfma4 to dg-options. + * g++.dg/other/i386-3.C: Ditto. + * g++.dg/other/i386-5.C: Ditto. + * g++.dg/other/i386-6.C: Ditto. 2009-09-29 H.J. Lu <hongjiu.lu@intel.com> @@ -815,13 +920,14 @@ 2009-09-29 Harsha Jagasia <harsha.jagasia@amd.com> * gcc.target/i386/i386.exp: Remove check_effective_target_sse5. - * gcc.target/i386/isa-1.c - * gcc.target/i386/isa-5.c - * gcc.target/i386/isa-6.c: Remove SSE5. - * gcc.target/i386/funcspec-4.c: Remove error conditions related to SSE5. - * gcc.target/i386/avx-1.c - * gcc.target/i386/avx-2.c - * gcc.target/i386/sse-23.c: Remove comments to mmintrin-common.h. + * gcc.target/i386/isa-1.c: Remove SSE5. + * gcc.target/i386/isa-5.c: Ditto. + * gcc.target/i386/isa-6.c: Ditto. + * gcc.target/i386/funcspec-4.c: Remove error conditions + related to SSE5. + * gcc.target/i386/avx-1.c: Remove comments to mmintrin-common.h. + * gcc.target/i386/avx-2.c: Ditto. + * gcc.target/i386/sse-23.c: Ditto. * gcc.target/i386/funcspec-9.c: Delete. 2009-09-29 Jakub Jelinek <jakub@redhat.com> @@ -888,7 +994,7 @@ 2009-09-27 Richard Henderson <rth@redhat.com> * gcc.c-torture/compile/pr41469.c: Add -fexceptions. - * testsuite/gcc.dg/tree-ssa/pr41469-1.c: New. + * gcc.dg/tree-ssa/pr41469-1.c: New. 2009-09-26 Andreas Schwab <schwab@linux-m68k.org> diff --git a/gcc/testsuite/g++.dg/cpp0x/defaulted14.C b/gcc/testsuite/g++.dg/cpp0x/defaulted14.C new file mode 100644 index 00000000000..235e646780a --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/defaulted14.C @@ -0,0 +1,18 @@ +// PR c++/39866 +// { dg-options "-std=c++0x" } + +struct A { + A& operator=(const A&) = delete; // { dg-bogus "" } + + void operator=(int) {} // { dg-message "" } + void operator=(char) {} // { dg-message "" } +}; + +struct B {}; + +int main() +{ + A a; + a = B(); // { dg-error "no match" } + a = 1.0; // { dg-error "ambiguous" } +} diff --git a/gcc/testsuite/g++.dg/cpp0x/vt-40092.C b/gcc/testsuite/g++.dg/cpp0x/vt-40092.C new file mode 100644 index 00000000000..063ed7e16eb --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/vt-40092.C @@ -0,0 +1,21 @@ +// { dg-do "compile" } +// { dg-options "-std=c++0x" } + +template <typename... Types> struct package {}; + +template <int ArgGen> struct wrapper_gen {}; + +template <int ArgNest> struct wrapper_nest +{ + typedef wrapper_gen<ArgNest> type_nest; +}; + +template <int... ArgPack> +struct wrapper_pack +{ + typedef package<wrapper_gen <ArgPack>...> type_pack; + // incorrect error: expansion pattern 'wrapper_gen<ArgNest>' + // contains no argument packs +}; + + diff --git a/gcc/testsuite/g++.dg/ext/altivec-2.C b/gcc/testsuite/g++.dg/ext/altivec-2.C index 299693694f6..1185a79e5ec 100644 --- a/gcc/testsuite/g++.dg/ext/altivec-2.C +++ b/gcc/testsuite/g++.dg/ext/altivec-2.C @@ -7,6 +7,8 @@ #include <altivec.h> +vector unsigned char use_lvsl; + int main (int argc, const char * argv[]) { int i = 0; @@ -17,7 +19,7 @@ int main (int argc, const char * argv[]) vec_dst(&cv, i, 0); v = vec_ld(0, &cv); v = vec_lde(0, &cf); - vec_lvsl(0, &cf); + use_lvsl = vec_lvsl(0, &cf); return 0; } diff --git a/gcc/testsuite/g++.dg/opt/eh5.C b/gcc/testsuite/g++.dg/opt/eh5.C new file mode 100644 index 00000000000..3557ab2aa54 --- /dev/null +++ b/gcc/testsuite/g++.dg/opt/eh5.C @@ -0,0 +1,43 @@ +// PR 41377 +// { dg-do compile } +// { dg-options "-O3" } + +struct A +{ + bool foo(int*) const; +} a; + +struct B {}; + +struct B1 : B +{ + bool (A::*pmf)(int*) const; + const A* pa; + + B1() : pmf(&A::foo), pa(&a) {} + bool operator()() const { return (pa->*pmf)(new int); } +}; + +struct B2 : B +{ + B1 b1; + + B2(const B1& _b1) : b1(_b1) {} + bool operator()() const { return b1(); } +}; + +template<int> struct C +{ + void bar(B2 b2) { while (b2()) ; } + C() { bar(B2(B1())); } +}; + +void baz(int i) +{ + switch(i) + { + case 0: new C<0>; + case 1: new C<1>; + case 2: new C<2>; + } +} diff --git a/gcc/testsuite/g++.dg/plugin/attribute_plugin-test-1.C b/gcc/testsuite/g++.dg/plugin/attribute_plugin-test-1.C index abb1328670a..1ca321d1fde 100644 --- a/gcc/testsuite/g++.dg/plugin/attribute_plugin-test-1.C +++ b/gcc/testsuite/g++.dg/plugin/attribute_plugin-test-1.C @@ -1,4 +1,4 @@ -// { dg-warning "Callback to register attributes" } +// { dg-warning "Callback to register attributes" "" { target *-*-* } 0 } void normal_func (char c, char c2); void normal_func (char __attribute__((user("param"))) c, char); diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/pr41543.c b/gcc/testsuite/gcc.dg/debug/dwarf2/pr41543.c new file mode 100644 index 00000000000..02683960bdb --- /dev/null +++ b/gcc/testsuite/gcc.dg/debug/dwarf2/pr41543.c @@ -0,0 +1,14 @@ +/* PR preprocessor/41543 */ +/* { dg-do compile } */ +/* { dg-options "-save-temps -g -O0 -dA -fno-merge-debug-strings" } */ + +#include <stdarg.h> + +int +foo (va_list ap) +{ + return va_arg (ap, int); +} + +/* { dg-final { scan-assembler-not "DW_AT_decl_file\[^\\r\\n\]*\(pr41543\.i\)" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/pr41695.c b/gcc/testsuite/gcc.dg/debug/dwarf2/pr41695.c new file mode 100644 index 00000000000..d61b5a293f5 --- /dev/null +++ b/gcc/testsuite/gcc.dg/debug/dwarf2/pr41695.c @@ -0,0 +1,18 @@ +/* PR debug/41695 */ +/* { dg-do compile } */ +/* { dg-options "-g -O2 -dA -fno-merge-debug-strings" } */ + +int bar (int); + +void +foo (void) +{ + int b = 0; + b = bar (b); + b = bar (b); + b = bar (b); + b = bar (b); + bar (b); +} + +/* { dg-final { scan-assembler-not "LVL(\[0-9\]+)-\[^1\]\[^\\r\\n\]*Location list begin address\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*LVL\\1-1-" } } */ diff --git a/gcc/testsuite/gcc.dg/guality/pr41447-1.c b/gcc/testsuite/gcc.dg/guality/pr41447-1.c index 675b0304661..9bb28abe37c 100644 --- a/gcc/testsuite/gcc.dg/guality/pr41447-1.c +++ b/gcc/testsuite/gcc.dg/guality/pr41447-1.c @@ -1,11 +1,12 @@ /* { dg-do run { xfail *-*-* } } */ -/* { dg-options "-g -O2" } */ +/* { dg-options "-g" } */ #include "guality.h" int a; -int foo() +int +main (int argc, char *argv[]) { int tmp = a; int tmp2 = a; diff --git a/gcc/testsuite/gcc.dg/guality/pr41616-1.c b/gcc/testsuite/gcc.dg/guality/pr41616-1.c index c38d76b7c9e..24f64ab083d 100644 --- a/gcc/testsuite/gcc.dg/guality/pr41616-1.c +++ b/gcc/testsuite/gcc.dg/guality/pr41616-1.c @@ -1,5 +1,5 @@ /* { dg-do run { xfail *-*-* } } */ -/* { dg-options "-g -O2" } */ +/* { dg-options "-g" } */ #include "guality.h" diff --git a/gcc/testsuite/gcc.dg/lto/20091014-1_0.c b/gcc/testsuite/gcc.dg/lto/20091014-1_0.c new file mode 100644 index 00000000000..241dddbf81f --- /dev/null +++ b/gcc/testsuite/gcc.dg/lto/20091014-1_0.c @@ -0,0 +1,4 @@ +/* { dg-lto-do link } */ +/* { dg-lto-options {{-fPIC -shared -flto}} } */ + +/* Empty file. See PR41173. */ diff --git a/gcc/testsuite/gcc.dg/lto/20091015-1_0.c b/gcc/testsuite/gcc.dg/lto/20091015-1_0.c new file mode 100644 index 00000000000..f60e7d16a7e --- /dev/null +++ b/gcc/testsuite/gcc.dg/lto/20091015-1_0.c @@ -0,0 +1,5 @@ +/* { dg-lto-do link } */ +/* { dg-lto-options {{-fPIC -shared -O2 -flto} {-fPIC -shared -O2 -fwhopr}} } */ + +#include "20091015-1_b.h" +void diagnostic_initialize (FILE **stream) { *stream = stderr; } diff --git a/gcc/testsuite/gcc.dg/lto/20091015-1_1.c b/gcc/testsuite/gcc.dg/lto/20091015-1_1.c new file mode 100644 index 00000000000..c000518f45d --- /dev/null +++ b/gcc/testsuite/gcc.dg/lto/20091015-1_1.c @@ -0,0 +1,4 @@ +#include "20091015-1_a.h" +#include "20091015-1_b.h" +void ggc_print_common_statistics (FILE *stream) { +} diff --git a/gcc/testsuite/gcc.dg/lto/20091015-1_2.c b/gcc/testsuite/gcc.dg/lto/20091015-1_2.c new file mode 100644 index 00000000000..fd10680866a --- /dev/null +++ b/gcc/testsuite/gcc.dg/lto/20091015-1_2.c @@ -0,0 +1,5 @@ +#include "20091015-1_a.h" +#include "20091015-1_b.h" +void debug_optab_libfuncs (void) { +foo (stderr, 4 ); +} diff --git a/gcc/testsuite/gcc.dg/lto/20091015-1_a.h b/gcc/testsuite/gcc.dg/lto/20091015-1_a.h new file mode 100644 index 00000000000..61e56c9a95f --- /dev/null +++ b/gcc/testsuite/gcc.dg/lto/20091015-1_a.h @@ -0,0 +1,2 @@ +struct _IO_FILE { int _flags; +}; diff --git a/gcc/testsuite/gcc.dg/lto/20091015-1_b.h b/gcc/testsuite/gcc.dg/lto/20091015-1_b.h new file mode 100644 index 00000000000..88139027467 --- /dev/null +++ b/gcc/testsuite/gcc.dg/lto/20091015-1_b.h @@ -0,0 +1,2 @@ +typedef struct _IO_FILE FILE; +extern struct _IO_FILE *stderr; diff --git a/gcc/testsuite/gcc.dg/torture/builtin-math-6.c b/gcc/testsuite/gcc.dg/torture/builtin-math-6.c index 1bf367a5deb..097a8c25d37 100644 --- a/gcc/testsuite/gcc.dg/torture/builtin-math-6.c +++ b/gcc/testsuite/gcc.dg/torture/builtin-math-6.c @@ -6,7 +6,7 @@ Origin: Kaveh R. Ghazi, January 28, 2009. */ /* { dg-do link } */ -/* { dg-require-effective-target mpc_pow } */ +/* { dg-require-effective-target mpc_arc } */ /* All references to link_error should go away at compile-time. The first number is the line number and the second is the value number @@ -180,9 +180,48 @@ extern void link_error(int, int); int main (void) { + TESTIT_COMPLEX (1, cacos, 1, CONJ(0)); + TESTIT_COMPLEX_R (1, cacos, -1, CONJ(3.141593F)); + TESTIT_COMPLEX (1, cacos, CONJ(1), 0); + TESTIT_COMPLEX_R (1, cacos, CONJ(-1), 3.141593F); + TESTIT_COMPLEX_R_ALLNEG (cacos, 3.45678F + 2.34567FI, + 0.60971F - 2.11780FI, 2.531875F - 2.117800FI, + 0.60971F + 2.11780FI, 2.531875F + 2.117800FI); + + TESTIT_COMPLEX_ALLNEG (casin, 0, + 0, -CONJ(0), CONJ(0), CONJ(-0.F)); + TESTIT_COMPLEX_R_ALLNEG (casin, 3.45678F + 2.34567FI, + 0.96107F + 2.11780FI, -0.96107F + 2.11780FI, + 0.96107F - 2.11780FI, -0.96107F - 2.11780FI); + + TESTIT_COMPLEX_ALLNEG (catan, 0, + 0, -CONJ(0), CONJ(0), CONJ(-0.F)); + TESTIT_COMPLEX_R_ALLNEG (catan, 3.45678F + 2.34567FI, + 1.37188F + 0.12997FI, -1.37188F + 0.12997FI, + 1.37188F - 0.12997FI, -1.37188F - 0.12997FI); + + TESTIT_COMPLEX (1, cacosh, 1, 0); + TESTIT_COMPLEX_R (1, cacosh, -1, 3.141593FI); + TESTIT_COMPLEX (1, cacosh, CONJ(1), CONJ(0)); + TESTIT_COMPLEX_R (1, cacosh, CONJ(-1), CONJ(3.141593FI)); + TESTIT_COMPLEX_R_ALLNEG (cacosh, 3.45678F + 2.34567FI, + 2.11780F + 0.60971FI, 2.11780F + 2.531875FI, + 2.11780F - 0.60971FI, 2.11780F - 2.531875FI); + + TESTIT_COMPLEX_ALLNEG (casinh, 0, + 0, -CONJ(0), CONJ(0), CONJ(-0.F)); + TESTIT_COMPLEX_R_ALLNEG (casinh, 3.45678F + 2.34567FI, + 2.12836F + 0.58310FI, -2.12836F + 0.58310FI, + 2.12836F - 0.58310FI, -2.12836F - 0.58310FI); + + TESTIT_COMPLEX_ALLNEG (catanh, 0, + 0, -CONJ(0), CONJ(0), CONJ(-0.F)); + TESTIT_COMPLEX_R_ALLNEG (catanh, 3.45678F + 2.34567FI, + 0.19693F + 1.43190FI, -0.19693F + 1.43190FI, + 0.19693F - 1.43190FI, -0.19693F - 1.43190FI); + TESTIT_COMPLEX_ALLNEG (csin, 0, - 0, -0.F, - CONJ(0), CONJ(-0.F)); + 0, -0.F, CONJ(0), CONJ(-0.F)); TESTIT_COMPLEX_R_ALLNEG (csin, 3.45678F + 2.34567FI, -1.633059F - 4.917448FI, 1.633059F - 4.917448FI, -1.633059F + 4.917448FI, 1.633059F + 4.917448FI); @@ -219,8 +258,8 @@ int main (void) TESTIT_COMPLEX (1, clog, 1, 0); TESTIT_COMPLEX_R (1, clog, -1, 3.141593FI); - TESTIT_COMPLEX (1, clog, CONJ(1), CONJ(0)); /* Fails with mpc-0.6. */ - TESTIT_COMPLEX_R (1, clog, CONJ(-1), CONJ(3.141593FI)); /* Fails with mpc-0.6. */ + TESTIT_COMPLEX (1, clog, CONJ(1), CONJ(0)); + TESTIT_COMPLEX_R (1, clog, CONJ(-1), CONJ(3.141593FI)); TESTIT_COMPLEX_R_ALLNEG (clog, 3.45678F + 2.34567FI, 1.429713F + 0.596199FI, 1.429713F + 2.545394FI, 1.429713F - 0.596199FI, 1.429713F - 2.545394FI); diff --git a/gcc/testsuite/gcc.dg/torture/pr38948.c b/gcc/testsuite/gcc.dg/torture/pr38948.c new file mode 100644 index 00000000000..98ed493cbd7 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr38948.c @@ -0,0 +1,101 @@ +/* { dg-options "-fno-tree-sra" } */ +/* { dg-options "-fno-tree-sra -march=v32" { target cris-*-* } } */ +typedef unsigned char byte; +typedef unsigned int uint; +typedef int bool; +typedef struct gs_const_string_s +{ + const byte *data; +} +gs_const_string; +struct gs_matrix_s +{ + float xx, xy, yx, yy, tx, ty; +}; +typedef struct gs_matrix_s gs_matrix; +typedef long fixed; +typedef struct gs_fixed_point_s +{ + fixed x, y; +} +gs_fixed_point; +typedef struct gs_matrix_fixed_s +{ + int x; +} +gs_matrix_fixed; +static int +append_simple (const byte * glyph, const gs_matrix_fixed * pmat, void * ppath) +{ + int numContours = + (int) (((((uint) ((glyph)[0]) << 8) + (glyph)[1]) ^ 0x8000) - 0x8000); + const byte *pends = glyph + 10; + int code = 0; + { + uint i = 0; + uint np = 0; + gs_fixed_point pt = {0}; + uint reps = 0; + for (i = 0, np = 0; i < numContours; ++i) + { + bool move = ((bool) 1); + uint last_point = + (((uint) ((pends + i * 2)[0]) << 8) + (pends + i * 2)[1]); + int off_curve = 0; + gs_fixed_point cpoints[3]; + for (; np <= last_point; --reps, ++np) + { + if (move) + { + cpoints[0] = pt; + move = ((bool) 0); + } + else + { + switch (off_curve++) + { + default: + cpoints[2].x = ((cpoints[1].x + pt.x) / 2); + cpoints[2].y = ((cpoints[1].y + pt.y) / 2); + code = + gx_path_add_curve_notes (ppath, + ((cpoints[0].x + + 2 * cpoints[1].x) / 3), + ((cpoints[0].y + + 2 * cpoints[1].y) / 3), + ((2 * cpoints[1].x + + cpoints[2].x) / 3), + ((2 * cpoints[1].y + + cpoints[2].y) / 3), + cpoints[2].x, cpoints[2].y, + 0); + cpoints[0] = cpoints[2]; + case 0: + cpoints[1] = pt; + } + } + } + } + } +} +int +append_outline (uint glyph_index, const gs_matrix_fixed *pmat, void *ppath) +{ + gs_const_string glyph_string = {0}; + int numContours = 0; + numContours = + (int) (((((uint) ((glyph_string.data)[0]) << 8) + + (glyph_string.data)[1]) ^ 0x8000) - 0x8000); + if (numContours >= 0) + return append_simple (glyph_string.data, pmat, ppath); + { + uint flags = 0; + do + { + gs_matrix_fixed mat = {0}; + gs_matrix scale_mat = {0}; + gs_matrix_multiply (&scale_mat, (const gs_matrix *) &mat, (gs_matrix *) & mat); + } + while (flags & 32); + } +} diff --git a/gcc/testsuite/gcc.dg/torture/pr41555.c b/gcc/testsuite/gcc.dg/torture/pr41555.c index 219b34275b7..c201fda0cea 100644 --- a/gcc/testsuite/gcc.dg/torture/pr41555.c +++ b/gcc/testsuite/gcc.dg/torture/pr41555.c @@ -1,4 +1,5 @@ /* { dg-do run } */ +/* { dg-options "-std=c99" } */ #include <stdint.h> #include <limits.h> diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ipa-cp-1.c b/gcc/testsuite/gcc.dg/tree-ssa/ipa-cp-1.c index 5f126363124..b9c67a62609 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/ipa-cp-1.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/ipa-cp-1.c @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O3 -fdump-tree-optimized -fno-inline" } */ +/* { dg-add-options bind_pic_locally } */ + int very_long_function(int a) { diff --git a/gcc/testsuite/gcc.target/arm/neon/vfp-shift-a2t2.c b/gcc/testsuite/gcc.target/arm/neon/vfp-shift-a2t2.c new file mode 100644 index 00000000000..2541df84169 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/neon/vfp-shift-a2t2.c @@ -0,0 +1,27 @@ +/* Check that NEON vector shifts support immediate values == size. /* + +/* { dg-do compile } */ +/* { dg-require-effective-target arm_neon_ok } */ +/* { dg-options "-save-temps -mfpu=neon -mfloat-abi=softfp" } */ + +#include <arm_neon.h> + +uint16x8_t test_vshll_n_u8 (uint8x8_t a) +{ + return vshll_n_u8(a, 8); +} + +uint32x4_t test_vshll_n_u16 (uint16x4_t a) +{ + return vshll_n_u16(a, 16); +} + +uint64x2_t test_vshll_n_u32 (uint32x2_t a) +{ + return vshll_n_u32(a, 32); +} + +/* { dg-final { scan-assembler "vshll\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ +/* { dg-final { scan-assembler "vshll\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ +/* { dg-final { scan-assembler "vshll\.u8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/i386/i386.exp b/gcc/testsuite/gcc.target/i386/i386.exp index c7c6e12d1f4..3bfac8d6f71 100644 --- a/gcc/testsuite/gcc.target/i386/i386.exp +++ b/gcc/testsuite/gcc.target/i386/i386.exp @@ -24,6 +24,18 @@ if { ![istarget i?86*-*-*] && ![istarget x86_64-*-*] } then { # Load support procs. load_lib gcc-dg.exp +# Return 1 if attribute ms_hook_prologue is supported. +proc check_effective_target_ms_hook_prologue { } { + if { [check_effective_target_ilp32] + && [check_no_compiler_messages ms_hook_prologue object { + void __attribute__ ((__ms_hook_prologue__)) foo (); + } ""] } { + return 1 + } else { + return 0 + } +} + # Return 1 if ssse3 instructions can be compiled. proc check_effective_target_ssse3 { } { return [check_no_compiler_messages ssse3 object { diff --git a/gcc/testsuite/gcc.target/i386/ms_hook_prologue.c b/gcc/testsuite/gcc.target/i386/ms_hook_prologue.c index 19438e7583f..f945492dfde 100644 --- a/gcc/testsuite/gcc.target/i386/ms_hook_prologue.c +++ b/gcc/testsuite/gcc.target/i386/ms_hook_prologue.c @@ -1,7 +1,7 @@ /* Test that the ms_hook_prologue attribute generates the correct code. */ /* { dg-do run } */ -/* { dg-require-effective-target ilp32 } */ +/* { dg-require-effective-target ms_hook_prologue } */ /* { dg-options "-O2 -fomit-frame-pointer" } */ int __attribute__ ((__ms_hook_prologue__)) foo () diff --git a/gcc/testsuite/gcc.target/powerpc/altivec-4.c b/gcc/testsuite/gcc.target/powerpc/altivec-4.c index a5617e25b8a..2c78f6586d6 100644 --- a/gcc/testsuite/gcc.target/powerpc/altivec-4.c +++ b/gcc/testsuite/gcc.target/powerpc/altivec-4.c @@ -4,7 +4,7 @@ #define vector __attribute__((vector_size(16))) -static int vector x, y; +static int vector x, y, z; static vector signed int i,j; static vector signed short s,t; @@ -20,7 +20,7 @@ static int int1, int2; void b() { - __builtin_altivec_vadduwm (x, y); + z = __builtin_altivec_vadduwm (x, y); /* Make sure the predicates accept correct argument types. */ diff --git a/gcc/testsuite/gfortran.dg/class_allocate_2.f03 b/gcc/testsuite/gfortran.dg/class_allocate_2.f03 index d6a5d78bd75..754faa9a9f4 100644 --- a/gcc/testsuite/gfortran.dg/class_allocate_2.f03 +++ b/gcc/testsuite/gfortran.dg/class_allocate_2.f03 @@ -7,7 +7,7 @@ type :: t end type t class(t), allocatable :: c,d allocate(t :: d) -allocate(c,source=d) ! { dg-error "not supported yet" } +allocate(c,source=d) end type, abstract :: t diff --git a/gcc/testsuite/gfortran.dg/class_allocate_3.f03 b/gcc/testsuite/gfortran.dg/class_allocate_3.f03 new file mode 100644 index 00000000000..c6128a8ab51 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/class_allocate_3.f03 @@ -0,0 +1,39 @@ +! { dg-do run } +! +! PR 41581: [OOP] Allocation of a CLASS with SOURCE=<class> does not work +! +! Contributed by Tobias Burnus <burnus@gcc.gnu.org> + + type t + end type t + + type,extends(t) :: t2 + integer :: i = 54 + real :: r = 384.02 + end type t2 + + class(t), allocatable :: m1, m2 + + allocate(t2 :: m2) + select type(m2) + type is (t2) + print *, m2%i, m2%r + if (m2%i/=54) call abort() + if (abs(m2%r-384.02)>1E-3) call abort() + m2%i = 42 + m2%r = -4.0 + class default + call abort() + end select + + allocate(m1, source=m2) + select type(m1) + type is (t2) + print *, m1%i, m1%r + if (m1%i/=42) call abort() + if (abs(m1%r+4.0)>1E-3) call abort() + class default + call abort() + end select + +end diff --git a/gcc/testsuite/gfortran.dg/complex_intrinsic_8.f90 b/gcc/testsuite/gfortran.dg/complex_intrinsic_8.f90 new file mode 100644 index 00000000000..f9529a52334 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/complex_intrinsic_8.f90 @@ -0,0 +1,50 @@ +! { dg-do link } +! { dg-require-effective-target mpc_arc } +! +! PR fortran/33197 +! +! Fortran complex trigonometric functions: acos, asin, atan, acosh, asinh, atanh +! +! Compile-time simplifications +! +implicit none +real(4), parameter :: pi = 2*acos(0.0_4) +real(8), parameter :: pi8 = 2*acos(0.0_8) +real(4), parameter :: eps = 10*epsilon(0.0_4) +real(8), parameter :: eps8 = 10*epsilon(0.0_8) +complex(4), parameter :: z0_0 = cmplx(0.0_4, 0.0_4, kind=4) +complex(4), parameter :: z1_1 = cmplx(1.0_4, 1.0_4, kind=4) +complex(8), parameter :: z80_0 = cmplx(0.0_8, 0.0_8, kind=8) +complex(8), parameter :: z81_1 = cmplx(1.0_8, 1.0_8, kind=8) + +if (abs(acos(z0_0) - cmplx(pi/2,-0.0,4)) > eps) call link_error() +if (abs(acos(z1_1) - cmplx(0.904556894, -1.06127506,4)) > eps) call link_error() +if (abs(acos(z80_0) - cmplx(pi8/2,-0.0_8,8)) > eps8) call link_error() +if (abs(acos(z81_1) - cmplx(0.90455689430238140_8, -1.0612750619050357_8,8)) > eps8) call link_error() + +if (abs(asin(z0_0) - cmplx(0.0,0.0,4)) > eps) call link_error() +if (abs(asin(z1_1) - cmplx(0.66623943, 1.06127506,4)) > eps) call link_error() +if (abs(asin(z80_0) - cmplx(0.0_8,0.0_8,8)) > eps8) call link_error() +if (abs(asin(z81_1) - cmplx(0.66623943249251527_8, 1.0612750619050357_8,8)) > eps8) call link_error() + +if (abs(atan(z0_0) - cmplx(0.0,0.0,4)) > eps) call link_error() +if (abs(atan(z1_1) - cmplx(1.01722196, 0.40235947,4)) > eps) call link_error() +if (abs(atan(z80_0) - cmplx(0.0_8,0.0_8,8)) > eps8) call link_error() +if (abs(atan(z81_1) - cmplx(1.0172219678978514_8, 0.40235947810852507_8,8)) > eps8) call link_error() + +if (abs(acosh(z0_0) - cmplx(0.0,pi/2,4)) > eps) call link_error() +if (abs(acosh(z1_1) - cmplx(1.06127506, 0.90455689,4)) > eps) call link_error() +if (abs(acosh(z80_0) - cmplx(0.0_8,pi8/2,8)) > eps8) call link_error() +if (abs(acosh(z81_1) - cmplx(1.0612750619050357_8, 0.90455689430238140_8,8)) > eps8) call link_error() + +if (abs(asinh(z0_0) - cmplx(0.0,0.0,4)) > eps) call link_error() +if (abs(asinh(z1_1) - cmplx(1.06127506, 0.66623943,4)) > eps) call link_error() +if (abs(asinh(z80_0) - cmplx(0.0_8,0.0_8,8)) > eps8) call link_error() +if (abs(asinh(z81_1) - cmplx(1.0612750619050357_8, 0.66623943249251527_8,8)) > eps8) call link_error() + +if (abs(atanh(z0_0) - cmplx(0.0,0.0,4)) > eps) call link_error() +if (abs(atanh(z1_1) - cmplx(0.40235947, 1.01722196,4)) > eps) call link_error() +if (abs(atanh(z80_0) - cmplx(0.0_8,0.0_8,8)) > eps8) call link_error() +if (abs(atanh(z81_1) - cmplx(0.40235947810852507_8, 1.0172219678978514_8,8)) > eps8) call link_error() + +end diff --git a/gcc/testsuite/gfortran.dg/lto/pr41521_0.f90 b/gcc/testsuite/gfortran.dg/lto/pr41521_0.f90 new file mode 100644 index 00000000000..d882779263d --- /dev/null +++ b/gcc/testsuite/gfortran.dg/lto/pr41521_0.f90 @@ -0,0 +1,9 @@ +! { dg-lto-do link } +! { dg-lto-options {{-g -flto} {-g -O -flto}} } +program species +integer spk(2) +real eval(2) +spk = 2 +call atom(1.1,spk,eval) +end program + diff --git a/gcc/testsuite/gfortran.dg/lto/pr41521_1.f90 b/gcc/testsuite/gfortran.dg/lto/pr41521_1.f90 new file mode 100644 index 00000000000..897e7aded0a --- /dev/null +++ b/gcc/testsuite/gfortran.dg/lto/pr41521_1.f90 @@ -0,0 +1,9 @@ +subroutine atom(sol,k,eval) +real, intent(in) :: sol +integer, intent(in) :: k(2) +real, intent(out) :: eval(2) +real t1 + t1=sqrt(dble(k(1)**2)-(sol)**2) + eval(1)=sol**2/sqrt(t1)-sol**2 +end subroutine + diff --git a/gcc/testsuite/gfortran.dg/vect/fast-math-pr38968.f90 b/gcc/testsuite/gfortran.dg/vect/fast-math-pr38968.f90 index abb3c5f10df..3b8ac9defc3 100644 --- a/gcc/testsuite/gfortran.dg/vect/fast-math-pr38968.f90 +++ b/gcc/testsuite/gfortran.dg/vect/fast-math-pr38968.f90 @@ -1,3 +1,4 @@ +! { dg-timeout-factor 4.0 } program mymatmul implicit none integer, parameter :: kp = 4 diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index 26ef7b7038e..f8e83ec0988 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -2984,6 +2984,28 @@ proc add_options_for_ieee { flags } { return $flags } +# Add to FLAGS the flags needed to enable functions to bind locally +# when using pic/PIC passes in the testsuite. + +proc add_options_for_bind_pic_locally { flags } { + if {[check_no_compiler_messages using_pic2 assembly { + #if __PIC__ != 2 + #error FOO + #endif + }]} { + return "$flags -fPIE" + } + if {[check_no_compiler_messages using_pic1 assembly { + #if __PIC__ != 1 + #error FOO + #endif + }]} { + return "$flags -fpie" + } + + return $flags +} + # Return 1 if the target provides a full C99 runtime. proc check_effective_target_c99_runtime { } { @@ -3127,6 +3149,29 @@ proc check_effective_target_mpc_pow { } { }] } +# Return 1 if the MPC library with "arc" functions is integrated with GCC, 0 otherwise. + +proc check_effective_target_mpc_arc { } { + return [check_no_compiler_messages mpc_arc executable { + extern void link_error(void); + int main () + { + if (__builtin_cacos(1) != 0) + link_error(); + if (__builtin_casin(0) != 0) + link_error(); + if (__builtin_catan(0) != 0) + link_error(); + if (__builtin_cacosh(1) != 0) + link_error(); + if (__builtin_casinh(0) != 0) + link_error(); + if (__builtin_catanh(0) != 0) + link_error(); + } + }] +} + # Return 1 if the language for the compiler under test is C. proc check_effective_target_c { } { diff --git a/gcc/testsuite/obj-c++.dg/bitfield-1.mm b/gcc/testsuite/obj-c++.dg/bitfield-1.mm index d9b65a4f453..f17d9f0baca 100644 --- a/gcc/testsuite/obj-c++.dg/bitfield-1.mm +++ b/gcc/testsuite/obj-c++.dg/bitfield-1.mm @@ -115,7 +115,7 @@ int main(void) } /* { dg-prune-output "In file included from" } Ignore this message. */ -/* { dg-bogus "padding struct to align" "PR23610" { xfail lp64 } 1 } */ +/* { dg-bogus "padding struct to align" "PR23610" { target *-*-* } 0 } */ /* { dg-bogus "padding struct size" "PR23610" { xfail lp64 } 42 } */ /* { dg-bogus "padding struct size" "PR23610" { xfail lp64 } 45 } */ /* { dg-bogus "padding struct size" "PR23610" { xfail lp64 } 59 } */ diff --git a/gcc/testsuite/obj-c++.dg/bitfield-4.mm b/gcc/testsuite/obj-c++.dg/bitfield-4.mm index 72c1396d706..a2c2173085a 100644 --- a/gcc/testsuite/obj-c++.dg/bitfield-4.mm +++ b/gcc/testsuite/obj-c++.dg/bitfield-4.mm @@ -50,7 +50,7 @@ int main(void) } /* { dg-prune-output "In file included from" } Ignore this message. */ -/* { dg-bogus "padding struct to align" "PR23610" { xfail lp64 } 1 } */ +/* { dg-bogus "padding struct to align" "PR23610" { target *-*-* } 0 } */ /* { dg-bogus "padding struct size" "PR23610" { xfail lp64 } 28 } */ /* { dg-bogus "padding struct size" "PR23610" { xfail lp64 } 34 } */ diff --git a/gcc/testsuite/obj-c++.dg/layout-1.mm b/gcc/testsuite/obj-c++.dg/layout-1.mm index 35ffa49da3b..bc99e758f8c 100644 --- a/gcc/testsuite/obj-c++.dg/layout-1.mm +++ b/gcc/testsuite/obj-c++.dg/layout-1.mm @@ -14,4 +14,4 @@ @end /* { dg-prune-output "In output included from" } Ignore this message. */ -/* { dg-bogus "padding struct to align" "PR23610" { xfail lp64 } 1 } */ +/* { dg-bogus "padding struct to align" "PR23610" { target *-*-* } 0 } */ |