diff options
Diffstat (limited to 'gcc-4.4.0/gcc/testsuite/gcc.dg')
69 files changed, 1266 insertions, 128 deletions
diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/20090902-1.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/20090902-1.c new file mode 100644 index 000000000..6120ee907 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/20090902-1.c @@ -0,0 +1,3 @@ +/* { dg-do compile } */ +#define STRING(x) #x +char buf[] = STRING(L'\x123'); diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/Warray-bounds.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/Warray-bounds.c index bbb5bea65..53da38392 100644 --- a/gcc-4.4.0/gcc/testsuite/gcc.dg/Warray-bounds.c +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/Warray-bounds.c @@ -26,10 +26,10 @@ int* f(void) { a[ 9] = 0; a[10] = 0; /* { dg-warning "array subscript" } */ a[11] = 0; /* { dg-warning "array subscript" } */ - a[2 * n() - 11] = 0; /* { dg-warning "array subscript" } */ - a[2 * n() - 10] = 0; - a[2 * n() - 1] = 0; - a[2 * n() - 0] = 0; /* { dg-warning "array subscript" } */ + a[2 * n() - 11] = 1; /* { dg-warning "array subscript" } */ + a[2 * n() - 10] = 1; + a[2 * n() - 1] = 1; + a[2 * n() - 0] = 1; /* { dg-warning "array subscript" } */ b[-1] = 0; /* { dg-warning "array subscript" } */ b[ 0] = 0; @@ -37,10 +37,10 @@ int* f(void) { b[ 9] = 0; b[10] = 0; /* { dg-warning "array subscript" } */ b[11] = 0; /* { dg-warning "array subscript" } */ - b[2 * n() - 11] = 0; /* { dg-warning "array subscript" } */ - b[2 * n() - 10] = 0; - b[2 * n() - 1] = 0; - b[2 * n() - 0] = 0; /* { dg-warning "array subscript" } */ + b[2 * n() - 11] = 1; /* { dg-warning "array subscript" } */ + b[2 * n() - 10] = 1; + b[2 * n() - 1] = 1; + b[2 * n() - 0] = 1; /* { dg-warning "array subscript" } */ c.c[-1] = 0; /* { dg-warning "array subscript" } */ c.c[ 0] = 0; @@ -48,10 +48,10 @@ int* f(void) { c.c[ 9] = 0; c.c[10] = 0; /* { dg-warning "array subscript" } */ c.c[11] = 0; /* { dg-warning "array subscript" } */ - c.c[2 * n() - 11] = 0; /* { dg-warning "array subscript" } */ - c.c[2 * n() - 10] = 0; - c.c[2 * n() - 1] = 0; - c.c[2 * n() - 0] = 0; /* { dg-warning "array subscript" } */ + c.c[2 * n() - 11] = 1; /* { dg-warning "array subscript" } */ + c.c[2 * n() - 10] = 1; + c.c[2 * n() - 1] = 1; + c.c[2 * n() - 0] = 1; /* { dg-warning "array subscript" } */ g(&a[8]); g(&a[9]); @@ -90,4 +90,3 @@ int* f(void) { return a; } - diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/Wunused-value-3.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/Wunused-value-3.c new file mode 100644 index 000000000..333ddea4f --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/Wunused-value-3.c @@ -0,0 +1,9 @@ +/* PR c/39889 */ +/* { dg-do compile } */ +/* { dg-options "-Wunused-value" } */ + +int x; +int foo (void) +{ + return (1 ? x = 0 : (void) 0), 0; /* { dg-bogus "value computed is not used" } */ +} diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/cpp/missing-header-MD.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/cpp/missing-header-MD.c new file mode 100644 index 000000000..dd4617405 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/cpp/missing-header-MD.c @@ -0,0 +1,5 @@ +/* Test that missing user headers are fatal errors with -MD. */ +/* { dg-do compile } */ +/* { dg-options "-MD" } */ + +#include "nonexistent.h" /* { dg-error "nonexistent.h" } */ diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/cpp/missing-header-MMD.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/cpp/missing-header-MMD.c new file mode 100644 index 000000000..e87cc6ee2 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/cpp/missing-header-MMD.c @@ -0,0 +1,5 @@ +/* Test that missing user headers are fatal errors with -MMD. */ +/* { dg-do compile } */ +/* { dg-options "-MMD" } */ + +#include "nonexistent.h" /* { dg-error "nonexistent.h" } */ diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/cpp/missing-sysheader-MD.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/cpp/missing-sysheader-MD.c new file mode 100644 index 000000000..ca2b98905 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/cpp/missing-sysheader-MD.c @@ -0,0 +1,5 @@ +/* Test that missing system headers are fatal errors with -MD. */ +/* { dg-do compile } */ +/* { dg-options "-MD" } */ + +#include <nonexistent.h> /* { dg-error "nonexistent.h" } */ diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/cpp/missing-sysheader-MMD.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/cpp/missing-sysheader-MMD.c new file mode 100644 index 000000000..67f649f6e --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/cpp/missing-sysheader-MMD.c @@ -0,0 +1,5 @@ +/* Test that missing system headers are fatal errors with -MMD. */ +/* { dg-do compile } */ +/* { dg-options "-MMD" } */ + +#include <nonexistent.h> /* { dg-error "nonexistent.h" } */ diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/debug/dwarf2/aranges-fnsec-1.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/debug/dwarf2/aranges-fnsec-1.c index 8bd34b2fe..873188fe8 100644 --- a/gcc-4.4.0/gcc/testsuite/gcc.dg/debug/dwarf2/aranges-fnsec-1.c +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/debug/dwarf2/aranges-fnsec-1.c @@ -2,8 +2,10 @@ section if nothing went in there. */ /* Origin: Joseph Myers <joseph@codesourcery.com> */ /* { dg-do compile } */ -/* { dg-options "-gdwarf-2 -ffunction-sections -w" } */ +/* { dg-options "-gdwarf-2 -ffunction-sections -w -dA" } */ /* { dg-final { scan-assembler-not "\\.Letext0-\\.Ltext0" } } */ +/* { dg-final { scan-assembler-not "\\.Ltext0\[^\n\r\]*Offset 0x0" } } */ +/* { dg-final { scan-assembler "DW_AT_ranges" } } */ int f (void) diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/debug/dwarf2/mlt1.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/debug/dwarf2/mlt1.c new file mode 100644 index 000000000..7b0b2e994 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/debug/dwarf2/mlt1.c @@ -0,0 +1,32 @@ +/* Test that -gmlt includes line tables and inlined subroutine entries, + and excludes types and variables. */ +/* Origin: Cary Coutant <ccoutant@google.com> */ +/* { dg-do compile } */ +/* { dg-options "-O2 -gdwarf-2 -dA -gmlt" } */ +/* { dg-final { scan-assembler "DW_AT_stmt_list" } } */ +/* { dg-final { scan-assembler "DW_TAG_subprogram" } } */ +/* { dg-final { scan-assembler "DW_TAG_inlined_subroutine" } } */ +/* { dg-final { scan-assembler-not "DW_TAG_variable" } } */ +/* { dg-final { scan-assembler-not "DW_TAG_formal_parameter" } } */ +/* { dg-final { scan-assembler-not "DW_TAG_base_type" } } */ + +static inline __attribute__((always_inline)) int +a(int i, int j) +{ + return (i << 5) + j; +} + +int +b(int i, int j) +{ + return (i >> 5) + (j << 27); +} + +int +c(int i, int j) +{ + int r = a(i, j); + r = b(r, i); + r = b(r, j); + return r; +} diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/pr26570.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/pr26570.c deleted file mode 100644 index 5f67c0073..000000000 --- a/gcc-4.4.0/gcc/testsuite/gcc.dg/pr26570.c +++ /dev/null @@ -1,9 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -fprofile-generate -fprofile-use" } */ - -unsigned test (unsigned a, unsigned b) -{ - return a / b; -} /* { dg-message "note: \[^\n\]*execution counts estimated" } */ - -/* { dg-final { cleanup-coverage-files } } */ diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/pr32773.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/pr32773.c deleted file mode 100644 index ca5dd53fd..000000000 --- a/gcc-4.4.0/gcc/testsuite/gcc.dg/pr32773.c +++ /dev/null @@ -1,11 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O -fprofile-use" } */ -/* { dg-options "-O -m4 -fprofile-use" { target sh-*-* } } */ - -void foo (int *p) -{ - if (p) - *p = 0; -} /* { dg-message "note: \[^\n\]*execution counts estimated" } */ - -/* { dg-final { cleanup-coverage-files } } */ diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/pr39666-1.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/pr39666-1.c new file mode 100644 index 000000000..f1ba499c3 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/pr39666-1.c @@ -0,0 +1,22 @@ +/* PR middle-end/39666 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -Wuninitialized" } */ + +int +foo (int i) +{ + int j; + switch (i) + { + case -__INT_MAX__ - 1 ... -1: + j = 6; + break; + case 0: + j = 5; + break; + case 1 ... __INT_MAX__: + j = 4; + break; + } + return j; +} diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/pr39666-2.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/pr39666-2.c new file mode 100644 index 000000000..3a853e60b --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/pr39666-2.c @@ -0,0 +1,22 @@ +/* PR middle-end/39666 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -Wuninitialized" } */ + +int +foo (int i) +{ + int j; + switch (i) + { + case -__INT_MAX__ - 1 ... -1: + j = 6; + break; + case 0: + j = 5; + break; + case 2 ... __INT_MAX__: + j = 4; + break; + } + return j; +} /* { dg-warning "may be used uninitialized" } */ diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/pr39794.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/pr39794.c new file mode 100644 index 000000000..2702ba79a --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/pr39794.c @@ -0,0 +1,33 @@ +/* PR rtl-optimization/39794 */ +/* { dg-do run } */ +/* { dg-options "-O2 -funroll-loops" } */ + +extern void abort (); + +void +foo (int *a, int n) +{ + int i; + for (i = 0; i < n; i++) + { + a[i] *= 2; + a[i + 1] = a[i - 1] + a[i - 2]; + } +} + +int a[16]; +int ref[16] = { 0, 1, 4, 2, 10, 12, 24, 44, + 72, 136, 232, 416, 736, 1296, 2304, 2032 }; + +int +main () +{ + int i; + for (i = 0; i < 16; i++) + a[i] = i; + foo (a + 2, 16 - 3); + for (i = 0; i < 16; i++) + if (ref[i] != a[i]) + abort (); + return 0; +} diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/pr39867.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/pr39867.c new file mode 100644 index 000000000..8f0dbe5ee --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/pr39867.c @@ -0,0 +1,11 @@ +/* { dg-do link } */ +/* { dg-options "-O2" } */ + +int main (void) +{ + int exp = -1; + /* Wrong folding of the LHS to an unsigned MAX leads to 4294967295 != 2. */ + if ((exp < 2 ? 2U : (unsigned int) exp) != 2) + link_error (); + return 0; +} diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/torture/pr39855.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/torture/pr39855.c new file mode 100644 index 000000000..6d75c38a9 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/torture/pr39855.c @@ -0,0 +1,24 @@ +/* PR c/39855 */ +/* { dg-do run { target { int32plus } } } */ + +extern void abort (void); + +int i, j, k; + +int +foo (void) +{ + return ++i; +} + +int +main () +{ + if (__CHAR_BIT__ != 8 || sizeof (int) != 4) + return 0; + j = foo () << 30 << 2; + k = (unsigned) foo () >> 16 >> 16; + if (i != 2 || j != 0 || k != 0) + abort (); + return 0; +} diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-4.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-4.c index 28dc6106d..8b0ff4aff 100644 --- a/gcc-4.4.0/gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-4.c +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-4.c @@ -1,5 +1,6 @@ /* PR tree-optimization/20076 */ /* { dg-do run } */ +/* { dg-xfail-run-if "b/2070963" { { i?86-*-* x86_64-*-* } && { ilp32 } } { "*" } { "" } } */ extern void abort (void); diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-prof/pr26570.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-prof/pr26570.c new file mode 100644 index 000000000..5dd78e3d1 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-prof/pr26570.c @@ -0,0 +1,13 @@ +/* { dg-options "-O2" } */ + +unsigned test (unsigned a, unsigned b) +{ + return a / b; +} + +int main() +{ + return test (6, 3) - 2; +} + +/* { dg-final { cleanup-coverage-files } } */ diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-prof/pr32773.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-prof/pr32773.c new file mode 100644 index 000000000..24ed96030 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-prof/pr32773.c @@ -0,0 +1,17 @@ +/* { dg-options "-O" } */ +/* { dg-options "-O -m4" { target sh-*-* } } */ + +void foo (int *p) +{ + if (p) + *p = 0; +} + +int main() +{ + int x; + foo (&x); + return 0; +} + +/* { dg-final { cleanup-coverage-files } } */ diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/data-dep-1.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/data-dep-1.c index 12e42b749..54153966a 100644 --- a/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/data-dep-1.c +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/data-dep-1.c @@ -24,5 +24,5 @@ int foo (int n, int m) outermost "k" loop: the 4 comes from the instantiation of the number of iterations of loop "j". */ -/* { dg-final { scan-tree-dump-times "4, \\+, 1" 0 "ltrans" } } */ +/* { dg-final { scan-tree-dump-times "\\\{4, \\+, 1\\\}" 0 "ltrans" } } */ /* { dg-final { cleanup-tree-dump "ltrans" } } */ diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/ltrans-1.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/ltrans-1.c index 63c4b5d98..736a4d955 100644 --- a/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/ltrans-1.c +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/ltrans-1.c @@ -18,6 +18,6 @@ int foo(int N, int *res) } *res = sum + N; } -/* { dg-final { scan-tree-dump-times "converted loop nest to perfect loop nest" 1 "ltrans" { xfail *-*-* } } } */ -/* { dg-final { scan-tree-dump-times "transformed loop" 1 "ltrans" { xfail *-*-* } } } */ +/* { dg-final { scan-tree-dump-times "converted loop nest to perfect loop nest" 1 "ltrans"} } */ +/* { dg-final { scan-tree-dump-times "transformed loop" 1 "ltrans"} } */ /* { dg-final { cleanup-tree-dump "ltrans" } } */ diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/ltrans-3.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/ltrans-3.c index 5f2f5ca13..51508f98a 100644 --- a/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/ltrans-3.c +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/ltrans-3.c @@ -17,5 +17,5 @@ int foo(int N, int *res) *res = sum + N; } -/* { dg-final { scan-tree-dump-times "transformed loop" 1 "ltrans" { xfail *-*-* } } } */ +/* { dg-final { scan-tree-dump-times "transformed loop" 1 "ltrans" } } */ /* { dg-final { cleanup-tree-dump "ltrans" } } */ diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/ltrans-4.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/ltrans-4.c index 46a5f6624..e2d6abced 100644 --- a/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/ltrans-4.c +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/ltrans-4.c @@ -16,5 +16,5 @@ int foo(int N, int *res) *res = sum + N; } -/* { dg-final { scan-tree-dump-times "transformed loop" 1 "ltrans" { xfail *-*-* } } } */ +/* { dg-final { scan-tree-dump-times "transformed loop" 1 "ltrans"} } */ /* { dg-final { cleanup-tree-dump "ltrans" } } */ diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/ltrans-5.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/ltrans-5.c index 95429315d..2f64925e9 100644 --- a/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/ltrans-5.c +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/ltrans-5.c @@ -13,5 +13,5 @@ int foo () return A[10][10]; } -/* { dg-final { scan-tree-dump-times "transformed loop" 1 "ltrans" { xfail *-*-* } } } */ +/* { dg-final { scan-tree-dump-times "transformed loop" 1 "ltrans"} } */ /* { dg-final { cleanup-tree-dump "ltrans" } } */ diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/ltrans-6.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/ltrans-6.c index e082e2876..edf30a3d5 100644 --- a/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/ltrans-6.c +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/ltrans-6.c @@ -17,5 +17,5 @@ int medium_loop_interchange(int A[100][200]) return A[1][1]; } -/* { dg-final { scan-tree-dump-times "transformed loop" 1 "ltrans" { xfail *-*-* } } } */ +/* { dg-final { scan-tree-dump-times "transformed loop" 1 "ltrans"} } */ /* { dg-final { cleanup-tree-dump "ltrans" } } */ diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/ltrans-8.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/ltrans-8.c index 3aec1e3e7..21f8ffafc 100644 --- a/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/ltrans-8.c +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/ltrans-8.c @@ -10,5 +10,5 @@ double foo(double *a) return r; } -/* { dg-final { scan-tree-dump-times "transformed loop" 1 "ltrans" { xfail *-*-* } } } */ +/* { dg-final { scan-tree-dump-times "transformed loop" 1 "ltrans"} } */ /* { dg-final { cleanup-tree-dump "ltrans" } } */ diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/pr40087.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/pr40087.c new file mode 100644 index 000000000..22e2b629e --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/pr40087.c @@ -0,0 +1,30 @@ +/* { dg-do run } */ +/* { dg-options "-O1 " } */ + +extern void abort (void); + +static void __attribute__((always_inline)) +reverse(int *first, int *last) +{ + if (first == last--) + return; + while (first != last) + { + int t = *first; + *first = *last; + *last = t; + if (++first == last--) + break; + } +} + +int main() +{ + int seq[] = { 1, 2, 3, 4, 5, 6, 7, 8 }; + + reverse(seq, seq + 8); + if (seq[3] != 5 || seq[4] != 4) + abort (); + + return 0; +} diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-11.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-11.c index bd66bc2a7..6e13e1875 100644 --- a/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-11.c +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-11.c @@ -6,13 +6,13 @@ void foo(int *p) { while (1) { - *p = 0; + *p = 1; *p = 0; } } void bar(int *p) { - *p = 0; + *p = 1; *p = 0; abort (); } diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-21.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-21.c new file mode 100644 index 000000000..aadf32e21 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-21.c @@ -0,0 +1,26 @@ +/* { dg-do compile } */ +/* { dg-options "-O -fdump-tree-fre" } */ + +struct f { + float a; + float b; + float c; + float d; +}; + +struct f a; + +void h(float, float, float, float); + +void g(void) +{ + float a1 = a.a, b = a.b, c = a.c, d = a.d; + a.a = a1; + a.b = b; + a.c = c; + a.d = d; + h(a1, b, c, d); +} + +/* { dg-final { scan-tree-dump-not "a\\\.? = " "fre" } } */ +/* { dg-final { cleanup-tree-dump "fre" } } */ diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-26.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-26.c new file mode 100644 index 000000000..65c75ede3 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-26.c @@ -0,0 +1,27 @@ +/* { dg-do compile } */ +/* { dg-options "-Os -fdump-tree-pre-details" } */ + +typedef union +{ + int* data; +} SA; + +typedef struct +{ + int reserved; + char* array; +}SB; + +typedef struct +{ + int status; +}SC; + +void foo(SA* pResult, SB* method, SC* self) +{ + if (method->array[0] == 'L' && !self->status && pResult->data != 0) + pResult->data = pResult->data; +} + +/* { dg-final { scan-tree-dump "Deleted dead store" "pre" } } */ +/* { dg-final { cleanup-tree-dump "pre" } } */ diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/vrp47.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/vrp47.c index 16548c259..d99408967 100644 --- a/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/vrp47.c +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/tree-ssa/vrp47.c @@ -31,16 +31,16 @@ int f(int x) /* Test that x and y are never compared to 0 -- they're always known to be 0 or 1. */ /* xfail: PR middle-end/38219 */ -/* { dg-final { scan-tree-dump-times "\[xy\]\[^ \]* !=" 0 "vrp1" { xfail *-*-* }} } */ +/* { dg-final { scan-tree-dump-times "\[xy\]\[^ \]* !=" 0 "vrp1" { xfail powerpc*-*-* }} } */ /* This one needs more copy propagation that only happens in dom1. */ /* xfail: PR middle-end/38219 */ -/* { dg-final { scan-tree-dump-times "x\[^ \]* & y" 1 "dom1" { xfail *-*-* } } } */ +/* { dg-final { scan-tree-dump-times "x\[^ \]* & y" 1 "dom1" { xfail powerpc*-*-* } } } */ /* { dg-final { scan-tree-dump-times "x\[^ \]* & y" 1 "vrp1" { xfail *-*-* } } } */ /* These two are fully simplified by VRP. */ -/* { dg-final { scan-tree-dump-times "x\[^ \]* \[|\] y" 1 "vrp1" { xfail *-*-* } } } */ -/* { dg-final { scan-tree-dump-times "x\[^ \]* \\^ 1" 1 "vrp1" { xfail *-*-* } } } */ +/* { dg-final { scan-tree-dump-times "x\[^ \]* \[|\] y" 1 "vrp1" } } */ +/* { dg-final { scan-tree-dump-times "x\[^ \]* \\^ 1" 1 "vrp1" } } */ /* { dg-final { cleanup-tree-dump "vrp\[0-9\]" } } */ /* { dg-final { cleanup-tree-dump "dom\[0-9\]" } } */ diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-11.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-11.c index 5251f0a2a..2730534e9 100644 --- a/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-11.c +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-11.c @@ -17,10 +17,10 @@ void f2(void) void f3(int p) { - int x; /* { dg-warning "may be used" "conditional" } */ + int x; if (p) x = p; - sink = x; + sink = x; /* { dg-warning "may be used" "conditional" } */ } void f4(int p) diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-5.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-5.c index ae7a8de76..df2a27c44 100644 --- a/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-5.c +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-5.c @@ -1,7 +1,7 @@ /* Spurious uninitialized-variable warnings. */ - +/* Disable jump threading, etc to test compiler analysis. */ /* { dg-do compile } */ -/* { dg-options "-O -Wuninitialized" } */ +/* { dg-options "-O -Wuninitialized -fno-tree-dce -fno-tree-vrp -fno-tree-dominator-opts" } */ extern void use(int); extern void foo(void); diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-I.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-I.c index 7be60d786..2bed232c2 100644 --- a/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-I.c +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-I.c @@ -3,6 +3,6 @@ int sys_msgctl (void) { - struct { int mode; } setbuf; /* { dg-warning "'setbuf\.mode' is used" } */ + struct { int mode; } setbuf; return setbuf.mode; -} +} /* { dg-warning "'setbuf\.mode' is used" } */ diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pr19430.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pr19430.c index ecf9c0096..19b5105b8 100644 --- a/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pr19430.c +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pr19430.c @@ -18,10 +18,10 @@ foo (int i) int foo2( void ) { - int rc; /* { dg-warning "'rc' is used uninitialized in this function" } */ + int rc; return rc; *&rc = 0; -} +} /* { dg-warning "'rc' is used uninitialized in this function" } */ extern int printf(const char *, ...); void frob(int *pi); diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pr20644.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pr20644.c index e13910bec..23c21b957 100644 --- a/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pr20644.c +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pr20644.c @@ -18,7 +18,7 @@ int bar () int j; if (1 == i) - return j; /* { dg-warning "uninitialized" "uninitialized" { target *-*-* } 18 } */ + return j; /* { dg-warning "uninitialized" "uninitialized" { target *-*-* } 24 } */ return 0; } diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-2_a.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-2_a.c new file mode 100644 index 000000000..5edf21d30 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-2_a.c @@ -0,0 +1,28 @@ +/* { dg-do compile } */ +/* { dg-options "-Wuninitialized -O2" } */ + +int g; +void bar (void); +void blah (int); + +int foo (int n, int m, int r) +{ + int flag = 0; + int v; + + if (n) + { + v = r; + flag = 1; + } + + if (m) + g++; + else + bar(); + + if (flag) + blah(v); /* { dg-bogus "uninitialized" "bogus uninitialized var warning" } */ + + return 0; +} diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-2_b.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-2_b.c new file mode 100644 index 000000000..ac7697e3c --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-2_b.c @@ -0,0 +1,29 @@ +/* { dg-do compile } */ +/* { dg-options "-Wuninitialized -O2" } */ + +int g; +void bar (void); +void blah (int); + +int foo (int n, int m, int r) +{ + int flag = 0; + int v; + + if (n) + { + v = r; + flag = 1; + } + + if (m) + g++; + else + bar(); + + /* Wrong guard */ + if (!flag) + blah(v); /* { dg-warning "uninitialized" "real uninitialized var warning" } */ + + return 0; +} diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-2_c.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-2_c.c new file mode 100644 index 000000000..941f6328d --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-2_c.c @@ -0,0 +1,48 @@ +/* { dg-do compile } */ +/* { dg-options "-Wuninitialized -O2" } */ + +int g; +void bar (void); +void blah (int); + +int foo (int n, int m, int r) +{ + int flag = 0; + int v; + + if (n) + { + v = r; + flag = 1; + } + + if (m) g++; + else bar(); + + if (flag) + blah(v); /* { dg-bogus "uninitialized" "bogus uninitialized var warning" } */ + + return 0; +} + +int foo_2 (int n, int m, int r) +{ + int flag = 0; + int v; + + if (n) + { + v = r; + flag = 1; + } + + if (m) g++; + else bar(); + + if (flag) + blah(v); /* { dg-bogus "uninitialized" "bogus uninitialized var warning" } */ + else + blah(v); /* { dg-warning "uninitialized" "real uninitialized var warning" } */ + + return 0; +} diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-3_a.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-3_a.c new file mode 100644 index 000000000..0ef0650ae --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-3_a.c @@ -0,0 +1,28 @@ +/* { dg-do compile } */ +/* { dg-options "-Wuninitialized -O2" } */ + +int g; +void bar(); +void blah(int); + +int foo (int n, int m, int r) +{ + int flag = 0; + int v; + + if (n) + { + v = r; + flag = 1; + } + + if (m) + g++; + else + bar(); + + if (r > 0) + if (flag) + blah(v); /* {dg-bogus "uninitialized" "bogus warning" } */ + return 0; +} diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-3_b.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-3_b.c new file mode 100644 index 000000000..978210d50 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-3_b.c @@ -0,0 +1,33 @@ +/* { dg-do compile } */ +/* { dg-options "-Wuninitialized -O2" } */ + +int g; +void bar(); +void blah(int); + +int foo (int n, int m, int r) +{ + int flag = 0; + int v; + + if (n) + { + v = r; + flag = 1; + } + + if (m) + g++; + else + bar(); + + if (r > 0) + goto use; + if (flag) + { +use: + blah(v); /* { dg-warning "uninitialized" "real warning" } */ + } + + return 0; +} diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-3_c.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-3_c.c new file mode 100644 index 000000000..130979078 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-3_c.c @@ -0,0 +1,28 @@ +/* { dg-do compile } */ +/* { dg-options "-Wuninitialized -O2" } */ + +int g; +void bar(); +void blah(int); + +int foo (int n, int m, int r) +{ + int flag = 0; + int v; + + if (n) + { + v = r; + flag = -1; + } + + if (m) + g++; + else + bar(); + + if (r > 0) + if (flag < 0) + blah(v); /* {dg-bogus "uninitialized" "bogus warning" } */ + return 0; +} diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-3_d.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-3_d.c new file mode 100644 index 000000000..9f938763c --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-3_d.c @@ -0,0 +1,28 @@ +/* { dg-do compile } */ +/* { dg-options "-Wuninitialized -O2" } */ + +int g; +void bar(); +void blah(int); + +int foo (int n, int m, int r) +{ + int flag = 0; + int v; + + if (n) + { + v = r; + flag = -1; + } + + if (m) + g++; + else + bar(); + + if (r > 0) + if (flag == -1) + blah(v); /* {dg-bogus "uninitialized" "bogus warning" } */ + return 0; +} diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-3_e.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-3_e.c new file mode 100644 index 000000000..66e2a3a93 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-3_e.c @@ -0,0 +1,28 @@ +/* { dg-do compile } */ +/* { dg-options "-Wuninitialized -O2" } */ + +int g; +void bar(); +void blah(int); + +int foo (int n, int m, int r) +{ + int flag = 0; + int v; + + if (n) + { + v = r; + flag = -1; + } + + if (m) + g++; + else + bar(); + + if (r > 0) + if (flag <= 0 ) + blah(v); /* { dg-warning "uninitialized" "real warning" } */ + return 0; +} diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-4_a.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-4_a.c new file mode 100644 index 000000000..7b2d291a6 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-4_a.c @@ -0,0 +1,43 @@ +/* { dg-do compile } */ +/* { dg-options "-Wuninitialized -O2" } */ + +int g; +void bar(); +void blah(int); +int foo (int n, int m, int r, int t) +{ + int flag = 0; + int v; + + if (t) + { + if (n) + { + v = r; /* init path 1 */ + flag = 1; + } + + if (m) + g++; + else + bar(); + + if (flag) /* properly guarded */ + blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */ + } + else + { + v = r+1; /* init path 2 */ + flag = 2; + } + + if (m) + g++; + else + bar(); + + if (flag) /* properly guarded */ + blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */ + + return 0; +} diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-4_b.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-4_b.c new file mode 100644 index 000000000..376639588 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-4_b.c @@ -0,0 +1,40 @@ +/* { dg-do compile } */ +/* { dg-options "-Wuninitialized -O2" } */ + +int g; +void bar(); +void blah(int); +int foo (int n, int m, int r, int t) +{ + int flag = 0; + int v; + + if (t) + { + if (n) + { + v = r; /* init path 1 */ + flag = 1; + } + + if (m) g++; + else bar(); + + if (flag) /* properly guarded */ + blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */ + } + else + { + v = r+1; /* init path 2 */ + flag = 2; + } + + if (m) g++; + else bar(); + + if (g) /* guard can not be determined statically to be safe */ + blah(v); /* { dg-warning "uninitialized" "real warning" } */ + + return 0; +} + diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-5_a.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-5_a.c new file mode 100644 index 000000000..845f3c461 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-5_a.c @@ -0,0 +1,41 @@ +/* { dg-do compile } */ +/* { dg-options "-Wuninitialized -O2" } */ + +int g; +int bar(); +int blah(int); +void t(int); + +__attribute__((always_inline)) +int foo (int n, int* v, int r) +{ + int flag = 0; + if (r > n) + { + *v = bar(); + flag = 1; + } + + if (n > g) + g++; + else + bar(); + + return flag; +} + +int a[100]; +int b[100]; +int blah(int n) +{ + int i; + for (i = 0 ; i < n; i++) + { + int v; + if (!foo (n, &v, b[i])) + return 0; + t (v); /* { dg-bogus "uninitialized" "bogus warning" } */ + } + return 1; +} + diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-5_b.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-5_b.c new file mode 100644 index 000000000..13f1e31f8 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-5_b.c @@ -0,0 +1,41 @@ +/* { dg-do compile } */ +/* { dg-options "-Wuninitialized -O2" } */ + +int g; +int bar(); +int blah(int); +void t(int); + +__attribute__((always_inline)) +int foo (int n, int* v, int r) +{ + int flag = 0; + if (r > n) + { + *v = bar(); + flag = 1; + } + + if (n > g) + g++; + else + bar(); + + return flag; +} + +int a[100]; +int b[100]; +int blah(int n) +{ + int i; + for (i = 0 ; i < n; i++) + { + int v; + if (foo (n, &v, b[i])) + return 0; + t (v); /* { dg-warning "uninitialized" "real warning" } */ + } + return 1; +} + diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-6_a.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-6_a.c new file mode 100644 index 000000000..aa44f7616 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-6_a.c @@ -0,0 +1,40 @@ + +/* { dg-do compile } */ +/* { dg-options "-Wuninitialized -O2" } */ + +int g; +void bar(); +void blah(int); + +int foo (int n, int l, int m, int r) +{ + int v; + + if (n && l) + v = r; + + if (m) g++; + else bar(); + + if ( n && l) + blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */ + + return 0; +} + +int foo_2 (int n, int l, int m, int r) +{ + int v; + + if (n && l) + v = r; + + if (m) g++; + else bar(); + + if (n) + blah (v); /* { dg-warning "uninitialized" "warning" } */ + + return 0; +} + diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-6_b.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-6_b.c new file mode 100644 index 000000000..dcc9a14a3 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-6_b.c @@ -0,0 +1,46 @@ + +/* { dg-do compile } */ +/* { dg-options "-Wuninitialized -O2" } */ + +int g; +void bar(); +void blah(int); + +int foo (int n, int l, int m, int r) +{ + int v; + + if (n) + if (l) + v = r; + + if (m) g++; + else bar(); + + if ( n && l) + blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */ + + if (l) + if (n) + blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */ + + return 0; +} + +int foo_2 (int n, int l, int m, int r) +{ + int v; + + if (n) + if (l) + v = r; + + if (m) g++; + else bar(); + + if (n || l) + blah (v); /* { dg-warning "uninitialized" "warning" } */ + + return 0; +} + diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-6_c.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-6_c.c new file mode 100644 index 000000000..f60868dad --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-6_c.c @@ -0,0 +1,46 @@ + +/* { dg-do compile } */ +/* { dg-options "-Wuninitialized -O2" } */ + +int g; +void bar(); +void blah(int); + +int foo (int n, int l, int m, int r) +{ + int v; + + if (n > 10) + if (l) + v = r; + + if (m) g++; + else bar(); + + if ( (n > 10) && l) + blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */ + + if (l) + if (n > 12) + blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */ + + return 0; +} + +int foo_2 (int n, int l, int m, int r) +{ + int v; + + if (n > 10) + if (l) + v = r; + + if (m) g++; + else bar(); + + if (n > 8 ) + if (l) + blah (v); /* { dg-warning "uninitialized" "warning" } */ + + return 0; +} diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-6_d.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-6_d.c new file mode 100644 index 000000000..704c3e6e1 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-6_d.c @@ -0,0 +1,24 @@ + +/* { dg-do compile } */ +/* { dg-options "-Wuninitialized -O2" } */ + +int g; +void bar(); +void blah(int); + +int foo (int n, int l, int m, int r) +{ + int v; + + if (n) + v = r; + + if (m) g++; + else bar(); + + if ( n && l) + blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */ + + return 0; +} + diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-6_e.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-6_e.c new file mode 100644 index 000000000..21f429daf --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-6_e.c @@ -0,0 +1,43 @@ + +/* { dg-do compile } */ +/* { dg-options "-Wuninitialized -O2" } */ + +int g; +void bar(); +void blah(int); + +int foo (int n, int l, int m, int r) +{ + int v; + + if (n > 10) + v = r; + + if (m) g++; + else bar(); + + if ( (n > 10) && (l < 100)) + blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */ + + if ( n > 100 ) + blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */ + + return 0; +} + +int foo_2 (int n, int l, int m, int r) +{ + int v; + + if (n > 10) + v = r; + + if (m) g++; + else bar(); + + if ( n < 10) + blah (v); /* { dg-warning "uninitialized" "warning" } */ + + + return 0; +} diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-7_a.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-7_a.c new file mode 100644 index 000000000..c2ba2a424 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-7_a.c @@ -0,0 +1,54 @@ + +/* { dg-do compile } */ +/* { dg-options "-Wuninitialized -O2" } */ + +int g; +void bar(); +void blah(int); + +int foo (int n, int l, int m, int r) +{ + int v; + + if (n || l) + v = r; + + if (m) g++; + else bar(); + + if ( n && l) + blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */ + + if ( n ) + blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */ + + if ( l ) + blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */ + + return 0; +} + +int foo_2 (int n, int l, int m, int r) +{ + int v; + + if (n || l) + v = r; + + if (m) g++; + else bar(); + + if ( n && l) + blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */ + + if ( n ) + blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */ + + if (m || l) + blah (v); /* { dg-warning "uninitialized" "warning" } */ + + if ( l ) + blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */ + + return 0; +} diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-7_b.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-7_b.c new file mode 100644 index 000000000..338d18c95 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-7_b.c @@ -0,0 +1,23 @@ + +/* { dg-do compile } */ +/* { dg-options "-Wuninitialized -O2" } */ + +int g; +void bar(); +void blah(int); + +int foo (int n, int l, int m, int r) +{ + int v; + + if (n > 10) + v = r; + + if (m) g++; + else bar(); + + if (( n > 10) || (l != 100)) + blah (v); /* { dg-warning "uninitialized" "warning" } */ + + return 0; +} diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-7_c.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-7_c.c new file mode 100644 index 000000000..1bbe5014d --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-7_c.c @@ -0,0 +1,33 @@ + +/* { dg-do compile } */ +/* { dg-options "-Wuninitialized -O2" } */ + +int g; +void bar(); +void blah(int); + +int foo (int n, int l, int m, int r) +{ + int v; + + if (n) + v = r; + + if (m) g++; + else bar(); + + if (n ) + { + if (l) + g++; + else + goto l; + } + else + { +l: + blah (v); /* { dg-warning "uninitialized" "warning" } */ + } + + return 0; +} diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-8_a.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-8_a.c new file mode 100644 index 000000000..1b7c47242 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-8_a.c @@ -0,0 +1,45 @@ + +/* { dg-do compile } */ +/* { dg-options "-Wuninitialized -O2" } */ + +int g; +void bar(); +void blah(int); + +int foo (int n, int l, int m, int r) +{ + int v; + + if (n || m || r || l) + v = r; + + if (m) g++; + else bar(); + + if ( n || m || r || l) + blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */ + + if ( n ) + blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */ + + if ( l ) + blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */ + + return 0; +} + +int foo_2 (int n, int l, int m, int r) +{ + int v; + + if (n || m || r ) + v = r; + + if (m) g++; + else bar(); + + if ( n || m || r || l) + blah(v); /* { dg-warning "uninitialized" "warning" } */ + + return 0; +} diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-8_b.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-8_b.c new file mode 100644 index 000000000..06e2eba27 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-8_b.c @@ -0,0 +1,45 @@ + +/* { dg-do compile } */ +/* { dg-options "-Wuninitialized -O2" } */ + +int g; +void bar(); +void blah(int); + +int foo (int n, int l, int m, int r) +{ + int v; + + if (n < 10 || m > 100 || r < 20 || l) + v = r; + + if (m) g++; + else bar(); + + if ( n < 10 || m > 100 || r < 20 ) + blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */ + + if ( n < 10 || m > 100 || r < 10 ) + blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */ + + return 0; +} + +int foo_2 (int n, int l, int m, int r) +{ + int v; + + if (n < 10 || m > 100 || r < 20 || l) + v = r; + + if (m) g++; + else bar(); + + if ( n < 10 || m > 100 || r < 20 ) + blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */ + + if ( n < 10 || m > 100 || r < 30 ) + blah(v); /* { dg-warning "uninitialized" "warning" } */ + + return 0; +} diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-8_c.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-8_c.c new file mode 100644 index 000000000..39d1bcd93 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-8_c.c @@ -0,0 +1,39 @@ + +/* { dg-do compile } */ +/* { dg-options "-Wuninitialized -O2" } */ + +int g; +void bar(); +void blah(int); + +int foo (int n, int l, int m, int r) +{ + int v; + + if (n < 10 && m > 100 && r < 20 ) + v = r; + + if (m) g++; + else bar(); + + if ( n <= 8 && m > 101 && r < 19 ) + blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */ + + return 0; +} + +int foo_2 (int n, int l, int m, int r) +{ + int v; + + if (n < 10 && m > 100 && r < 20 ) + v = r; + + if (m) g++; + else bar(); + + if ( n <= 8 && m > 99 && r < 19 ) + blah(v); /* { dg-warning "uninitialized" "warning" } */ + + return 0; +} diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-9_a.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-9_a.c new file mode 100644 index 000000000..67fb8ab97 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-9_a.c @@ -0,0 +1,23 @@ + +/* { dg-do compile } */ +/* { dg-options "-Wuninitialized -O2" } */ + +int g; +void bar(); +void blah(int); + +int foo (int n, int l, int m, int r) +{ + int v; + + if ( (n < 10) && (m == l) && (r < 20) ) + v = r; + + if (m) g++; + else bar(); + + if ( (n <= 8) && (m == l) && (r < 19) ) + blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */ + + return 0; +} diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-9_b.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-9_b.c new file mode 100644 index 000000000..d9ae75e07 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/uninit-pred-9_b.c @@ -0,0 +1,44 @@ + +/* { dg-do compile } */ +/* { dg-options "-Wuninitialized -O2" } */ + +int g; +void bar(); +void blah(int); + +int foo (int n, int l, int m, int r) +{ + int v; + + if ( (n < 10) && (m != 100) && (r < 20) ) + v = r; + + if (m) g++; + else bar(); + + if (l > 100) + if ( (n <= 9) && (m < 100) && (r < 19) ) + blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */ + + if ( (n <= 8) && (m < 99) && (r < 19) ) + blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */ + + return 0; +} + +int foo_2 (int n, int l, int m, int r) +{ + int v; + + if ( (n < 10) && (m != 100) && (r < 20) ) + v = r; + + if (m) g++; + else bar(); + + if (l > 100) + if ( (n <= 8) && (m < 101) && (r < 19) ) + blah(v); /* { dg-warning "uninitialized" "real warning" } */ + + return 0; +} diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/vect/slp-widen-mult-s16.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/vect/slp-widen-mult-s16.c index b4ed282d0..a60420b41 100644 --- a/gcc-4.4.0/gcc/testsuite/gcc.dg/vect/slp-widen-mult-s16.c +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/vect/slp-widen-mult-s16.c @@ -5,8 +5,9 @@ #define N 64 -short X[N] __attribute__ ((__aligned__(16))); -short Y[N] __attribute__ ((__aligned__(16))); +short X[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63}; +short Y[N] __attribute__ ((__aligned__(16))) = {64,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}; + int result[N]; /* short->int widening-mult */ @@ -26,11 +27,6 @@ int main (void) check_vect (); - for (i=0; i<N; i++) { - X[i] = i; - Y[i] = 64-i; - } - foo1 (N); for (i=0; i<N; i++) { @@ -44,4 +40,3 @@ int main (void) /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_widen_mult_hi_to_si || vect_unpack } } } } */ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target { vect_widen_mult_hi_to_si || vect_unpack } } } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ - diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/vect/slp-widen-mult-u8.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/vect/slp-widen-mult-u8.c index 16bf57816..bba1a8e92 100644 --- a/gcc-4.4.0/gcc/testsuite/gcc.dg/vect/slp-widen-mult-u8.c +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/vect/slp-widen-mult-u8.c @@ -5,8 +5,9 @@ #define N 64 -unsigned char X[N] __attribute__ ((__aligned__(16))); -unsigned char Y[N] __attribute__ ((__aligned__(16))); +unsigned char X[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63}; +unsigned char Y[N] __attribute__ ((__aligned__(16))) = {64,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}; + unsigned short result[N]; /* char->short widening-mult */ @@ -26,13 +27,6 @@ int main (void) check_vect (); - for (i=0; i<N; i++) { - X[i] = i; - Y[i] = 64-i; - if (i % 5) - X[i] = i; - } - foo1 (N); for (i=0; i<N; i++) { @@ -46,4 +40,3 @@ int main (void) /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_widen_mult_qi_to_hi || vect_unpack } } } } */ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target { vect_widen_mult_hi_to_si || vect_unpack } } } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ - diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/vect/vect-35.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/vect/vect-35.c index d75308f22..c6c3bf338 100644 --- a/gcc-4.4.0/gcc/testsuite/gcc.dg/vect/vect-35.c +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/vect/vect-35.c @@ -17,9 +17,7 @@ int main1 () /* Initialization. */ for (i = 0; i < N; i++) { - s.b[i] = 3*i; - if (i%3 == 0) - s.b[i] = 3*i; + s.b[i] = i; } /* Dependence analysis fails cause s.a and s.b may overlap. @@ -32,7 +30,7 @@ int main1 () /* check results: */ for (i = 0; i < N; i++) { - if (s.a[i] != 3*i + 1) + if (s.a[i] != i + 1) abort (); } @@ -47,6 +45,6 @@ int main (void) } -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ +/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */ /* { dg-final { scan-tree-dump-times "can't determine dependence between" 1 "vect" } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/vect/vect-multitypes-16.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/vect/vect-multitypes-16.c index b5347ebec..d7a121c5a 100644 --- a/gcc-4.4.0/gcc/testsuite/gcc.dg/vect/vect-multitypes-16.c +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/vect/vect-multitypes-16.c @@ -5,7 +5,7 @@ #define N 64 -char x[N] __attribute__ ((__aligned__(16))); +char x[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63}; __attribute__ ((noinline)) int foo (int len, long long *z) { @@ -24,12 +24,6 @@ int main (void) check_vect (); - for (i=0; i<N; i++) { - x[i] = i; - if (i % 5) - x[i] = i; - } - foo (N,z+2); for (i=0; i<N; i++) { @@ -43,4 +37,3 @@ int main (void) /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_unpack } } } */ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { target { ! vect_unpack } } } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ - diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/vect/vect-multitypes-17.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/vect/vect-multitypes-17.c index 61670e699..ffa1d5ac4 100644 --- a/gcc-4.4.0/gcc/testsuite/gcc.dg/vect/vect-multitypes-17.c +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/vect/vect-multitypes-17.c @@ -5,9 +5,9 @@ #define N 64 -unsigned char uX[N] __attribute__ ((__aligned__(16))); +unsigned char uX[N] __attribute__ ((__aligned__(16))) = {16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}; unsigned char uresultX[N]; -unsigned long long uY[N] __attribute__ ((__aligned__(16))); +unsigned long long uY[N] __attribute__ ((__aligned__(16))) = {16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}; unsigned char uresultY[N]; /* Unsigned type demotion (si->qi) */ @@ -28,13 +28,6 @@ int main (void) check_vect (); - for (i=0; i<N; i++) { - uX[i] = 16-i; - uY[i] = 16-i; - if (i%5 == 0) - uX[i] = 16-i; - } - foo1 (N); for (i=0; i<N; i++) { @@ -49,4 +42,3 @@ int main (void) /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_pack_trunc } } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ - diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8a.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8a.c index d8aefdad1..2931b4f52 100644 --- a/gcc-4.4.0/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8a.c +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8a.c @@ -7,8 +7,8 @@ #define DOT 43680 -unsigned char X[N] __attribute__ ((__aligned__(16))); -unsigned char Y[N] __attribute__ ((__aligned__(16))); +unsigned char X[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63}; +unsigned char Y[N] __attribute__ ((__aligned__(16))) = {64,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}; /* char->short->int dot product. Detected as a dot-product pattern. @@ -41,13 +41,6 @@ int main (void) check_vect (); - for (i=0; i<N; i++) { - X[i] = i; - Y[i] = 64-i; - if (i%5 == 0) - X[i] = i; - } - dot = foo (N); if (dot != DOT) abort (); @@ -60,4 +53,3 @@ int main (void) /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_widen_mult_qi_to_hi && vect_widen_sum_qi_to_si } } } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ - diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8b.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8b.c index 5496f6af9..e7156de48 100644 --- a/gcc-4.4.0/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8b.c +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8b.c @@ -7,8 +7,8 @@ #define DOT 43680 -unsigned char X[N] __attribute__ ((__aligned__(16))); -unsigned char Y[N] __attribute__ ((__aligned__(16))); +unsigned char X[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63}; +unsigned char Y[N] __attribute__ ((__aligned__(16))) = {64,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}; /* char->short->short dot product. Detected as a dot-product pattern. @@ -36,14 +36,6 @@ int main (void) check_vect (); - for (i=0; i<N; i++) { - X[i] = i; - Y[i] = 64-i; - /* Avoid vectorization. */ - if (i%100 == 0) - X[i] = i; - } - dot = foo (N); if (dot != DOT) abort (); @@ -60,4 +52,3 @@ dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_udot /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" {target { vect_widen_mult_qi_to_hi || vect_unpack } } } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ - diff --git a/gcc-4.4.0/gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-dot-s8b.c b/gcc-4.4.0/gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-dot-s8b.c index 31eb3f620..7fc00e21a 100644 --- a/gcc-4.4.0/gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-dot-s8b.c +++ b/gcc-4.4.0/gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-dot-s8b.c @@ -7,8 +7,8 @@ #define DOT -21856 -signed char X[N] __attribute__ ((__aligned__(16))); -signed char Y[N] __attribute__ ((__aligned__(16))); +signed char X[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63}; +signed char Y[N] __attribute__ ((__aligned__(16))) = {64,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}; /* char->short->short dot product. The dot-product pattern should be detected. @@ -37,13 +37,6 @@ int main (void) check_vect (); - for (i=0; i<N; i++) { - X[i] = i; - Y[i] = 64-i; - if (i%5 == 0) - X[i] = i; - } - dot = foo (N); if (dot != DOT) abort (); |