diff -Nrcpad gcc-3.3.5/gcc/testsuite/ChangeLog gcc-3.3.6/gcc/testsuite/ChangeLog *** gcc-3.3.5/gcc/testsuite/ChangeLog 2004-09-30 16:45:41.000000000 +0000 --- gcc-3.3.6/gcc/testsuite/ChangeLog 2005-05-03 10:53:44.000000000 +0000 *************** *** 1,3 **** --- 1,93 ---- + 2005-05-03 Release Manager + + * GCC 3.3.6 Released. + + 2005-05-01 Roger Sayle + + PR rtl-optimization/19579 + Backport from mainline + * gcc.c-torture/execute/20050124-1.c: New test. + + 2005-04-04 Gabriel Dos Reis + + PR c++/18644 + * g++.old-deja/g++.jason/warning9.C (struct A, main): Adjust. + + 2005-01-22 Roger Sayle + + PR target/18402 + Backport from mainline + 2003-02-05 Jakub Jelinek + + PR optimization/8555 + * gcc.dg/20030204-1.c: New test. + + 2005-01-21 Giovanni Bajo + + PR c++/17115 + * g++.dg/warn/Winline-4.C: New test. + + 2005-01-18 Eric Botcazou + + * gcc.dg/short-compare-1.c: New test. + * gcc.dg/short-compare-2.c: Likewise. + + 2005-01-03 Kaveh R. Ghazi + + Backport: + 2003-10-13 Geoffrey Keating + + * gcc.dg/asm-names.c: Use scan-assembler-not rather + than linker trickery. + + 2005-01-02 Kaveh R. Ghazi + + * gcc.c-torture/execute/20020720-1.x: XFAIL for x86 when using + -fpic or -fPIC. + + 2004-12-21 Joseph S. Myers + + PR c/14765 + * gcc.dg/pr14765-1.c: New test. + + 2004-12-20 Andrew Pinski + + PR other/19093 + * g++.dg/opt/max1.C: Fix for 64bit targets. + + 2004-12-19 Roger Sayle + + PR middle-end/19068 + * g++.dg/opt/max1.C: New test case. + + 2004-12-16 Wolfgang Bangerth + + * g++.dg/other/complex1.C: New test. + + 2004-12-10 Volker Reichelt + + PR rtl-optimization/16536 + * gcc.c-torture/execute/restrict-1.c: New test. + + 2004-12-09 Nathan Sidwell + + PR c++/16681 + * g++.dg/init/array15.C: New. + * g++.dg/init/array16.C: New. + + 2004-11-29 Roger Sayle + + PR rtl-optimization/9771 + * gcc.dg/pr9771-1.c: New test case. + + 2004-11-27 Falk Hueffner + + * gcc.dg/loop-6.c: New test. + + 2004-10-13 Eric Botcazou + + * g++.dg/inherit/thunk1.C: Run on the SPARC. + 2004-09-30 Release Manager * GCC 3.3.5 Released. diff -Nrcpad gcc-3.3.5/gcc/testsuite/gcc.c-torture/execute/20020720-1.x gcc-3.3.6/gcc/testsuite/gcc.c-torture/execute/20020720-1.x *** gcc-3.3.5/gcc/testsuite/gcc.c-torture/execute/20020720-1.x 2003-03-08 14:34:06.000000000 +0000 --- gcc-3.3.6/gcc/testsuite/gcc.c-torture/execute/20020720-1.x 2005-01-03 01:43:45.000000000 +0000 *************** *** 11,16 **** --- 11,29 ---- # and can make the optimization. # Don't XFAIL at -O0, that should never fail. + if { [istarget "i?86-*-*"] } { + set torture_eval_before_compile { + global compiler_conditional_xfail_data + set compiler_conditional_xfail_data { + "PR opt/10348" \ + { "*-*-*" } \ + { "-fpic" "-fPIC" } \ + { "-O0" } + } + } + return 0 + } + set torture_eval_before_compile { global compiler_conditional_xfail_data set compiler_conditional_xfail_data { diff -Nrcpad gcc-3.3.5/gcc/testsuite/gcc.c-torture/execute/20050124-1.c gcc-3.3.6/gcc/testsuite/gcc.c-torture/execute/20050124-1.c *** gcc-3.3.5/gcc/testsuite/gcc.c-torture/execute/20050124-1.c 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.6/gcc/testsuite/gcc.c-torture/execute/20050124-1.c 2005-05-01 07:23:20.000000000 +0000 *************** *** 0 **** --- 1,41 ---- + /* PR rtl-optimization/19579 */ + + extern void abort (void); + + int + foo (int i, int j) + { + int k = i + 1; + + if (j) + { + if (k > 0) + k++; + else if (k < 0) + k--; + } + + return k; + } + + int + main (void) + { + if (foo (-2, 0) != -1) + abort (); + if (foo (-1, 0) != 0) + abort (); + if (foo (0, 0) != 1) + abort (); + if (foo (1, 0) != 2) + abort (); + if (foo (-2, 1) != -2) + abort (); + if (foo (-1, 1) != 0) + abort (); + if (foo (0, 1) != 2) + abort (); + if (foo (1, 1) != 3) + abort (); + return 0; + } diff -Nrcpad gcc-3.3.5/gcc/testsuite/gcc.c-torture/execute/restrict-1.c gcc-3.3.6/gcc/testsuite/gcc.c-torture/execute/restrict-1.c *** gcc-3.3.5/gcc/testsuite/gcc.c-torture/execute/restrict-1.c 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.6/gcc/testsuite/gcc.c-torture/execute/restrict-1.c 2004-12-10 17:25:07.000000000 +0000 *************** *** 0 **** --- 1,30 ---- + /* PR rtl-optimization/16536 + Origin: Jeremy Denise + Reduced: Wolfgang Bangerth + Volker Reichelt */ + + extern void abort (); + + typedef struct + { + int i, dummy; + } A; + + inline A foo (const A* p, const A* q) + { + return (A){p->i+q->i}; + } + + void bar (A* __restrict__ p) + { + *p=foo(p,p); + if (p->i!=2) + abort(); + } + + int main () + { + A a={1}; + bar(&a); + return 0; + } diff -Nrcpad gcc-3.3.5/gcc/testsuite/gcc.dg/20030204-1.c gcc-3.3.6/gcc/testsuite/gcc.dg/20030204-1.c *** gcc-3.3.5/gcc/testsuite/gcc.dg/20030204-1.c 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.6/gcc/testsuite/gcc.dg/20030204-1.c 2005-01-23 05:16:14.000000000 +0000 *************** *** 0 **** --- 1,16 ---- + /* PR optimization/8555 */ + /* { dg-do compile } */ + /* { dg-options "-O -ffast-math -funroll-loops" } */ + /* { dg-options "-march=pentium3 -O -ffast-math -funroll-loops" { target i?86-*-* } } */ + + float foo (float *a, int i) + { + int j; + float x = a[j = i - 1], y; + + for (j = i; --j >= 0; ) + if ((y = a[j]) > x) + x = y; + + return x; + } diff -Nrcpad gcc-3.3.5/gcc/testsuite/gcc.dg/asm-names.c gcc-3.3.6/gcc/testsuite/gcc.dg/asm-names.c *** gcc-3.3.5/gcc/testsuite/gcc.dg/asm-names.c 2001-08-27 19:23:11.000000000 +0000 --- gcc-3.3.6/gcc/testsuite/gcc.dg/asm-names.c 2005-01-04 00:20:35.000000000 +0000 *************** *** 2,27 **** to have an underscore prefixed, even if normal symbols are. Problem reported by Krister Walfridsson . */ ! /* { dg-do link } */ /* { dg-options "-fleading-underscore" } */ extern void frobnicate (void) asm ("___frob14"); /* three underscores */ - void __frob14 (void) {} /* two underscores */ - int main (void) { frobnicate (); return 0; } - - /* In case built where the runtime expects no leading underscore on - main(). */ - extern int xmain (void) asm ("main"); - - int xmain (void) { return main(); } - - /* In case built where the runtime calls __main. */ - extern int ymain (void) asm ("___main"); - int ymain (void) { return main(); } --- 2,16 ---- to have an underscore prefixed, even if normal symbols are. Problem reported by Krister Walfridsson . */ ! /* { dg-do compile } */ /* { dg-options "-fleading-underscore" } */ + /* { dg-final { scan-assembler-not "____frob14" } } */ extern void frobnicate (void) asm ("___frob14"); /* three underscores */ int main (void) { frobnicate (); return 0; } diff -Nrcpad gcc-3.3.5/gcc/testsuite/gcc.dg/loop-6.c gcc-3.3.6/gcc/testsuite/gcc.dg/loop-6.c *** gcc-3.3.5/gcc/testsuite/gcc.dg/loop-6.c 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.6/gcc/testsuite/gcc.dg/loop-6.c 2004-11-27 16:59:16.000000000 +0000 *************** *** 0 **** --- 1,25 ---- + /* PR optimization/18577 */ + /* Origin: Falk Hueffner */ + + /* { dg-do run } */ + /* { dg-options "-O2 -funroll-all-loops" } */ + + static float tfcos12[3]; + __attribute__((noinline)) double f(double x) { return x; } + int g; + + int main(void) + { + int i, j; + for (i = 0; i < 1; i++) + tfcos12[i] = 0.5; + + for (i = 0; i < 1; i++) + { + tfcos12[i] = 0.5 * f(i); + for (j = 0; j < 12; j++) + g++; + } + + return 0; + } diff -Nrcpad gcc-3.3.5/gcc/testsuite/gcc.dg/pr14765-1.c gcc-3.3.6/gcc/testsuite/gcc.dg/pr14765-1.c *** gcc-3.3.5/gcc/testsuite/gcc.dg/pr14765-1.c 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.6/gcc/testsuite/gcc.dg/pr14765-1.c 2004-12-21 21:51:29.000000000 +0000 *************** *** 0 **** --- 1,11 ---- + /* Empty statement expressions should get void type. Bug 14765 from + Serge Belyshev . */ + /* { dg-do compile } */ + /* { dg-options "" } */ + + int a; + void fun () + { + a = 0; + a = ({}); /* { dg-error "not ignored" "void stmt expr" } */ + } diff -Nrcpad gcc-3.3.5/gcc/testsuite/gcc.dg/pr9771-1.c gcc-3.3.6/gcc/testsuite/gcc.dg/pr9771-1.c *** gcc-3.3.5/gcc/testsuite/gcc.dg/pr9771-1.c 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.6/gcc/testsuite/gcc.dg/pr9771-1.c 2004-11-30 04:34:21.000000000 +0000 *************** *** 0 **** --- 1,43 ---- + /* PR rtl-optimization/9771 */ + /* { dg-do run { target i?86-*-* } } */ + /* { dg-options "-O2 -fomit-frame-pointer -ffixed-ebp" } */ + + extern void abort(void); + extern void exit(int); + + register long *B asm ("ebp"); + + long x = 10; + long y = 20; + + void bar(void) + { + B = &y; + } + + void foo() + { + long *adr = B; + long save = *adr; + + *adr = 123; + + bar(); + + *adr = save; + } + + int main() + { + B = &x; + + foo(); + + if (x != 10 || y != 20) + abort(); + + /* We can't return, as our caller may assume %ebp is preserved! */ + /* We could save/restore it (like foo), but its easier to exit. */ + exit(0); + } + diff -Nrcpad gcc-3.3.5/gcc/testsuite/gcc.dg/short-compare-1.c gcc-3.3.6/gcc/testsuite/gcc.dg/short-compare-1.c *** gcc-3.3.5/gcc/testsuite/gcc.dg/short-compare-1.c 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.6/gcc/testsuite/gcc.dg/short-compare-1.c 2005-01-18 08:39:29.000000000 +0000 *************** *** 0 **** --- 1,21 ---- + /* PR rtl-optimization/19296 */ + /* Origin: Falk Hueffner */ + + /* { dg-do run } */ + /* { dg-options "-O" } */ + /* { dg-options "-O -mcpu=i686" { target i?86-*-* } } */ + /* { dg-options "-O -m32 -mcpu=i686" { target x86_64-*-* } } */ + + extern void abort(void); + + void f(unsigned short ad) + { + if (ad >= 0x4000 && ad < 0xc000) + abort(); + } + + int main(void) + { + f(0xff00); + return 0; + } diff -Nrcpad gcc-3.3.5/gcc/testsuite/gcc.dg/short-compare-2.c gcc-3.3.6/gcc/testsuite/gcc.dg/short-compare-2.c *** gcc-3.3.5/gcc/testsuite/gcc.dg/short-compare-2.c 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.6/gcc/testsuite/gcc.dg/short-compare-2.c 2005-01-18 08:39:29.000000000 +0000 *************** *** 0 **** --- 1,22 ---- + /* PR rtl-optimization/19296 */ + /* Origin: Falk Hueffner */ + /* Testcase by Andrew Pinski */ + + /* { dg-do run } */ + /* { dg-options "-O" } */ + /* { dg-options "-O -mcpu=i686" { target i?86-*-* } } */ + /* { dg-options "-O -m32 -mcpu=i686" { target x86_64-*-* } } */ + + extern void abort(); + + void f(unsigned short ad) + { + if ((short) (ad - 0x4000) >= 0) + abort(); + } + + int main(void) + { + f(0xc000); + return 0; + } diff -Nrcpad gcc-3.3.5/gcc/testsuite/g++.dg/inherit/thunk1.C gcc-3.3.6/gcc/testsuite/g++.dg/inherit/thunk1.C *** gcc-3.3.5/gcc/testsuite/g++.dg/inherit/thunk1.C 2002-10-24 09:16:36.000000000 +0000 --- gcc-3.3.6/gcc/testsuite/g++.dg/inherit/thunk1.C 2004-10-14 06:54:49.000000000 +0000 *************** *** 1,4 **** ! // { dg-do run { target i?86-*-* x86_64-*-* s390*-*-* alpha*-*-* ia64-*-* } } #include --- 1,4 ---- ! // { dg-do run { target i?86-*-* x86_64-*-* s390*-*-* alpha*-*-* ia64-*-* sparc*-*-* } } #include diff -Nrcpad gcc-3.3.5/gcc/testsuite/g++.dg/init/array15.C gcc-3.3.6/gcc/testsuite/g++.dg/init/array15.C *** gcc-3.3.5/gcc/testsuite/g++.dg/init/array15.C 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.6/gcc/testsuite/g++.dg/init/array15.C 2004-12-09 15:09:32.000000000 +0000 *************** *** 0 **** --- 1,46 ---- + // { dg-do run } + + // Copyright (C) 2004 Free Software Foundation, Inc. + // Contributed by Nathan Sidwell 8 Dec 2004 + + // PR 16681 too much memory used + // Origin: Matt LaFary + + struct foo { + unsigned char buffer[4111222]; + foo() ; + bool check () const; + }; + + foo::foo () + : buffer() + {} + + bool foo::check () const + { + for (unsigned ix = sizeof (buffer); ix--;) + if (buffer[ix]) + return false; + return true; + } + + void *operator new (__SIZE_TYPE__ size, void *p) + { + return p; + } + + char heap[5000000]; + + int main () + { + for (unsigned ix = sizeof (heap); ix--;) + heap[ix] = ix; + + foo *f = new (heap) foo (); + + if (!f->check ()) + return 1; + return 0; + } + + diff -Nrcpad gcc-3.3.5/gcc/testsuite/g++.dg/init/array16.C gcc-3.3.6/gcc/testsuite/g++.dg/init/array16.C *** gcc-3.3.5/gcc/testsuite/g++.dg/init/array16.C 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.6/gcc/testsuite/g++.dg/init/array16.C 2004-12-09 15:09:32.000000000 +0000 *************** *** 0 **** --- 1,106 ---- + // { dg-do run } + + // Copyright (C) 2004 Free Software Foundation, Inc. + // Contributed by Nathan Sidwell 8 Dec 2004 + + // PR 16681 too much memory used + // Origin: Matt LaFary + + + struct elt + { + static int count; + static elt*ptr; + static int abort; + char c; + + elt (); + ~elt (); + + }; + + int elt::count; + elt *elt::ptr; + int elt::abort; + + elt::elt () + :c () + { + if (count >= 0) + { + if (!ptr) + ptr = this; + if (count == 100) + throw 2; + if (this != ptr) + abort = 1; + count++; + ptr++; + } + } + + elt::~elt () + { + if (count >= 0) + { + ptr--; + count--; + if (ptr != this) + abort = 2; + } + } + + struct foo { + elt buffer[4111222]; + foo() ; + bool check () const; + }; + + foo::foo () + : buffer() + {} + + bool foo::check () const + { + for (unsigned ix = sizeof (buffer)/ sizeof (buffer[0]); ix--;) + if (buffer[ix].c) + return false; + return true; + } + + void *operator new (__SIZE_TYPE__ size, void *p) + { + return p; + } + + char heap[5000000]; + + int main () + { + for (unsigned ix = sizeof (heap); ix--;) + heap[ix] = ix; + + try + { + foo *f = new (heap) foo (); + return 1; + } + catch (...) + { + if (elt::count) + return 2; + if (elt::abort) + return elt::abort + 3; + } + + for (unsigned ix = sizeof (heap); ix--;) + heap[ix] = ix; + + elt::count = -1; + foo *f = new (heap) foo (); + if (!f->check ()) + return 3; + return 0; + } + + diff -Nrcpad gcc-3.3.5/gcc/testsuite/g++.dg/opt/max1.C gcc-3.3.6/gcc/testsuite/g++.dg/opt/max1.C *** gcc-3.3.5/gcc/testsuite/g++.dg/opt/max1.C 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.6/gcc/testsuite/g++.dg/opt/max1.C 2004-12-20 21:12:34.000000000 +0000 *************** *** 0 **** --- 1,29 ---- + /* PR middle-end/19068 */ + /* Test case by Andrew Pinski */ + /* { dg-do run } */ + /* { dg-options "-O2" } */ + + extern "C" void abort (void); + + long fff[10]; + + void f(long a) + { + int i; + a = *((long*)(a+1+sizeof(long))) >? *((long*)(a+1)); + + for(i=0;i<10;i++) + fff[i] = a; + } + + int main(void) + { + int i; + long a[2] = {10,5}; + f((long)(&a)-1); + for(i = 0;i<10;i++) + if (fff[i]!=10) + abort (); + return 0; + } + diff -Nrcpad gcc-3.3.5/gcc/testsuite/g++.dg/other/complex1.C gcc-3.3.6/gcc/testsuite/g++.dg/other/complex1.C *** gcc-3.3.5/gcc/testsuite/g++.dg/other/complex1.C 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.6/gcc/testsuite/g++.dg/other/complex1.C 2004-12-16 14:04:52.000000000 +0000 *************** *** 0 **** --- 1,28 ---- + // PR middle-end/18882 + // Origin: Petr Mikulik + // Testcase by Wolfgang Bangerth + + // { dg-do run } + // { dg-options "" } + + extern "C" void abort (); + + struct C { + __complex__ long double c; + }; + + void foo() + { + C x = {2+2i}; + + int n = 1; + C y = (n==1) ? x : (C){3+3i}; + if (__imag__ y.c != 2) + abort (); + } + + int main(void) + { + foo (); + return 0; + } diff -Nrcpad gcc-3.3.5/gcc/testsuite/g++.dg/warn/Winline-4.C gcc-3.3.6/gcc/testsuite/g++.dg/warn/Winline-4.C *** gcc-3.3.5/gcc/testsuite/g++.dg/warn/Winline-4.C 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.6/gcc/testsuite/g++.dg/warn/Winline-4.C 2005-01-21 10:02:30.000000000 +0000 *************** *** 0 **** --- 1,17 ---- + // { dg-do compile } + // { dg-options "-O2 -Winline" } + // Origin: + // PR 17115: We should not emit -Winline warning for functions marked with + // noinline + + struct Foo { + __attribute__((noinline)) int a(int r) { return r & 1; } + virtual __attribute__((noinline)) int b(int r) { return r & 1; } + static __attribute__((noinline)) int c(int r) { return r & 1; } + }; + + int bar(int r) { + Foo f; + int k = 1; k &= f.a(r); k &= f.b(r); k &= f.a(r); + return k; + } diff -Nrcpad gcc-3.3.5/gcc/testsuite/g++.old-deja/g++.jason/warning9.C gcc-3.3.6/gcc/testsuite/g++.old-deja/g++.jason/warning9.C *** gcc-3.3.5/gcc/testsuite/g++.old-deja/g++.jason/warning9.C 1998-12-16 21:38:37.000000000 +0000 --- gcc-3.3.6/gcc/testsuite/g++.old-deja/g++.jason/warning9.C 2005-04-04 07:42:34.000000000 +0000 *************** *** 2,13 **** struct A { operator int (); ! A& operator= (int); // WARNING - not used below }; main() { A a, b; ! a = b; // WARNING - uses synthesized op= } --- 2,13 ---- struct A { operator int (); ! A& operator= (int); }; main() { A a, b; ! a = b; } diff -Nrcpad gcc-3.3.5/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog gcc-3.3.6/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog *** gcc-3.3.5/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog 2004-09-30 16:46:01.000000000 +0000 --- gcc-3.3.6/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog 2005-05-03 10:54:03.000000000 +0000 *************** *** 1,3 **** --- 1,7 ---- + 2005-05-03 Release Manager + + * GCC 3.3.6 Released. + 2004-09-30 Release Manager * GCC 3.3.5 Released. diff -Nrcpad gcc-3.3.5/gcc/testsuite/treelang/ChangeLog gcc-3.3.6/gcc/testsuite/treelang/ChangeLog *** gcc-3.3.5/gcc/testsuite/treelang/ChangeLog 2004-09-30 16:45:31.000000000 +0000 --- gcc-3.3.6/gcc/testsuite/treelang/ChangeLog 2005-05-03 10:53:19.000000000 +0000 *************** *** 1,3 **** --- 1,7 ---- + 2005-05-03 Release Manager + + * GCC 3.3.6 Released. + 2004-09-30 Release Manager * GCC 3.3.5 Released.