diff options
Diffstat (limited to 'gcc-4.4.0/gcc/testsuite')
109 files changed, 2316 insertions, 153 deletions
diff --git a/gcc-4.4.0/gcc/testsuite/g++.dg/debug/dwarf2/icf.C b/gcc-4.4.0/gcc/testsuite/g++.dg/debug/dwarf2/icf.C new file mode 100644 index 000000000..86f18d4f8 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/g++.dg/debug/dwarf2/icf.C @@ -0,0 +1,48 @@ +// Test support for ICF debugging. +// { dg-do compile } +// { dg-options "-O0 -gdwarf-2 -fenable-icf-debug -dA" } + +class A +{ + public: + A(); + virtual void work(); + virtual int p(); + private: + int i; +}; + +class B +{ + public: + B(); + ~B(); + void work(const A* a); + private: + int j; +}; + +int +test1(A* a) +{ + a->work(); +} + +int +test2(A* a) +{ + if (a->p()) + { + B b; + b.work(a); + } +} + +// Verify that we get .debug_dcall and .debug_vcall tables generated, +// that we see the proper number of points of call, and that we see +// entries for both virtual calls. +// { dg-final { scan-assembler "\\.section.*\.debug_dcall" } } +// { dg-final { scan-assembler "\\.section.*\.debug_vcall" } } +// { dg-final { scan-assembler-times "Point of call" 6 } } +// { dg-final { scan-assembler "0x0.*Vtable slot" } } +// { dg-final { scan-assembler "0x1.*Vtable slot" } } diff --git a/gcc-4.4.0/gcc/testsuite/g++.dg/other/no-strict-enum-precision-1.C b/gcc-4.4.0/gcc/testsuite/g++.dg/other/no-strict-enum-precision-1.C new file mode 100644 index 000000000..87f263c9c --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/g++.dg/other/no-strict-enum-precision-1.C @@ -0,0 +1,22 @@ +/* { dg-do run } */ +/* { dg-options "-fno-strict-enum-precision" } */ + +enum zero_one { zero = 0, one = 1 }; + +int* allocate_bool(zero_one e) { + int* v = 0; + switch (e) { + case zero: v = new int(0); + case one: v = new int(1); + } + return v; +} + +int main() { + if (allocate_bool(static_cast<zero_one>(999))) { + /* Error: should not have matched any case label. */ + return 1; + } else { + return 0; + } +} diff --git a/gcc-4.4.0/gcc/testsuite/g++.dg/other/no-strict-enum-precision-2.C b/gcc-4.4.0/gcc/testsuite/g++.dg/other/no-strict-enum-precision-2.C new file mode 100644 index 000000000..5b6af1743 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/g++.dg/other/no-strict-enum-precision-2.C @@ -0,0 +1,26 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -fno-strict-enum-precision" } */ + +enum X { + X1, + X2 +}; + +int foo (enum X x) { + switch (x) { + case X1: + return 0; + case X2: + return 1; + } + return x; +} + +int main(int argc, char *argv[]) { + int n = argc + 999; + if (n == foo(static_cast<X>(n))) { + return 0; + } else { + return 1; + } +} diff --git a/gcc-4.4.0/gcc/testsuite/g++.dg/other/no-strict-enum-precision-3.C b/gcc-4.4.0/gcc/testsuite/g++.dg/other/no-strict-enum-precision-3.C new file mode 100755 index 000000000..c3802a813 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/g++.dg/other/no-strict-enum-precision-3.C @@ -0,0 +1,14 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -fno-strict-enum-precision" } */ + +enum X { + X1, + X2 +}; + +int main(int argc, char *argv[]) { + X x = static_cast<X>(argc + 999); + if (x == X1) return 1; + if (x == X2) return 1; + return 0; +} diff --git a/gcc-4.4.0/gcc/testsuite/g++.dg/parse/cond5.C b/gcc-4.4.0/gcc/testsuite/g++.dg/parse/cond5.C new file mode 100644 index 000000000..7ed9fbe89 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/g++.dg/parse/cond5.C @@ -0,0 +1,10 @@ +// PR c++/40566 + +void +f (int x, int y) +{ + int c = x ? 23 : throw "bla"; + short d = y ? throw "bla" : 23; + char e = x ? 23 : throw "bla"; + long f = x ? 23 : throw "bla"; +} diff --git a/gcc-4.4.0/gcc/testsuite/g++.dg/thread-ann/thread_annot_common.h b/gcc-4.4.0/gcc/testsuite/g++.dg/thread-ann/thread_annot_common.h index 5344fed0e..192c84e84 100644 --- a/gcc-4.4.0/gcc/testsuite/g++.dg/thread-ann/thread_annot_common.h +++ b/gcc-4.4.0/gcc/testsuite/g++.dg/thread-ann/thread_annot_common.h @@ -74,4 +74,11 @@ class SCOPED_LOCKABLE ReaderMutexLock { ~ReaderMutexLock() UNLOCK_FUNCTION(); }; +class SCOPED_LOCKABLE ReleasableMutexLock { + public: + explicit ReleasableMutexLock(Mutex *mu) EXCLUSIVE_LOCK_FUNCTION(mu); + ~ReleasableMutexLock() UNLOCK_FUNCTION(); + void Release() UNLOCK_FUNCTION(); +}; + #endif // THREAD_ANNOT_COMMON_H diff --git a/gcc-4.4.0/gcc/testsuite/g++.dg/thread-ann/thread_annot_lock-43.C b/gcc-4.4.0/gcc/testsuite/g++.dg/thread-ann/thread_annot_lock-43.C new file mode 100644 index 000000000..36fcb1bc4 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/g++.dg/thread-ann/thread_annot_lock-43.C @@ -0,0 +1,31 @@ +// Test lock canonicalization when populating the initial lock sets of a +// function. It locks are properly canonicalized, the analysis should not +// complained about a_ in function FooBar::GetA() is not protected. +// This is a good test case. (i.e. There should be no warning emitted by the +// compiler.) +// { dg-do compile } +// { dg-options "-Wthread-safety -O" } + +#include "thread_annot_common.h" + +class Foo { + public: + Mutex *mu_; +}; + +class FooBar { + public: + Foo *foo_; + int GetA() EXCLUSIVE_LOCKS_REQUIRED(foo_->mu_) { return a_; } + int a_ GUARDED_BY(foo_->mu_); +}; + +FooBar *fb; + +main() +{ + int x; + fb->foo_->mu_->Lock(); + x = fb->GetA(); + fb->foo_->mu_->Unlock(); +} diff --git a/gcc-4.4.0/gcc/testsuite/g++.dg/thread-ann/thread_annot_lock-44.C b/gcc-4.4.0/gcc/testsuite/g++.dg/thread-ann/thread_annot_lock-44.C new file mode 100644 index 000000000..4b1618818 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/g++.dg/thread-ann/thread_annot_lock-44.C @@ -0,0 +1,58 @@ +// Test the support for releasable scoped lock (e.g std::unique_lock). +// This is a good test case. (i.e. There should be no warning emitted by the +// compiler.) +// { dg-do compile } +// { dg-options "-Wthread-safety -O" } + +#include "thread_annot_common.h" + +extern void bar(); + +Mutex mu1, mu2; +int a GUARDED_BY(mu1); + +void foo(int x) { + if (x > 2) { + ReleasableMutexLock l(&mu1); + if (a < 3) { + a = x + 1; + l.Release(); + bar(); + } + else { + a = x + 2; + } + } +} + +void func(int x) { + ReleasableMutexLock l(&mu1); + ReleasableMutexLock m(&mu2); + switch (x) { + case 1: + { + a = x + 1; + l.Release(); + bar(); + break; + } + case 3: + { + a = x + 3; + m.Release(); + break; + } + case 2: + { + a = x + 2; + l.Release(); + bar(); + break; + } + default: + { + a = x + 3; + break; + } + } +} diff --git a/gcc-4.4.0/gcc/testsuite/g++.dg/torture/pr40389.C b/gcc-4.4.0/gcc/testsuite/g++.dg/torture/pr40389.C new file mode 100644 index 000000000..e3ceb1238 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/g++.dg/torture/pr40389.C @@ -0,0 +1,84 @@ +/* { dg-do run } */ + +template <typename V> struct S +{ + V *f, *l; + __attribute__ ((noinline)) S (void) { f = 0, l = 0; } + void foo (V *x) + { + if (x->p != 0) + x->p->n = x->n; + else + f = x->n; + if (x->n != 0) + x->n->p = x->p; + else + l = x->p; + } + __attribute__ ((noinline)) void bar (V *x) + { + x->n = 0; + x->p = l; + if (l != 0) + l->n = x; + else + f = x; + l = x; + } +}; + +struct H; + +struct A +{ + S <H> k; +}; + +struct H +{ + A *a; + H *p, *n; + __attribute__ ((noinline)) H (void) { p = 0, n = 0, a = 0; } + __attribute__ ((noinline)) H (A *b) : a (b) + { + p = 0; + n = 0; + if (a != 0) + a->k.bar (this); + } + __attribute__ ((noinline)) H (const H &h) : a (h.a) + { + p = 0; + n = 0; + if (a != 0) + a->k.bar (this); + } + ~H (void) { if (a != 0) a->k.foo (this); } + H &operator= (const H &o) + { + if (a != 0 || &o == this) + __builtin_abort (); + a = o.a; + if (a != 0) + a->k.bar (this); + return *this; + } +}; + +__attribute__ ((noinline)) +H baz (void) +{ + return H (new A); +} + +H g; + +int +main (void) +{ + g = baz (); + if (g.a->k.f != &g) + __builtin_abort (); + return 0; +} + diff --git a/gcc-4.4.0/gcc/testsuite/g++.dg/tree-ssa/dom-invalid.C b/gcc-4.4.0/gcc/testsuite/g++.dg/tree-prof/dom-invalid.C index 5513d3650..866b4d515 100644 --- a/gcc-4.4.0/gcc/testsuite/g++.dg/tree-ssa/dom-invalid.C +++ b/gcc-4.4.0/gcc/testsuite/g++.dg/tree-prof/dom-invalid.C @@ -1,7 +1,6 @@ // PR tree-optimization/39557 // invalid post-dom info leads to infinite loop -// { dg-do run } -// { dg-options "-Wall -fno-exceptions -O2 -fprofile-use -fno-rtti" } +// { dg-options "-Wall -fno-exceptions -O2 -fno-rtti" } struct C { @@ -49,4 +48,4 @@ main () { E e; e.bar (); -} // { dg-message "note: file" "" } +} diff --git a/gcc-4.4.0/gcc/testsuite/g++.dg/uninit-pred-1_a.C b/gcc-4.4.0/gcc/testsuite/g++.dg/uninit-pred-1_a.C new file mode 100644 index 000000000..58bb9c5d4 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/g++.dg/uninit-pred-1_a.C @@ -0,0 +1,63 @@ +/* { dg-do compile } */ +/* { dg-options "-Wuninitialized -O2" } */ + +typedef long long int64; +void incr (); +bool is_valid (int); +int get_time (); + +class A +{ +public: + A (); + ~A () { + if (I) delete I; + } + +private: + int* I; +}; + +bool get_url (A *); + +class M { + + public: +__attribute__ ((always_inline)) int GetC (int *c) { + + A details_str; + if (!get_url (&details_str)) + { + incr (); + return 1; + } + + *c = get_time (); + return -1; + } + + void do_sth(); + void do_sth2(); + + void P (int64 t) + { + int cc; /* { dg-bogus "uninitialized" "uninitialized variable warning" } */ + if (GetC (&cc) >= 0 ) + return; + + if (t && cc <= 0 ) /* { dg-bogus "uninitialized" "uninitialized variable warning" } */ + { + this->do_sth(); + return; + } + + do_sth2(); + } +}; + +M* m; +void foo(int x) +{ + m = new M; + m->P(x); +} diff --git a/gcc-4.4.0/gcc/testsuite/g++.dg/uninit-pred-1_b.C b/gcc-4.4.0/gcc/testsuite/g++.dg/uninit-pred-1_b.C new file mode 100644 index 000000000..0d5b71ec8 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/g++.dg/uninit-pred-1_b.C @@ -0,0 +1,63 @@ +/* { dg-do compile } */ +/* { dg-options "-Wuninitialized -O2" } */ + +typedef long long int64; +void incr (); +bool is_valid (int); +int get_time (); + +class A +{ +public: + A (); + ~A () { + if (I) delete I; + } + +private: + int* I; +}; + +bool get_url (A *); + +class M { + + public: +__attribute__ ((always_inline)) int GetC (int *c) { + + A details_str; + if (!get_url (&details_str)) + { + incr (); + return 1; + } + + *c = get_time (); + return -1; + } + + void do_sth(); + void do_sth2(); + + void P (int64 t) + { + int cc; /* { dg-excess-errors "note: 'cc' was declared here" } */ + if (GetC (&cc) <= 0 ) /* return flag checked wrongly */ + return; + + if (t && cc <= 0 ) /* { dg-warning "uninitialized" "uninitialized variable warning" } */ + { + this->do_sth(); + return; + } + + do_sth2(); + } +}; + +M* m; +void foo(int x) +{ + m = new M; + m->P(x); +} diff --git a/gcc-4.4.0/gcc/testsuite/g++.dg/uninit-pred-2_a.C b/gcc-4.4.0/gcc/testsuite/g++.dg/uninit-pred-2_a.C new file mode 100644 index 000000000..918c94375 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/g++.dg/uninit-pred-2_a.C @@ -0,0 +1,62 @@ +/* { dg-do compile } */ +/* { dg-options "-Wuninitialized -O2" } */ + +typedef long long int64; +void incr (); +bool is_valid (int); +int get_time (); + +class A +{ +public: + A (); + ~A () { + if (I) delete I; + } + +private: + int* I; +}; + +bool get_url (A *); + +class M { + + public: +__attribute__ ((always_inline)) bool GetC (int *c) { + + A details_str; + if (get_url (&details_str)) + { + *c = get_time (); + return true; + } + + return false; + } + + void do_sth(); + void do_sth2(); + + void P (int64 t) + { + int cc; + if (!GetC (&cc)) /* return flag checked properly */ + return; + + if (cc <= 0) /* { dg-bogus "uninitialized" "uninitialized variable warning" } */ + { + this->do_sth(); + return; + } + + do_sth2(); + } +}; + +M* m; +void foo(int x) +{ + m = new M; + m->P(x); +} diff --git a/gcc-4.4.0/gcc/testsuite/g++.dg/uninit-pred-2_b.C b/gcc-4.4.0/gcc/testsuite/g++.dg/uninit-pred-2_b.C new file mode 100644 index 000000000..7259d8f95 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/g++.dg/uninit-pred-2_b.C @@ -0,0 +1,62 @@ +/* { dg-do compile } */ +/* { dg-options "-Wuninitialized -O2" } */ + +typedef long long int64; +void incr (); +bool is_valid (int); +int get_time (); + +class A +{ +public: + A (); + ~A () { + if (I) delete I; + } + +private: + int* I; +}; + +bool get_url (A *); + +class M { + + public: +__attribute__ ((always_inline)) bool GetC (int *c) { + + A details_str; + if (get_url (&details_str)) + { + *c = get_time (); + return true; + } + + return false; + } + + void do_sth(); + void do_sth2(); + + void P (int64 t) + { + int cc; /* { dg-excess-errors "note" } */ + if (GetC (&cc)) /* return flag checked wrongly */ + return; + + if (cc <= 0) /* { dg-warning "uninitialized" "uninitialized variable warning" } */ + { + this->do_sth(); + return; + } + + do_sth2(); + } +}; + +M* m; +void foo(int x) +{ + m = new M; + m->P(x); +} diff --git a/gcc-4.4.0/gcc/testsuite/g++.dg/uninit-pred-loop-1_a.cc b/gcc-4.4.0/gcc/testsuite/g++.dg/uninit-pred-loop-1_a.cc new file mode 100644 index 000000000..835cdbae3 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/g++.dg/uninit-pred-loop-1_a.cc @@ -0,0 +1,21 @@ +/* { dg-do compile } */ +/* { dg-options "-Wuninitialized -O2" } */ + +extern int bar(); +int foo(void) +{ + for (;;) { + int err = ({int _err; /* { dg-bogus "uninitialized" "false warning" } */ + for (int i = 0; i < 16; ++i) { + _err = 17; + _err = bar(); + } + _err; /* { dg-bogus "uninitialized" "false warning" } */ + }); + + if (err == 0) return 17; + } + + return 18; +} + diff --git a/gcc-4.4.0/gcc/testsuite/g++.dg/uninit-pred-loop-1_b.cc b/gcc-4.4.0/gcc/testsuite/g++.dg/uninit-pred-loop-1_b.cc new file mode 100644 index 000000000..e4ef3d22c --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/g++.dg/uninit-pred-loop-1_b.cc @@ -0,0 +1,21 @@ +/* { dg-do compile } */ +/* { dg-options "-Wuninitialized -O2" } */ + +extern int bar(); +int foo(int n) +{ + for (;;) { + int err = ({int _err; + for (int i = 0; i < n; ++i) { + _err = 17; + _err = bar(); + } + _err; + }); /* { dg-warning "uninitialized" "warn on _err" } */ + + if (err == 0) return 17; + } + + return 18; +} + diff --git a/gcc-4.4.0/gcc/testsuite/g++.dg/uninit-pred-loop-1_c.cc b/gcc-4.4.0/gcc/testsuite/g++.dg/uninit-pred-loop-1_c.cc new file mode 100644 index 000000000..7f6b41d31 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/g++.dg/uninit-pred-loop-1_c.cc @@ -0,0 +1,23 @@ +/* { dg-do compile } */ +/* { dg-options "-Wuninitialized -O2" } */ + +extern int bar(); +int foo(int n, int m) +{ + for (;;) { + int err = ({int _err; + for (int i = 0; i < 16; ++i) { + if (m+i > n) + break; + _err = 17; + _err = bar(); + } + _err; + }); + + if (err == 0) return 17; }); /* { dg-warning "uninitialized" "warn on _err" } */ + } + + return 18; +} + diff --git a/gcc-4.4.0/gcc/testsuite/g++.dg/uninit-pred-loop_1.cc b/gcc-4.4.0/gcc/testsuite/g++.dg/uninit-pred-loop_1.cc new file mode 100644 index 000000000..835cdbae3 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/g++.dg/uninit-pred-loop_1.cc @@ -0,0 +1,21 @@ +/* { dg-do compile } */ +/* { dg-options "-Wuninitialized -O2" } */ + +extern int bar(); +int foo(void) +{ + for (;;) { + int err = ({int _err; /* { dg-bogus "uninitialized" "false warning" } */ + for (int i = 0; i < 16; ++i) { + _err = 17; + _err = bar(); + } + _err; /* { dg-bogus "uninitialized" "false warning" } */ + }); + + if (err == 0) return 17; + } + + return 18; +} + diff --git a/gcc-4.4.0/gcc/testsuite/g++.dg/warn/Warray-bounds.C b/gcc-4.4.0/gcc/testsuite/g++.dg/warn/Warray-bounds.C index 0385516ab..06b0a39ec 100644 --- a/gcc-4.4.0/gcc/testsuite/g++.dg/warn/Warray-bounds.C +++ b/gcc-4.4.0/gcc/testsuite/g++.dg/warn/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]); @@ -88,4 +88,3 @@ int* f(void) { return a; } - diff --git a/gcc-4.4.0/gcc/testsuite/g++.dg/warn/Wicf.C b/gcc-4.4.0/gcc/testsuite/g++.dg/warn/Wicf.C new file mode 100644 index 000000000..98fb21571 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/g++.dg/warn/Wicf.C @@ -0,0 +1,31 @@ +// Test -Wicf to warn about function pointers used in comparisons. +// Origin: Sriraman Tallam <tmsriram@google.com> + +// { dg-do compile} +// { dg-options "-Wicf" } + +struct A +{ + int foo (int); + int bar (int); +}; + +extern int foo (int); +extern int baz (int); + +int (*funcptr) (int); +int (A::*Aptr) (int); +void +bar (int a) +{ + funcptr = baz; + Aptr = &A::foo; + if (foo == funcptr) // { dg-warning "Function pointer used" "correct warning" } + foo (10); + if (funcptr == baz) // { dg-warning "Function pointer used" "correct warning" } + foo (10); + if (&A::foo == &A::bar) // { dg-warning "Method pointer used" "correct warning" } + foo (10); + if (Aptr == &A::foo) // { dg-warning "Method pointer used" "correct warning" } + foo (10); +} diff --git a/gcc-4.4.0/gcc/testsuite/g++.dg/warn/Wreturn-type-6.C b/gcc-4.4.0/gcc/testsuite/g++.dg/warn/Wreturn-type-6.C new file mode 100644 index 000000000..497e3b9eb --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/g++.dg/warn/Wreturn-type-6.C @@ -0,0 +1,13 @@ +/* PR c++/40749 */ +/* { dg-do "compile" } */ +/* { dg-options "-Wreturn-type" } */ + +struct A {}; +const A a() {} /* { dg-warning "no return statement" } */ +const A& b() {} /* { dg-warning "no return statement" } */ + +const int c() {} /* { dg-warning "no return statement" } */ + +template<class T> +const int foo(T t) {} /* { dg-warning "no return statement" } */ +int d = foo<int>(0), e = foo<int>(1); diff --git a/gcc-4.4.0/gcc/testsuite/g++.dg/warn/Wuninitialized-4.C b/gcc-4.4.0/gcc/testsuite/g++.dg/warn/Wuninitialized-4.C new file mode 100644 index 000000000..3d2543fb1 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/g++.dg/warn/Wuninitialized-4.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/g++.dg/warn/Wuninitialized-5.C b/gcc-4.4.0/gcc/testsuite/g++.dg/warn/Wuninitialized-5.C new file mode 100644 index 000000000..ff17acd6a --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/g++.dg/warn/Wuninitialized-5.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/g++.dg/warn/pragma-system_header3.h b/gcc-4.4.0/gcc/testsuite/g++.dg/warn/pragma-system_header3.h index e16f38f8a..1e96234ad 100644 --- a/gcc-4.4.0/gcc/testsuite/g++.dg/warn/pragma-system_header3.h +++ b/gcc-4.4.0/gcc/testsuite/g++.dg/warn/pragma-system_header3.h @@ -3,5 +3,5 @@ static inline int f() { int i; - return i; + return i + 1; } diff --git a/gcc-4.4.0/gcc/testsuite/g++.dg/warn/unit-1.C b/gcc-4.4.0/gcc/testsuite/g++.dg/warn/unit-1.C index 1bfe75b2f..432ba1d7e 100644 --- a/gcc-4.4.0/gcc/testsuite/g++.dg/warn/unit-1.C +++ b/gcc-4.4.0/gcc/testsuite/g++.dg/warn/unit-1.C @@ -4,7 +4,6 @@ struct a { int mode; }; int sys_msgctl (void) { - struct a setbuf; /* { dg-warning "'setbuf\.a::mode' is used" } */ + struct a setbuf; return setbuf.mode; -} - +} /* { dg-warning "'setbuf\.a::mode' is used" } */ diff --git a/gcc-4.4.0/gcc/testsuite/gcc.c-torture/compile/pr39999.c b/gcc-4.4.0/gcc/testsuite/gcc.c-torture/compile/pr39999.c new file mode 100644 index 000000000..c46a651a1 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.c-torture/compile/pr39999.c @@ -0,0 +1,18 @@ +void foo(void *); +void +MMAPGCD (int *A1, int *A2) +{ + int *t; + + do + { + t = A1; + A1 = A2; + A2 = t; + } + while (A2[-1]); + + foo (A1-1); + foo (A2-1); +} + diff --git a/gcc-4.4.0/gcc/testsuite/gcc.c-torture/compile/pr40035.c b/gcc-4.4.0/gcc/testsuite/gcc.c-torture/compile/pr40035.c new file mode 100644 index 000000000..1bf1a7c4c --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.c-torture/compile/pr40035.c @@ -0,0 +1,20 @@ +typedef __SIZE_TYPE__ size_t; +void *memmove (void *dest, const void *src, size_t count); +size_t strlen (const char *s); + +int +foo (char *param, char *val) +{ + if (val) + { + if (val == param + strlen (param) + 1) + val[-1] = '='; + else if (val == param + strlen (param) + 2) + { + val[-2] = '='; + memmove (val - 1, val, strlen (val) + 1); + val--; + } + } + return 0; +} diff --git a/gcc-4.4.0/gcc/testsuite/gcc.c-torture/compile/pr40204.c b/gcc-4.4.0/gcc/testsuite/gcc.c-torture/compile/pr40204.c new file mode 100644 index 000000000..3193284ff --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.c-torture/compile/pr40204.c @@ -0,0 +1,14 @@ +/* PR middle-end/40204 */ + +struct S +{ + unsigned int a : 4; + unsigned int b : 28; +} s; +char c; + +void +f (void) +{ + s.a = (c >> 4) & ~(1 << 4); +} diff --git a/gcc-4.4.0/gcc/testsuite/gcc.c-torture/execute/pr40022.c b/gcc-4.4.0/gcc/testsuite/gcc.c-torture/execute/pr40022.c new file mode 100644 index 000000000..1e8f728ab --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.c-torture/execute/pr40022.c @@ -0,0 +1,51 @@ +extern void abort (void); + +struct A +{ + struct A *a; +}; + +struct B +{ + struct A *b; +}; + +__attribute__((noinline)) +struct A * +foo (struct A *x) +{ + asm volatile ("" : : "g" (x) : "memory"); + return x; +} + +__attribute__((noinline)) +void +bar (struct B *w, struct A *x, struct A *y, struct A *z) +{ + struct A **c; + c = &w->b; + *c = foo (x); + while (*c) + c = &(*c)->a; + *c = foo (y); + while (*c) + c = &(*c)->a; + *c = foo (z); +} + +struct B d; +struct A e, f, g; + +int +main (void) +{ + f.a = &g; + bar (&d, &e, &f, 0); + if (d.b == 0 + || d.b->a == 0 + || d.b->a->a == 0 + || d.b->a->a->a != 0) + abort (); + return 0; +} + diff --git a/gcc-4.4.0/gcc/testsuite/gcc.c-torture/execute/pr40057.c b/gcc-4.4.0/gcc/testsuite/gcc.c-torture/execute/pr40057.c new file mode 100644 index 000000000..9d5c4e31e --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.c-torture/execute/pr40057.c @@ -0,0 +1,37 @@ +/* PR middle-end/40057 */ + +extern void abort (void); + +__attribute__((noinline)) int +foo (unsigned long long x) +{ + unsigned long long y = (x >> 31ULL) & 1ULL; + if (y == 0ULL) + return 0; + return -1; +} + +__attribute__((noinline)) int +bar (long long x) +{ + long long y = (x >> 31LL) & 1LL; + if (y == 0LL) + return 0; + return -1; +} + +int +main (void) +{ + if (sizeof (long long) != 8) + return 0; + if (foo (0x1682a9aaaULL)) + abort (); + if (!foo (0x1882a9aaaULL)) + abort (); + if (bar (0x1682a9aaaLL)) + abort (); + if (!bar (0x1882a9aaaLL)) + abort (); + return 0; +} diff --git a/gcc-4.4.0/gcc/testsuite/gcc.c-torture/execute/pr40747.c b/gcc-4.4.0/gcc/testsuite/gcc.c-torture/execute/pr40747.c new file mode 100644 index 000000000..1c75be3fc --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.c-torture/execute/pr40747.c @@ -0,0 +1,22 @@ +/* PR middle-end/40747 */ + +extern void abort (void); + +int +foo (int i) +{ + return (i < 4 && i >= 0) ? i : 4; +} + +int +main () +{ + if (foo (-1) != 4) abort (); + if (foo (0) != 0) abort (); + if (foo (1) != 1) abort (); + if (foo (2) != 2) abort (); + if (foo (3) != 3) abort (); + if (foo (4) != 4) abort (); + if (foo (5) != 4) abort (); + return 0; +} diff --git a/gcc-4.4.0/gcc/testsuite/gcc.c-torture/execute/pr42691.c b/gcc-4.4.0/gcc/testsuite/gcc.c-torture/execute/pr42691.c new file mode 100644 index 000000000..7eeee99ec --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.c-torture/execute/pr42691.c @@ -0,0 +1,41 @@ +extern void abort (void); + +union _D_rep +{ + unsigned short rep[4]; + double val; +}; + +int add(double* key, double* table) +{ + unsigned i = 0; + double* deletedEntry = 0; + while (1) { + double* entry = table + i; + + if (*entry == *key) + break; + + union _D_rep _D_inf = {{ 0, 0, 0, 0x7ff0 }}; + if (*entry != _D_inf.val) + abort (); + + union _D_rep _D_inf2 = {{ 0, 0, 0, 0x7ff0 }}; + if (!_D_inf2.val) + deletedEntry = entry; + + i++; + } + if (deletedEntry) + *deletedEntry = 0.0; + return 0; +} + +int main () +{ + union _D_rep infinit = {{ 0, 0, 0, 0x7ff0 }}; + double table[2] = { infinit.val, 23 }; + double key = 23; + int ret = add (&key, table); + return ret; +} 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 (); diff --git a/gcc-4.4.0/gcc/testsuite/gcc.misc-tests/linkage.exp b/gcc-4.4.0/gcc/testsuite/gcc.misc-tests/linkage.exp index 05c0311ad..6ee6cb339 100644 --- a/gcc-4.4.0/gcc/testsuite/gcc.misc-tests/linkage.exp +++ b/gcc-4.4.0/gcc/testsuite/gcc.misc-tests/linkage.exp @@ -57,7 +57,7 @@ if { [isnative] && ![is_remote host] } then { if [ string match "*64-bit*" $file_string ] { set native_cflags "-m64" } - } elseif [istarget "x86_64-*-linux*"] { + } elseif {[istarget "x86_64-*-linux*"] || [istarget "i?86-*-linux*"]} { set file_string [exec file "linkage-x.o"] if [ string match "*32-bit*" $file_string ] { set native_cflags "-m32" diff --git a/gcc-4.4.0/gcc/testsuite/gcc.target/arm/pr40670.c b/gcc-4.4.0/gcc/testsuite/gcc.target/arm/pr40670.c new file mode 100644 index 000000000..24786385d --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.target/arm/pr40670.c @@ -0,0 +1,8 @@ +/* { dg-options "-mthumb -O2" } */ +/* { dg-require-effective-target arm_thumb1_ok } */ +/* { dg-final { scan-assembler-not "ldr" } } */ + +float foo (void) +{ + return 2.0; +} diff --git a/gcc-4.4.0/gcc/testsuite/gcc.target/arm/pr40835.c b/gcc-4.4.0/gcc/testsuite/gcc.target/arm/pr40835.c new file mode 100644 index 000000000..76ad509eb --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gcc.target/arm/pr40835.c @@ -0,0 +1,56 @@ +/* { dg-options "-mthumb -Os" } */ +/* { dg-require-effective-target arm_thumb1_ok } */ +/* { dg-final { scan-assembler-not "cmp" } } */ + +int bar(); +void goo(int, int); + +void eq() +{ + int v = bar(); + if (v == 0) + return; + goo(1, v); +} + +void ge() +{ + int v = bar(); + if (v >= 0) + return; + goo(1, v); +} + +void gt() +{ + int v = bar(); + if (v > 0) + return; + goo(1, v); +} + +void lt() +{ + int v = bar(); + if (v < 0) + return; + goo(1, v); +} + +void le() +{ + int v = bar(); + if (v <= 0) + return; + goo(1, v); +} + +unsigned int foo(); + +void leu() +{ + unsigned int v = foo(); + if (v <= 0) + return; + goo(1, v); +} diff --git a/gcc-4.4.0/gcc/testsuite/gfortran.dg/argument_checking_13.f90 b/gcc-4.4.0/gcc/testsuite/gfortran.dg/argument_checking_13.f90 index ae3fd22b4..af7dfe1b9 100644 --- a/gcc-4.4.0/gcc/testsuite/gfortran.dg/argument_checking_13.f90 +++ b/gcc-4.4.0/gcc/testsuite/gfortran.dg/argument_checking_13.f90 @@ -79,5 +79,14 @@ call rlv3(pointer_dummy(1,1,1)) ! { dg-warning "contains too few elements" } call rlv3(deferred(1,1,1)(1:2)) ! Valid since contiguous call rlv3(ptr(1,1,1)(1:2)) ! { dg-warning "contains too few elements" } call rlv3(assumed_sh_dummy(1,1,1)(1:2)) ! { dg-warning "contains too few elements" } -call rlv3(pointer_dummy(1,1,1)(1:2)) ! { dg-warning "contains too few elements" } +! This test is flaky on Dapper Server (amd64) / xen with packages: +! expect-tcl8.3 5.43.0-3ubuntu1 +! dejagnu 1.4.4-1ubuntu1 +! Sometimes dejagnu doesn't see the last line of warning output from the +! compiler for *only* the following call. Dejagnu always sees at least *some* +! output, even if not the complete correct output, which fails the excess +! errors test if the complete error output is not seen. To work around the +! flakiness, we've changed this from dg-warning to dg-excess-errors, so that +! the compiler's output for this line will always be matched as excess. +call rlv3(pointer_dummy(1,1,1)(1:2)) ! { dg-excess-errors "compensate for flaky test" } end diff --git a/gcc-4.4.0/gcc/testsuite/gfortran.dg/ltrans-7.f90 b/gcc-4.4.0/gcc/testsuite/gfortran.dg/ltrans-7.f90 index ce5af4753..2829b2cda 100644 --- a/gcc-4.4.0/gcc/testsuite/gfortran.dg/ltrans-7.f90 +++ b/gcc-4.4.0/gcc/testsuite/gfortran.dg/ltrans-7.f90 @@ -26,5 +26,5 @@ Program FOO end Program FOO ! Please do not XFAIL. -! { 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/gfortran.dg/pr25923.f90 b/gcc-4.4.0/gcc/testsuite/gfortran.dg/pr25923.f90 index f075944b9..21d8f05cd 100644 --- a/gcc-4.4.0/gcc/testsuite/gfortran.dg/pr25923.f90 +++ b/gcc-4.4.0/gcc/testsuite/gfortran.dg/pr25923.f90 @@ -10,11 +10,11 @@ implicit none contains - function baz(arg) result(res) ! { dg-warning "res.yr' may be" } + function baz(arg) result(res) ! { dg-warning "res.yr' may be" "" { target { ilp32 } } } type(bar), intent(in) :: arg type(bar) :: res logical, external:: some_func - if (.not. some_func(arg)) then + if (.not. some_func(arg)) then ! { dg-warning "res.yr' may be" "" { target { lp64 } } } call fatal('arg not valid') else res = arg diff --git a/gcc-4.4.0/gcc/testsuite/gfortran.dg/pr39666-1.f90 b/gcc-4.4.0/gcc/testsuite/gfortran.dg/pr39666-1.f90 new file mode 100644 index 000000000..31840ec1d --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gfortran.dg/pr39666-1.f90 @@ -0,0 +1,14 @@ +! PR middle-end/39666 +! { dg-do compile } +! { dg-options "-O2 -Wuninitialized" } + +FUNCTION f(n) + INTEGER, INTENT(in) :: n + REAL :: f + + SELECT CASE (n) + CASE (:-1); f = -1.0 + CASE (0); f = 0.0 + CASE (1:); f = 1.0 + END SELECT +END FUNCTION diff --git a/gcc-4.4.0/gcc/testsuite/gfortran.dg/pr39666-2.f90 b/gcc-4.4.0/gcc/testsuite/gfortran.dg/pr39666-2.f90 new file mode 100644 index 000000000..c90b39408 --- /dev/null +++ b/gcc-4.4.0/gcc/testsuite/gfortran.dg/pr39666-2.f90 @@ -0,0 +1,14 @@ +! PR middle-end/39666 +! { dg-do compile } +! { dg-options "-O2 -Wuninitialized" } + +FUNCTION f(n) + INTEGER, INTENT(in) :: n + REAL :: f + + SELECT CASE (n) ! { dg-warning "may be used uninitialized" } + CASE (:-1); f = -1.0 + CASE (0); f = 0.0 + CASE (2:); f = 1.0 + END SELECT +END FUNCTION |