diff options
Diffstat (limited to 'gcc/testsuite/gcc.dg')
54 files changed, 264 insertions, 7 deletions
diff --git a/gcc/testsuite/gcc.dg/20020312-2.c b/gcc/testsuite/gcc.dg/20020312-2.c index 211fd755ad8..6acc1e6cbb5 100644 --- a/gcc/testsuite/gcc.dg/20020312-2.c +++ b/gcc/testsuite/gcc.dg/20020312-2.c @@ -70,6 +70,8 @@ extern void abort (void); # define PIC_REG "r12" #elif defined(__x86_64__) /* No pic register. */ +#elif defined(__m32c__) +/* No pic register. */ #else # error "Modify the test for your target." #endif diff --git a/gcc/testsuite/gcc.dg/20040622-2.c b/gcc/testsuite/gcc.dg/20040622-2.c index 32974018d54..0be320fa4e2 100644 --- a/gcc/testsuite/gcc.dg/20040622-2.c +++ b/gcc/testsuite/gcc.dg/20040622-2.c @@ -1,4 +1,5 @@ /* { dg-do link } */ +/* { dg-require-effective-target ptr32plus } */ /* This validates codegen for [r1+32760] on Darwin. */ void f(char x[32688], double *y, double *z) __attribute__((noinline)); void f(char x[32688], double *y, double *z) {} diff --git a/gcc/testsuite/gcc.dg/20050321-1.c b/gcc/testsuite/gcc.dg/20050321-1.c index 01c68cd5ed9..5455db44304 100644 --- a/gcc/testsuite/gcc.dg/20050321-1.c +++ b/gcc/testsuite/gcc.dg/20050321-1.c @@ -3,6 +3,8 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fmodulo-sched" } */ +/* malloc doesn't take a long. */ +/* { dg-xfail-if "" { "m32c-*-*" } { "*" } { "" } } */ extern void * malloc (long); struct s { diff --git a/gcc/testsuite/gcc.dg/20050321-2.c b/gcc/testsuite/gcc.dg/20050321-2.c index 06d87cc225b..7f7e1c09dff 100644 --- a/gcc/testsuite/gcc.dg/20050321-2.c +++ b/gcc/testsuite/gcc.dg/20050321-2.c @@ -6,6 +6,7 @@ /* { dg-do link { target fpic } } */ /* { dg-options "-g1 -fpic" } */ /* { dg-bogus "\[Uu\]nresolved symbol .(_GLOBAL_OFFSET_TABLE_|\[_.A-Za-z\]\[_.0-9A-Za-z\]*@(PLT|GOT|GOTOFF))" "PIC unsupported" { xfail *-*-netware* } 0 } */ +/* { dg-require-effective-target int32plus } */ #define A(n) \ case n##1: return n##1 * 131 + 63; \ diff --git a/gcc/testsuite/gcc.dg/20060410.c b/gcc/testsuite/gcc.dg/20060410.c new file mode 100644 index 00000000000..88253bb43f3 --- /dev/null +++ b/gcc/testsuite/gcc.dg/20060410.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-g" } */ + +/* Make sure we didn't eliminate foo because we thought it was unused. */ + +struct foo +{ + int i; +}; + +int bar (void) +{ + return ((struct foo *)0x1234)->i; +} + +/* { dg-final { scan-assembler "foo" } } */ diff --git a/gcc/testsuite/gcc.dg/20060419-1.c b/gcc/testsuite/gcc.dg/20060419-1.c new file mode 100644 index 00000000000..754774162a2 --- /dev/null +++ b/gcc/testsuite/gcc.dg/20060419-1.c @@ -0,0 +1,4 @@ +struct T { + unsigned char f[1] __attribute__((packed)); /* { dg-warning "ignored for field of type.*unsigned char\\\[1\\\]" } */ + unsigned char g[14] __attribute__((packed)); /* { dg-warning "ignored for field of type.*unsigned char\\\[14\\\]" } */ +}; diff --git a/gcc/testsuite/gcc.dg/arm-vfp1.c b/gcc/testsuite/gcc.dg/arm-vfp1.c index 5898e8027e6..3b6a45dc23f 100644 --- a/gcc/testsuite/gcc.dg/arm-vfp1.c +++ b/gcc/testsuite/gcc.dg/arm-vfp1.c @@ -1,6 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */ /* { dg-require-effective-target arm32 } */ +/* { dg-skip-if "" { *-*-* } { "-mcpu=iwmmxt" "-march=iwmmxt" } { "" } } */ extern float fabsf (float); extern float sqrtf (float); diff --git a/gcc/testsuite/gcc.dg/asm-1.c b/gcc/testsuite/gcc.dg/asm-1.c index 3bf5c29c4cd..fecac780f69 100644 --- a/gcc/testsuite/gcc.dg/asm-1.c +++ b/gcc/testsuite/gcc.dg/asm-1.c @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-require-effective-target int32plus } */ struct x { int selector; diff --git a/gcc/testsuite/gcc.dg/fold-cond-1.c b/gcc/testsuite/gcc.dg/fold-cond-1.c new file mode 100644 index 00000000000..e9212d1ae7b --- /dev/null +++ b/gcc/testsuite/gcc.dg/fold-cond-1.c @@ -0,0 +1,28 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-original" } */ + +_Bool test1(int a, int b) +{ + return a ? b : 0; +} + +_Bool test2(int c, int d) +{ + return c ? d : 1; +} + +_Bool test3(int e, int f) +{ + return e ? 0 : f; +} + +_Bool test4(int g, int h) +{ + return g ? 1 : h; +} + +/* { dg-final { scan-tree-dump-times "a != 0 \&\& b != 0" 1 "original" } } */ +/* { dg-final { scan-tree-dump-times "c == 0 \\|\\| d != 0" 1 "original" } } */ +/* { dg-final { scan-tree-dump-times "e == 0 \&\& f != 0" 1 "original" } } */ +/* { dg-final { scan-tree-dump-times "\\(g \\| h\\) != 0" 1 "original" } } */ +/* { dg-final { cleanup-tree-dump "original" } } */ diff --git a/gcc/testsuite/gcc.dg/fold-mod-1.c b/gcc/testsuite/gcc.dg/fold-mod-1.c index 4a26d0fc088..3f7696f1760 100644 --- a/gcc/testsuite/gcc.dg/fold-mod-1.c +++ b/gcc/testsuite/gcc.dg/fold-mod-1.c @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-require-effective-target int32plus } */ /* { dg-options "-fdump-tree-gimple" } */ #define ABS(x) (x > 0 ? x : -x) diff --git a/gcc/testsuite/gcc.dg/fold-overflow-1.c b/gcc/testsuite/gcc.dg/fold-overflow-1.c index 5e410b9bafb..bed8aac9f9b 100644 --- a/gcc/testsuite/gcc.dg/fold-overflow-1.c +++ b/gcc/testsuite/gcc.dg/fold-overflow-1.c @@ -1,4 +1,5 @@ /* { dg-compile } */ +/* { dg-skip-if "consts are shorts, not longs" { "m32c-*-*" } { "*" } { "" } } */ /* { dg-options "-O -ftrapping-math" } */ /* There should be exactly 2 +Inf in the assembly file. */ diff --git a/gcc/testsuite/gcc.dg/format/bitfld-1.c b/gcc/testsuite/gcc.dg/format/bitfld-1.c index 2cea5d220e5..e828ad97cd5 100644 --- a/gcc/testsuite/gcc.dg/format/bitfld-1.c +++ b/gcc/testsuite/gcc.dg/format/bitfld-1.c @@ -2,6 +2,7 @@ /* Origin: Joseph Myers <joseph@codesourcery.com> */ /* { dg-do compile } */ /* { dg-options "-std=gnu99 -Wformat" } */ +/* { dg-require-effective-target int32plus } */ #include "format.h" @@ -28,8 +29,12 @@ foo (void) printf ("%d%u", x.s15, x.s15); printf ("%d%u", x.u16, x.u16); printf ("%d%u", x.s16, x.s16); +#if __INT_MAX__ > 32767 + /* If integers are 16 bits, there doesn't seem to be a way of + printing these without getting an error. */ printf ("%d%u", x.u31, x.u31); printf ("%d%u", x.s31, x.s31); +#endif #if __LONG_MAX__ > 2147483647 && __INT_MAX__ >= 2147483647 /* If long is wider than 32 bits, the 32-bit bit-fields are int or unsigned int or promote to those types. Otherwise, long is 32 diff --git a/gcc/testsuite/gcc.dg/init-bad-4.c b/gcc/testsuite/gcc.dg/init-bad-4.c new file mode 100644 index 00000000000..3f03002908a --- /dev/null +++ b/gcc/testsuite/gcc.dg/init-bad-4.c @@ -0,0 +1,5 @@ +/* PR c/25875 */ +/* Origin: Richard Guenther <rguenth@gcc.gnu.org> */ +/* { dg-do compile } */ + +struct A { } a = (struct A) {{ (X)0 }}; /* { dg-error "no members|extra brace|near|undeclared|constant|compound" } */ diff --git a/gcc/testsuite/gcc.dg/init-string-2.c b/gcc/testsuite/gcc.dg/init-string-2.c index 828897b3ca9..9efd44b3d2f 100644 --- a/gcc/testsuite/gcc.dg/init-string-2.c +++ b/gcc/testsuite/gcc.dg/init-string-2.c @@ -5,6 +5,7 @@ relevant circumstances can be obtained portably; may still fail if char, short and int do not all have distinct precisions. */ /* { dg-do compile } */ +/* { dg-require-effective-target int32plus } */ /* { dg-options "-std=c99 -pedantic-errors -fshort-enums -fshort-wchar" } */ #include <limits.h> diff --git a/gcc/testsuite/gcc.dg/max-1.c b/gcc/testsuite/gcc.dg/max-1.c index 7f03edc590d..02aaa46c3b5 100644 --- a/gcc/testsuite/gcc.dg/max-1.c +++ b/gcc/testsuite/gcc.dg/max-1.c @@ -2,6 +2,8 @@ /* Test case reduced by Andrew Pinski <pinskia@physics.uc.edu> */ /* { dg-do run } */ /* { dg-options "-O1 -fno-tree-lrs" } */ +/* m32c has varying sized pointers */ +/* { dg-skip-if "" { "m32c-*-*" } { "*" } { "-mcpu=m32c" "-mcpu=m32cm" } } */ extern void abort (void); diff --git a/gcc/testsuite/gcc.dg/noncompile/920923-1.c b/gcc/testsuite/gcc.dg/noncompile/920923-1.c index 4ff008467f5..8011f28cbb4 100644 --- a/gcc/testsuite/gcc.dg/noncompile/920923-1.c +++ b/gcc/testsuite/gcc.dg/noncompile/920923-1.c @@ -115,7 +115,7 @@ init_mem() "mem_hash != (prec_t)0", 370, "b.c"), 0))); flush_hash(mem_hash, 32); - build_ptables(mem_base, 1024*(1<<13)); /* { dg-bogus "integer overflow" "int smaller than 32 bits" } */ + build_ptables(mem_base, 1024*(1<<13)); /* { dg-bogus "integer overflow" "int smaller than 32 bits" { xfail int16 } } */ } struct tm { diff --git a/gcc/testsuite/gcc.dg/pch/struct-1.c b/gcc/testsuite/gcc.dg/pch/struct-1.c index d6c03e7b84d..698e88b285a 100644 --- a/gcc/testsuite/gcc.dg/pch/struct-1.c +++ b/gcc/testsuite/gcc.dg/pch/struct-1.c @@ -1,3 +1,4 @@ +/* { dg-require-effective-target int32plus } */ #include "struct-1.h" struct ChainSearchRecord { diff --git a/gcc/testsuite/gcc.dg/pr14796-2.c b/gcc/testsuite/gcc.dg/pr14796-2.c index 195530b8d93..2de5411a490 100644 --- a/gcc/testsuite/gcc.dg/pr14796-2.c +++ b/gcc/testsuite/gcc.dg/pr14796-2.c @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-require-effective-target int32plus } */ /* { dg-options "-fdump-tree-gimple" } */ int f (int a) { diff --git a/gcc/testsuite/gcc.dg/pr17112-1.c b/gcc/testsuite/gcc.dg/pr17112-1.c index 09c3758abed..04d3a2e0e21 100644 --- a/gcc/testsuite/gcc.dg/pr17112-1.c +++ b/gcc/testsuite/gcc.dg/pr17112-1.c @@ -1,5 +1,6 @@ /* PR middle-end/17112 */ /* { dg-do run } */ +/* { dg-require-effective-target int32plus } */ /* { dg-options "-O2" } */ extern void abort(void); diff --git a/gcc/testsuite/gcc.dg/pr18241-1.c b/gcc/testsuite/gcc.dg/pr18241-1.c index 99c9e38e615..f5134d317b2 100644 --- a/gcc/testsuite/gcc.dg/pr18241-1.c +++ b/gcc/testsuite/gcc.dg/pr18241-1.c @@ -1,4 +1,6 @@ /* { dg-do run } */ +/* memset doesn't take unsigned long */ +/* { dg-xfail-if "" { "m32c-*-*" } { "*" } { "" } } */ /* { dg-options "-std=gnu99 -Wall -Wextra -O1" } */ extern void *memset (void*, int, unsigned long); diff --git a/gcc/testsuite/gcc.dg/pr18241-2.c b/gcc/testsuite/gcc.dg/pr18241-2.c index 502dc553eeb..89221247ad0 100644 --- a/gcc/testsuite/gcc.dg/pr18241-2.c +++ b/gcc/testsuite/gcc.dg/pr18241-2.c @@ -1,4 +1,6 @@ /* { dg-do run } */ +/* memset doesn't take unsigned long */ +/* { dg-xfail-if "" { "m32c-*-*" } { "*" } { "" } } */ /* { dg-options "-std=gnu99 -Wall -Wextra -O1" } */ extern void *memset (void*, int, unsigned long); diff --git a/gcc/testsuite/gcc.dg/pr19340.c b/gcc/testsuite/gcc.dg/pr19340.c index 89c82f6bfe2..27cd8c8cc27 100644 --- a/gcc/testsuite/gcc.dg/pr19340.c +++ b/gcc/testsuite/gcc.dg/pr19340.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fschedule-insns2 -fsched2-use-traces" } */ -/* { dg-skip-if "No scheduling" { mmix-*-* cris-*-* m68k-*-* } { "*" } { "" } } */ +/* { dg-skip-if "No scheduling" { mmix-*-* cris-*-* m68k-*-* m32c-*-* } { "*" } { "" } } */ extern double f (double x); diff --git a/gcc/testsuite/gcc.dg/pr23049.c b/gcc/testsuite/gcc.dg/pr23049.c index 0a71cecb217..e58cef8fe16 100644 --- a/gcc/testsuite/gcc.dg/pr23049.c +++ b/gcc/testsuite/gcc.dg/pr23049.c @@ -7,6 +7,7 @@ the above expression. */ /* { dg-do compile } */ +/* { dg-require-effective-target int32plus } */ /* { dg-options "-O3 -ftree-vectorize" } */ static unsigned short int crc_table[256]; diff --git a/gcc/testsuite/gcc.dg/pr26961-1.c b/gcc/testsuite/gcc.dg/pr26961-1.c new file mode 100644 index 00000000000..56907d89d47 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr26961-1.c @@ -0,0 +1,8 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +long long foo(int i, int j) +{ + return i ? (long long)(!j) : 0; +} + diff --git a/gcc/testsuite/gcc.dg/pr27314.c b/gcc/testsuite/gcc.dg/pr27314.c new file mode 100644 index 00000000000..d99be5eb805 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr27314.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "-O1 -ffast-math" } */ + +extern double floor (double); + +inline int bar (double x) +{ + return (int) floor (x); +} + +int foo (int i) +{ + return bar (i); +} diff --git a/gcc/testsuite/gcc.dg/sibcall-7.c b/gcc/testsuite/gcc.dg/sibcall-7.c new file mode 100644 index 00000000000..273c2c36d21 --- /dev/null +++ b/gcc/testsuite/gcc.dg/sibcall-7.c @@ -0,0 +1,43 @@ +/* Simple check that tail recursive call optimization is also + controlled by -foptimize-sibling-calls. + + Copyright (C) 2006 Free Software Foundation Inc. + Original test by Hans-Peter Nilsson <hp@bitrange.com> */ + +/* { dg-do run } */ +/* { dg-options "-O2 -fno-optimize-sibling-calls" } */ + + +extern void abort (void); + +extern void recurser_void (int); +extern void track (int); + +int main (void) +{ + recurser_void (0); + return 0; +} + +void recurser_void (int n) +{ + if (n == 0 || n == 7) + track (n); + + if (n == 10) + return; + + recurser_void (n + 1); +} + +void *trackpoint; + +void track (int n) +{ + char stackpos[1]; + + if (n == 0) + trackpoint = stackpos; + else if (n != 7 || trackpoint == stackpos) + abort (); +} diff --git a/gcc/testsuite/gcc.dg/struct-parse-1.c b/gcc/testsuite/gcc.dg/struct-parse-1.c new file mode 100644 index 00000000000..32c115797fd --- /dev/null +++ b/gcc/testsuite/gcc.dg/struct-parse-1.c @@ -0,0 +1,11 @@ +/* Copyright (C) 2006 Free Software Foundation, Inc. */ +/* Contributed by Carlos O'Donell on 2006-03-31 */ + +/* This code caused the C frontend to loop + forever exhausting all system memory, or ICE */ +/* Origin: Carlos O'Donell <carlos@codesourcery.com> */ + +/* { dg-options "-std=c99" } */ +struct s { int a; int b; struct t c; }; /* { dg-error "error: field 'c' has incomplete type" } */ +struct s d = { .b = 0 }; + diff --git a/gcc/testsuite/gcc.dg/torture/pr26565.c b/gcc/testsuite/gcc.dg/torture/pr26565.c index 9b431407f44..d7620329fe4 100644 --- a/gcc/testsuite/gcc.dg/torture/pr26565.c +++ b/gcc/testsuite/gcc.dg/torture/pr26565.c @@ -1,4 +1,6 @@ /* { dg-do run } */ +/* m32c is already packed. */ +/* { dg-skip-if "" { "m32c-*-*" } { "*" } { "" } } */ void *memcpy(void *dest, const void *src, __SIZE_TYPE__ n); diff --git a/gcc/testsuite/gcc.dg/torture/pr26587.c b/gcc/testsuite/gcc.dg/torture/pr26587.c index fd3c690e77f..ad5d60f3a8d 100644 --- a/gcc/testsuite/gcc.dg/torture/pr26587.c +++ b/gcc/testsuite/gcc.dg/torture/pr26587.c @@ -1,4 +1,5 @@ /* { dg-do run } */ +/* { dg-require-effective-target int32plus } */ extern void abort(void); typedef unsigned int BF_word; diff --git a/gcc/testsuite/gcc.dg/torture/pr26630.c b/gcc/testsuite/gcc.dg/torture/pr26630.c index 08cf5f65576..96bab36a0f7 100644 --- a/gcc/testsuite/gcc.dg/torture/pr26630.c +++ b/gcc/testsuite/gcc.dg/torture/pr26630.c @@ -1,4 +1,5 @@ /* { dg-do run } */ +/* { dg-require-effective-target int32plus } */ extern void abort(void); int main() diff --git a/gcc/testsuite/gcc.dg/torture/pr26869.c b/gcc/testsuite/gcc.dg/torture/pr26869.c new file mode 100644 index 00000000000..6743319d109 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr26869.c @@ -0,0 +1,7 @@ +/* { dg-do compile } */ + +_Complex float f (_Complex float b, _Complex float c) +{ + _Complex float a = 1.0 + 0.0i; + return a / c; +} diff --git a/gcc/testsuite/gcc.dg/tree-ssa/loop-10.c b/gcc/testsuite/gcc.dg/tree-ssa/loop-10.c index 4b67c82312a..03c2ddd515d 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/loop-10.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/loop-10.c @@ -1,5 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* { dg-require-effective-target int32plus } */ int bar (void); diff --git a/gcc/testsuite/gcc.dg/tree-ssa/loop-2.c b/gcc/testsuite/gcc.dg/tree-ssa/loop-2.c index afb0d16c32c..8f319594f84 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/loop-2.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/loop-2.c @@ -2,6 +2,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* { dg-require-effective-target size32plus } */ /* Size of this structure should be sufficiently weird so that no memory addressing mode applies. */ diff --git a/gcc/testsuite/gcc.dg/tree-ssa/loop-4.c b/gcc/testsuite/gcc.dg/tree-ssa/loop-4.c index 89d956136bb..a6c8c8fd34a 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/loop-4.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/loop-4.c @@ -2,6 +2,7 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ +/* { dg-require-effective-target size32plus } */ /* Size of this structure should be sufficiently weird so that no memory addressing mode applies. */ diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ltrans-1.c b/gcc/testsuite/gcc.dg/tree-ssa/ltrans-1.c index 33b82cbb746..a3a9975c51d 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/ltrans-1.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/ltrans-1.c @@ -1,5 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-O2 -ftree-loop-linear -fdump-tree-ltrans-all" } */ +/* { dg-require-effective-target size32plus } */ double u[1782225]; int foo(int N, int *res) diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ltrans-2.c b/gcc/testsuite/gcc.dg/tree-ssa/ltrans-2.c index 9cfa60d2d99..9548bf21706 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/ltrans-2.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/ltrans-2.c @@ -1,5 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-O2 -ftree-loop-linear -fdump-tree-ltrans-all" } */ +/* { dg-require-effective-target size32plus } */ double u[1782225]; int foo(int N, int *res) diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ltrans-3.c b/gcc/testsuite/gcc.dg/tree-ssa/ltrans-3.c index 0cb266f4cc4..86424ab1369 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/ltrans-3.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/ltrans-3.c @@ -1,5 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-O2 -ftree-loop-linear -fdump-tree-ltrans-all" } */ +/* { dg-require-effective-target size32plus } */ double u[1782225]; int foo(int N, int *res) diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ltrans-4.c b/gcc/testsuite/gcc.dg/tree-ssa/ltrans-4.c index 4e60eae4d51..e2d6abced60 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/ltrans-4.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/ltrans-4.c @@ -1,5 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-O2 -ftree-loop-linear -fdump-tree-ltrans-all" } */ +/* { dg-require-effective-target size32plus } */ double u[1782225]; int foo(int N, int *res) diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr14341.c b/gcc/testsuite/gcc.dg/tree-ssa/pr14341.c index ee661a0f3a9..0287a25cc38 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/pr14341.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr14341.c @@ -1,5 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-vrp1" } */ +/* { dg-require-effective-target int32plus } */ void fn_call (int); int h(int, int); diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr23382.c b/gcc/testsuite/gcc.dg/tree-ssa/pr23382.c index b1dd6d54822..e515417076d 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/pr23382.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr23382.c @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-alias-vops" } */ +/* malloc doesn't take a long */ +/* { dg-xfail-if "" { "m32c-*-*" } { "*" } { "" } } */ struct a { int length; diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr24627.c b/gcc/testsuite/gcc.dg/tree-ssa/pr24627.c index 011410cbb37..c065eef84f4 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/pr24627.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr24627.c @@ -1,5 +1,6 @@ /* { dg-do run } */ /* { dg-options "-O" } */ +/* { dg-require-effective-target int32plus } */ extern void abort (void); typedef unsigned int u_int32; diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr26180.c b/gcc/testsuite/gcc.dg/tree-ssa/pr26180.c index 730115b686b..13c302dea3a 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/pr26180.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr26180.c @@ -1,5 +1,6 @@ /* { dg-do run } */ /* { dg-options "-O2" } */ +/* { dg-require-effective-target int32plus } */ void abort(void); int bar(int x, int y) diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr27236.c b/gcc/testsuite/gcc.dg/tree-ssa/pr27236.c new file mode 100644 index 00000000000..b623486294a --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr27236.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-optimized" } */ + +static inline int inline_read(volatile int *mem) +{ + return *mem; +} +int foo_read(volatile int *mem) +{ + return inline_read(mem); +} +unsigned int foo(volatile int *mem) +{ + foo_read(mem); + return foo_read(mem); +} + +/* { dg-final { scan-tree-dump-times "foo_read" 5 "optimized" } } */ +/* { dg-final { cleanup-tree-dump "optimized" } } */ diff --git a/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-1.c b/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-1.c index af65736661f..8802bc8bc69 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-1.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-1.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O1 -fdump-tree-tailr-details" } */ +/* { dg-options "-O1 -foptimize-sibling-calls -fdump-tree-tailr-details" } */ int t(int a) { diff --git a/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-2.c b/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-2.c index d0bc8b9c230..9fe3af9855a 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-2.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-2.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O1 -fdump-tree-tailr-details" } */ +/* { dg-options "-O1 -foptimize-sibling-calls -fdump-tree-tailr-details" } */ int t(char *a) { diff --git a/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-3.c b/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-3.c index 4e0ca133e5d..ca727df391d 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-3.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-3.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O1 -fdump-tree-tailr-details" } */ +/* { dg-options "-O1 -foptimize-sibling-calls -fdump-tree-tailr-details" } */ int t(int a) { diff --git a/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-4.c b/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-4.c index edab9833f0f..bb43d76aca9 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-4.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-4.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O1 -fdump-tree-tailr-details" } */ +/* { dg-options "-O1 -foptimize-sibling-calls -fdump-tree-tailr-details" } */ int t(int a) { diff --git a/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-5.c b/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-5.c index 2a0af0a714b..53a2cdb15e3 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-5.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-5.c @@ -1,5 +1,5 @@ /* { dg-do run } */ -/* { dg-options "-O1 -fdump-tree-optimized" } */ +/* { dg-options "-O1 -foptimize-sibling-calls -fdump-tree-optimized" } */ extern void abort (void); extern void exit (int); diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp14.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp14.c index 833a73dcadc..a65d8a16d70 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/vrp14.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp14.c @@ -1,5 +1,6 @@ /* { dg-do run } */ /* { dg-options "-O2" } */ +/* { dg-require-effective-target int32plus } */ struct tree_decl { diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp21.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp21.c index 0e675d91147..9a4e4e783c1 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/vrp21.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp21.c @@ -1,5 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-O1 -ftree-vrp -fdump-tree-vrp1" } */ +/* { dg-require-effective-target int32plus } */ extern void link_error (); diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp22.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp22.c index 6120d072377..cbd4dc529dd 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/vrp22.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp22.c @@ -1,5 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-O1 -ftree-vrp -fdump-tree-vrp1" } */ +/* { dg-require-effective-target int32plus } */ extern void link_error (); diff --git a/gcc/testsuite/gcc.dg/vect/vect-fold-1.c b/gcc/testsuite/gcc.dg/vect/vect-fold-1.c new file mode 100644 index 00000000000..88b68b7cf4a --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/vect-fold-1.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-dom1" } */ + +typedef unsigned char v4qi __attribute__ ((vector_size (4))); + +v4qi c; + +void foo() +{ + v4qi a = { 1, 2, 3, 4 }; + v4qi b = { 5, 6, 7, 8 }; + c = a + b; +} + +/* { dg-final { scan-tree-dump-times "c = { 6, 8, 10, 12 }" 1 "dom1" } } */ +/* { dg-final { cleanup-tree-dump "dom1" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-recip.c b/gcc/testsuite/gcc.dg/vect/vect-recip.c new file mode 100644 index 00000000000..89af9843fef --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/vect-recip.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target vect_float } */ + +void f(float *__restrict__ qa, float *__restrict__ qb, + float *__restrict__ qc, float *__restrict__ rtrms) +{ + int i; + static float qam[600]; + static float qbm[600]; + static float qcm[600]; + for(i=0;i<600;i++) + { + float a = rtrms[i]; + qam[i] = qa[i]/a; + qbm[i] = qb[i]/a; + qcm[i] = qc[i]/a; + } +} diff --git a/gcc/testsuite/gcc.dg/vmx/pr27006.c b/gcc/testsuite/gcc.dg/vmx/pr27006.c new file mode 100644 index 00000000000..1b92252b383 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vmx/pr27006.c @@ -0,0 +1,23 @@ +/* { dg-do run */ +/* { dg-options "-maltivec" } */ + +extern void abort (); + +typedef union +{ + int i[4]; + __attribute__((altivec(vector__))) int v; +} vec_int4; + +int main (void) +{ + vec_int4 i1; + + i1.v = (__attribute__((altivec(vector__))) int){31, 31, 31, 31}; + + if (i1.i[0] != 31) + abort (); + + return 0; +} + |