diff -Nrc3pad gcc-3.3.1/gcc/testsuite/ChangeLog gcc-3.3.2/gcc/testsuite/ChangeLog *** gcc-3.3.1/gcc/testsuite/ChangeLog 2003-08-04 12:49:15.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/ChangeLog 2003-10-16 19:44:17.000000000 +0000 *************** *** 1,6 **** ! 2003-08-04 Release Manager ! * GCC 3.3.1 Released. 2003-08-04 Release Manager --- 1,282 ---- ! 2003-10-16 Release Manager ! * GCC 3.3.2 Released. ! ! 2003-10-15 Kriang Lerdsuwanakij ! ! PR c++/12369 ! * g++.dg/template/friend25.C: New test. ! ! 2003-10-15 Kriang Lerdsuwanakij ! ! PR c++/7939 ! * g++.dg/template/crash11.C: New test. ! ! 2003-10-14 Steven Bosscher ! ! * g++.dg/tls/init-2.C: Fix. Expect two warnings. ! ! 2003-10-11 Eric Botcazou ! ! * gcc.c-torture/compile/20031011-1.c: New test. ! ! 2003-10-09 Volker Reichelt ! ! * gcc.dg/20031009-1.c: New test. ! ! 2003-10-09 Mark Mitchell ! ! * g++.dg/ext/attrib8.C: Only run it on x86 targets. ! ! 2003-10-07 Mark Mitchell ! ! * g++.dg/template/ptrmem4.C: Revise in view of fixes for PR ! c++/10147. ! ! 2003-10-06 Bob Wilson ! ! * g++.dg/template/spec10.C: Set exit value to zero on success. Fix ! indentation. ! ! 2003-10-06 Mark Mitchell ! ! PR c++/12337 ! * g++.dg/init/new9.C: New test. ! ! PR c++/12334, c++/12236, c++/8656 ! * g++.dg/ext/attrib8.C: New test. ! ! 2003-10-06 Wolfgang Bangerth ! ! * g++.dg/opt/cfg2.C: New test. ! ! 2003-10-06 Eric Botcazou ! ! * g++.dg/opt/float1.C: New test. ! ! 2003-10-04 Roger Sayle ! ! PR c++/11409 ! * g++.dg/overload/builtin3.C: New test case. ! ! 2003-10-04 Eric Botcazou ! ! * gcc.dg/c90-array-lval-6.c: New test. ! * gcc.dg/c99-array-lval-6.c: New test. ! ! 2003-10-02 Mark Mitchell ! ! PR optimization/12180 ! * gcc.dg/20031002-1.c: New test. ! ! 2003-10-02 Mark Mitchell ! ! PR c++/12486 ! * g++.dg/inherit/error1.C: New test. ! ! 2003-10-02 Alexandre Oliva ! ! * g++.dg/parse/parameter-declaration-1.C: Fix line number of ! expected error message. ! ! 2003-10-02 Josef Zlomek ! ! * gcc.c-torture/compile/20031002-1.c: New test. ! ! 2003-10-02 Jakub Jelinek ! ! * g++.dg/opt/cond1.C: New test. ! ! 2003-09-29 Eric Botcazou ! ! * g++.dg/opt/unroll1.C: Change unsigned to __SIZE_TYPE__. ! ! 2003-09-27 Eric Botcazou ! ! * g++.dg/opt/unroll1.C: New test. ! ! 2003-09-24 Alexandre Oliva ! ! * gcc.dg/cpp/Wunknown-pragmas-1.c: New test. ! ! 2003-09-23 Geoffrey Keating ! ! * gcc.dg/darwin-abi-1.c: New file. ! ! 2003-09-22 Eric Botcazou ! ! * g++.dg/opt/reg-stack2.C: New test. ! ! 2003-09-21 Christian Ehrhardt ! ! * g++.dg/eh/delayslot1.C: New test. ! ! 2003-09-19 Andrew Pinski ! ! * g++.dg/init/array11.C: Change unsigned to __SIZE_TYPE__ ! so that it will not complain on LP64 targets. ! ! 2003-09-18 Mark Mitchell ! ! PR target/11184 ! * gcc.dg/builtin-apply1.c: New test. ! ! 2003-09-17 Mark Mitchell ! ! PR c++/11991 ! * g++.dg/rtti/typeid3.C: New test. ! ! 2003-09-17 Mark Mitchell ! ! PR c++/12266 ! * g++.dg/overload/template1.C: New test. ! ! 2003-09-17 Eric Botcazou ! ! * g++.dg/opt/cfg3.C: New test. ! ! 2003-09-14 Mark Mitchell ! ! PR c++/3907 ! * g++.dg/parse/template12.C: New test. ! ! 2003-09-14 Mark Mitchell ! ! * g++.dg/abi/bitfield11.C: New test. ! * g++.dg/abi/bitfield12.C: Likewise. ! ! 2003-09-14 Alexandre Oliva ! ! * gcc.dg/cpp/separate-1.c: Adjust line of error. Test for correct ! non-expansion of functional macro name without arguments at EOL. ! * gcc.dg/cpp/spacing1.c: Revert 2003-08-04's change. Likewise. ! ! 2003-09-10 Eric Botcazou ! ! * gcc.dg/ultrasp10.c: New test. ! ! 2003-09-08 Mark Mitchell ! ! PR c++/11786 ! * g++.dg/lookup/koenig2.C: New test. ! ! 2003-09-08 Mark Mitchell ! ! PR c++/5296 ! * g++.dg/rtti/typeid2.C: New test. ! ! 2003-09-07 Eric Botcazou ! ! * g++.dg/opt/longbranch2.C: New test. ! ! 2003-09-07 Andrew Pinski ! ! PR middle-end/11665 ! * gcc.c-torture/compile/20030907-1.c: New test. ! * g++.dg/init/array11.C: New test. ! ! 2003-09-07 Mark Mitchell ! ! PR c++/11852 ! * g++.dg/init/struct1.C: New test. ! ! 2003-09-07 Mark Mitchell ! ! PR c++/12181 ! * g++.dg/expr/comma1.C: New test. ! ! 2003-09-07 Eric Botcazou ! ! * gcc.c-torture/execute/20030907-1.c: New test. ! ! 2003-09-06 Mark Mitchell ! ! PR c++/11867 ! * g++.dg/expr/static_cast5.C: New test. ! ! 2003-09-05 Mark Mitchell ! ! PR c++/12163 ! * g++.dg/expr/static_cast4.C: New test. ! ! PR c++/12146 ! * g++.dg/template/crash9.C: New test. ! ! 2003-09-04 Mark Mitchell ! ! Revert this patch: ! * g++.dg/abi/layout4.C: New test. ! ! 2003-09-03 Mark Mitchell ! ! PR c++/12053 ! * g++.dg/abi/layout4.C: New test. ! ! 2003-09-01 Mark Mitchell ! ! PR c++/12114 ! * g++.dg/init/ref9.C: New test. ! ! 2003-08-29 Mark Mitchell ! ! PR c++/11928 ! * g++.dg/inherit/conv1.C: New test. ! ! 2003-08-26 Matt Kraai ! ! * gcc.dg/noncompile/20030818-1.c: Expect second line of error. ! ! 2003-08-25 Ulrich Weigand ! ! * gcc.dg/20030702-1.c: New test. ! ! 2003-08-23 Jakub Jelinek ! ! * gcc.dg/20030815-1.c: New test. ! ! 2003-08-22 Alexandre Oliva ! ! * gcc.dg/cpp/separate-1.c: New test. ! * gcc.dg/cpp/spacing1.c: Update. ! ! 2003-08-22 Mark Mitchell ! ! * gcc.misc-tests/linkage.exp: Treat all HP-UX platforms ! identically. ! ! 2003-08-22 Roger Sayle ! Jim Wilson ! ! * gcc.dg/uninit-C.c: Only test TImode on 64-bit platforms. ! ! 2003-08-22 Mark Mitchell ! ! * g++.old-deja/g++.ext/attrib5.C: XFAIL on hppa2*-hp-hpux11*. ! ! * gcc.dg/20020313-1.c: Add "-w" to dg-options. ! ! * gcc.misc-tests/linkage.exp: Add logic for ia64-hp-hpux*. ! ! * g++.dg/other/packed1.C: Add XFAIL marker for ia64-hp-hpux*. ! ! 2003-08-21 Kazu Hirata ! ! PR target/11805 ! * gcc.c-torture/compile/20030821-1.c: New. ! ! 2003-08-18 Matt Kraai ! ! * gcc.dg/noncompile/20030818-1.c: New. ! ! 2003-08-08 Roger Sayle ! ! PR c/11370 ! * gcc.dg/Wunreachable-6.c: New testcase. ! * gcc.dg/Wunreachable-7.c: New testcase. ! ! 2003-07-26 Geoffrey Keating ! ! * gcc.c-torture/compile/zero-strct-2.c: New test. 2003-08-04 Release Manager *************** rlsruhe.de> *** 14813,14815 **** --- 15089,15092 ---- correspond to c-torture 1.11. * New file. + diff -Nrc3pad gcc-3.3.1/gcc/testsuite/gcc.c-torture/compile/20030821-1.c gcc-3.3.2/gcc/testsuite/gcc.c-torture/compile/20030821-1.c *** gcc-3.3.1/gcc/testsuite/gcc.c-torture/compile/20030821-1.c 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/gcc.c-torture/compile/20030821-1.c 2003-08-21 13:08:53.000000000 +0000 *************** *** 0 **** --- 1,24 ---- + /* PR target/11805. */ + + /* Consider the following sequence. + + (set (cc0) + (and:HI (reg:HI 0) + (const_int 1))) + + (set (pc) + (if_then_else (le (cc0) + (const_int 0)) + (label_ref 17) + (pc))) + + On h8300, the first insn does not set the overflow flag, but the + second requires the overflow flag. As a result, when the final + wants to output the jump insn, it cannot find a test insn that + gives appropriate condition flags. */ + + unsigned char + foo (unsigned char a) + { + return (a & 1) > 0; + } diff -Nrc3pad gcc-3.3.1/gcc/testsuite/gcc.c-torture/compile/20030907-1.c gcc-3.3.2/gcc/testsuite/gcc.c-torture/compile/20030907-1.c *** gcc-3.3.1/gcc/testsuite/gcc.c-torture/compile/20030907-1.c 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/gcc.c-torture/compile/20030907-1.c 2003-09-08 03:11:27.000000000 +0000 *************** *** 0 **** --- 1,25 ---- + /* PR 11665 + Orgin: jwhite@cse.unl.edu + The problem was in initializer_constant_valid_p, + "for a CONSTRUCTOR, only the last element + of the CONSTRUCTOR was being checked" + (from the email of the patch which fixed this). + This used to ICE because GCC thought gdt_table was a + constant value when it is not. */ + + int x; + struct gdt + { + unsigned a,b,c,d,e,f; + }; + void f() + { + struct gdt gdt_table[2]= + { + { + 0, + ( (((unsigned)(&x))<<(24))&(-1<<(8)) ), + }, + }; + } + diff -Nrc3pad gcc-3.3.1/gcc/testsuite/gcc.c-torture/compile/20031002-1.c gcc-3.3.2/gcc/testsuite/gcc.c-torture/compile/20031002-1.c *** gcc-3.3.1/gcc/testsuite/gcc.c-torture/compile/20031002-1.c 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/gcc.c-torture/compile/20031002-1.c 2003-10-02 15:26:50.000000000 +0000 *************** *** 0 **** --- 1,9 ---- + /* PR/12292 + http://gcc.gnu.org/ml/gcc-patches/2003-10/msg00143.html */ + + char flags; + + int bug12292(int t) + { + flags &= ~(1 << (t + 4)); + } diff -Nrc3pad gcc-3.3.1/gcc/testsuite/gcc.c-torture/compile/20031011-1.c gcc-3.3.2/gcc/testsuite/gcc.c-torture/compile/20031011-1.c *** gcc-3.3.1/gcc/testsuite/gcc.c-torture/compile/20031011-1.c 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/gcc.c-torture/compile/20031011-1.c 2003-10-11 21:01:44.000000000 +0000 *************** *** 0 **** --- 1,21 ---- + /* PR optimization/12544 */ + /* Origin: Tony Hosking */ + + /* Verify that non-local structures passed by invisible + reference are correctly put in the stack. */ + + typedef struct { + int a; + int f; + } A; + + A *b; + + void x (A a) { + void y () { + a.a = 0; + } + + b = &a; + y(); + } diff -Nrc3pad gcc-3.3.1/gcc/testsuite/gcc.c-torture/compile/zero-strct-2.c gcc-3.3.2/gcc/testsuite/gcc.c-torture/compile/zero-strct-2.c *** gcc-3.3.1/gcc/testsuite/gcc.c-torture/compile/zero-strct-2.c 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/gcc.c-torture/compile/zero-strct-2.c 2003-08-08 21:17:59.000000000 +0000 *************** *** 0 **** --- 1,2 ---- + struct { } foo = { }; + void * bar(void) { return &foo; } diff -Nrc3pad gcc-3.3.1/gcc/testsuite/gcc.c-torture/execute/20030907-1.c gcc-3.3.2/gcc/testsuite/gcc.c-torture/execute/20030907-1.c *** gcc-3.3.1/gcc/testsuite/gcc.c-torture/execute/20030907-1.c 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/gcc.c-torture/execute/20030907-1.c 2003-09-07 09:59:14.000000000 +0000 *************** *** 0 **** --- 1,22 ---- + /* PR optimization/11662 */ + /* Origin: heinrich.brand@fujitsu-siemens.com */ + + /* This used to fail on SPARC at -O1 because the combiner didn't + correctly propagate an error indicator. */ + + unsigned long long r; + + void test(unsigned long a, unsigned long b, unsigned long long c) + { + r = (a^b)&c; + } + + int main() + { + test(1,2,3); + + if (r != 3) + abort(); + + return 0; + } diff -Nrc3pad gcc-3.3.1/gcc/testsuite/gcc.dg/20020313-1.c gcc-3.3.2/gcc/testsuite/gcc.dg/20020313-1.c *** gcc-3.3.1/gcc/testsuite/gcc.dg/20020313-1.c 2002-03-15 06:50:26.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/gcc.dg/20020313-1.c 2003-08-22 21:53:34.000000000 +0000 *************** *** 4,10 **** to, and aborted. */ /* { dg-do compile { target ia64-*-* } } */ ! /* { dg-options "-O2 -mconstant-gp" } */ typedef unsigned long __u64; typedef unsigned int __u32; --- 4,12 ---- to, and aborted. */ /* { dg-do compile { target ia64-*-* } } */ ! /* In ILP32 mode, we get warnings about large integer constants. ! Those cause spurious FAILs. */ ! /* { dg-options "-w -O2 -mconstant-gp" } */ typedef unsigned long __u64; typedef unsigned int __u32; diff -Nrc3pad gcc-3.3.1/gcc/testsuite/gcc.dg/20030702-1.c gcc-3.3.2/gcc/testsuite/gcc.dg/20030702-1.c *** gcc-3.3.1/gcc/testsuite/gcc.dg/20030702-1.c 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/gcc.dg/20030702-1.c 2003-08-25 20:17:25.000000000 +0000 *************** *** 0 **** --- 1,10 ---- + /* This tests whether REG_ALWAYS_RETURN notes are handled + correctly in combine. */ + /* { dg-do compile } */ + /* { dg-options "-O2 -fpic -fprofile-arcs" } */ + + void test (void) + { + fork (); + } + diff -Nrc3pad gcc-3.3.1/gcc/testsuite/gcc.dg/20030815-1.c gcc-3.3.2/gcc/testsuite/gcc.dg/20030815-1.c *** gcc-3.3.1/gcc/testsuite/gcc.dg/20030815-1.c 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/gcc.dg/20030815-1.c 2003-08-23 22:22:26.000000000 +0000 *************** *** 0 **** --- 1,26 ---- + /* Test completion of incomplete types. + There used to be a bug where some types from incomplete + list were accidentally lost. */ + /* { dg-do compile } */ + /* { dg-options "" } */ + + typedef struct a A[1]; + typedef struct b B[1]; + typedef struct c C[1]; + typedef struct d D[1]; + typedef struct a E; + typedef struct b F; + typedef struct c G; + typedef struct d H; + struct a { int a; }; + struct c { int c; }; + struct d { int d; }; + struct b { int b; }; + int sa = sizeof (A); + int sb = sizeof (B); + int sc = sizeof (C); + int sd = sizeof (D); + int se = sizeof (E); + int sf = sizeof (F); + int sg = sizeof (G); + int sh = sizeof (H); diff -Nrc3pad gcc-3.3.1/gcc/testsuite/gcc.dg/20031002-1.c gcc-3.3.2/gcc/testsuite/gcc.dg/20031002-1.c *** gcc-3.3.1/gcc/testsuite/gcc.dg/20031002-1.c 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/gcc.dg/20031002-1.c 2003-10-03 00:36:57.000000000 +0000 *************** *** 0 **** --- 1,14 ---- + /* { dg-do compile } */ + /* { dg-options "-O3" } */ + + void generic_sendmsg (char *fmt, ...) + { + __builtin_next_arg(fmt); + } + + void generic_sendstat() + { + double t; + + generic_sendmsg("F %3.2f", t); + } diff -Nrc3pad gcc-3.3.1/gcc/testsuite/gcc.dg/20031009-1.c gcc-3.3.2/gcc/testsuite/gcc.dg/20031009-1.c *** gcc-3.3.1/gcc/testsuite/gcc.dg/20031009-1.c 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/gcc.dg/20031009-1.c 2003-10-09 20:53:40.000000000 +0000 *************** *** 0 **** --- 1,19 ---- + /* PR optimization/12510 */ + /* Origin: Lars Skovlund */ + /* Reduced testcase by Volker Reichelt */ + + /* Verify that one splitting pass is not missing on x86 at -O1 */ + + /* { dg-do compile } */ + /* { dg-options "-O -mcpu=i686" { target i?86-*-* } } */ + + extern foo(double); + + void bar(double x, double y) + { + foo (x); + if (y) x = y ? 0 : 1/y; + else if (y) x = y < 1 ? 1 : y; + else x = 1/y < 1 ? 1 : x; + foo (x); + } diff -Nrc3pad gcc-3.3.1/gcc/testsuite/gcc.dg/builtin-apply1.c gcc-3.3.2/gcc/testsuite/gcc.dg/builtin-apply1.c *** gcc-3.3.1/gcc/testsuite/gcc.dg/builtin-apply1.c 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/gcc.dg/builtin-apply1.c 2003-09-18 21:18:12.000000000 +0000 *************** *** 0 **** --- 1,9 ---- + /* PR 11184 */ + /* Origin: Dara Hazeghi */ + + void * + objc_msg_sendv (char * arg_frame, void (*foo)()) + { + return __builtin_apply ( foo, arg_frame, 4); + } + diff -Nrc3pad gcc-3.3.1/gcc/testsuite/gcc.dg/c90-array-lval-6.c gcc-3.3.2/gcc/testsuite/gcc.dg/c90-array-lval-6.c *** gcc-3.3.1/gcc/testsuite/gcc.dg/c90-array-lval-6.c 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/gcc.dg/c90-array-lval-6.c 2003-10-04 18:07:25.000000000 +0000 *************** *** 0 **** --- 1,16 ---- + /* PR c/12446 */ + /* Origin: Keith Thompson */ + + /* { dg-do compile } */ + /* { dg-options "-std=iso9899:1990 -pedantic-errors" } */ + + + struct s { char c[1]; }; + + extern struct s foo(void); + + void bar(void) + { + char *ptr = foo().c; /* { dg-bogus "warning" "warning in place of error" } */ + } + /* { dg-error "non-lvalue" "array not decaying to lvalue" { target *-*-* } 14 } */ diff -Nrc3pad gcc-3.3.1/gcc/testsuite/gcc.dg/c99-array-lval-6.c gcc-3.3.2/gcc/testsuite/gcc.dg/c99-array-lval-6.c *** gcc-3.3.1/gcc/testsuite/gcc.dg/c99-array-lval-6.c 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/gcc.dg/c99-array-lval-6.c 2003-10-04 18:07:25.000000000 +0000 *************** *** 0 **** --- 1,15 ---- + /* PR c/12446 */ + /* Origin: Keith Thompson */ + + /* { dg-do compile } */ + /* { dg-options "-std=iso9899:1999 -pedantic-errors" } */ + + + struct s { char c[1]; }; + + extern struct s foo(void); + + void bar(void) + { + char *ptr = foo().c; /* { dg-bogus "non-lvalue" "array not decaying to lvalue" } */ + } diff -Nrc3pad gcc-3.3.1/gcc/testsuite/gcc.dg/cpp/separate-1.c gcc-3.3.2/gcc/testsuite/gcc.dg/cpp/separate-1.c *** gcc-3.3.1/gcc/testsuite/gcc.dg/cpp/separate-1.c 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/gcc.dg/cpp/separate-1.c 2003-09-14 13:26:30.000000000 +0000 *************** *** 0 **** --- 1,15 ---- + /* Copyright 2003 Free Software Foundation. */ + + /* { dg-do compile } */ + /* { dg-options "-save-temps" } */ + + /* Make sure we report errors in the right line, even if separate + preprocessing is used. */ + + #define FOO() + + int FOO( /* { dg-error "(parse|syntax) error" "error on this line" } */ + ), bar; + + int baz FOO /* { dg-error "(parse|syntax) error" "error on this line" } */ + ; /* { dg-warning "no type or storage class" "warning on this line" } */ diff -Nrc3pad gcc-3.3.1/gcc/testsuite/gcc.dg/cpp/spacing1.c gcc-3.3.2/gcc/testsuite/gcc.dg/cpp/spacing1.c *** gcc-3.3.1/gcc/testsuite/gcc.dg/cpp/spacing1.c 2001-10-08 06:15:14.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/gcc.dg/cpp/spacing1.c 2003-09-14 13:26:30.000000000 +0000 *************** *** 1,4 **** ! /* Copyright (C) 2000, 2001 Free Software Foundation, Inc. */ /* { dg-do preprocess } */ --- 1,4 ---- ! /* Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc. */ /* { dg-do preprocess } */ *************** *** 10,15 **** --- 10,24 ---- Neil Booth, 1 Dec 2000, 23 Sep 2001. */ + /* The actual location of the expansion of a multi-line macro + invocation is not defined: we might consider them to be in the same + line as the initial token of the invocation, or as the final token + of the invocation, or even anything in between. We choose to make + it the initial token, such that everything that is in a logical + line ends up in a single line after preprocessing. + + Alexandre Oliva, Sept 13, 2003. */ + #define str(x) #x #define f(x) x #define glue(x, y) x ## y *************** *** 28,33 **** --- 37,44 ---- B Q B Q A Q A: f bar + A + bad g "1 2" bam baz */ *************** glue (EMPTY 4, 4) EMPTY; *** 36,41 **** --- 47,54 ---- A(Q) C(Q) D()Q D(): f bar + A + bad f (g) str ( 1 *************** f (g) str *** 49,55 **** { dg-final { if \{ [grep spacing1.i "B Q B Q A Q A:"] != "" \} \{ } } { dg-final { if \{ [grep spacing1.i "f.*bar"] == "" \} \{ } } { dg-final { if \{ [grep spacing1.i "^bar"] != "" \} \{ } } { dg-final { if \{ [grep spacing1.i "g \"1 2\" bam baz"] != "" \} \{ } } ! { dg-final { return \} \} \} \} \} } } { dg-final { fail "spacing1.c: spacing and new-line preservation" } } */ --- 62,70 ---- { dg-final { if \{ [grep spacing1.i "B Q B Q A Q A:"] != "" \} \{ } } { dg-final { if \{ [grep spacing1.i "f.*bar"] == "" \} \{ } } { dg-final { if \{ [grep spacing1.i "^bar"] != "" \} \{ } } + { dg-final { if \{ [grep spacing1.i "^A$"] != "" \} \{ } } + { dg-final { if \{ [grep spacing1.i "^bad$"] != "" \} \{ } } { dg-final { if \{ [grep spacing1.i "g \"1 2\" bam baz"] != "" \} \{ } } ! { dg-final { return \} \} \} \} \} \} \} } } { dg-final { fail "spacing1.c: spacing and new-line preservation" } } */ diff -Nrc3pad gcc-3.3.1/gcc/testsuite/gcc.dg/cpp/Wunknown-pragmas-1.c gcc-3.3.2/gcc/testsuite/gcc.dg/cpp/Wunknown-pragmas-1.c *** gcc-3.3.1/gcc/testsuite/gcc.dg/cpp/Wunknown-pragmas-1.c 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/gcc.dg/cpp/Wunknown-pragmas-1.c 2003-09-24 23:52:13.000000000 +0000 *************** *** 0 **** --- 1,29 ---- + /* Copyright 2003 Free Software Foundation, Inc. */ + + /* { dg-do compile } */ + /* { dg-options "-Wunknown-pragmas" } */ + + /* Make sure we get warnings in the expected lines. */ + + #pragma unknown1 /* { dg-warning "unknown1" "unknown1" } */ + + #define COMMA , + #define FOO(x) x + #define BAR(x) _Pragma("unknown_before") x + #define BAZ(x) x _Pragma("unknown_after") + + int _Pragma("unknown2") bar1; /* { dg-warning "unknown2" "unknown2" } */ + + FOO(int _Pragma("unknown3") bar2); /* { dg-warning "unknown3" "unknown3" } */ + + int BAR(bar3); /* { dg-warning "unknown_before" "unknown_before 1" } */ + + BAR(int bar4); /* { dg-warning "unknown_before" "unknown_before 2" } */ + + int BAZ(bar5); /* { dg-warning "unknown_after" "unknown_after 1" } */ + + int BAZ(bar6;) /* { dg-warning "unknown_after" "unknown_after 2" } */ + + FOO(int bar7; _Pragma("unknown4")) /* { dg-warning "unknown4" "unknown4" } */ + + #pragma unknown5 /* { dg-warning "unknown5" "unknown5" } */ diff -Nrc3pad gcc-3.3.1/gcc/testsuite/gcc.dg/darwin-abi-1.c gcc-3.3.2/gcc/testsuite/gcc.dg/darwin-abi-1.c *** gcc-3.3.1/gcc/testsuite/gcc.dg/darwin-abi-1.c 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/gcc.dg/darwin-abi-1.c 2003-09-24 02:55:50.000000000 +0000 *************** *** 0 **** --- 1,12 ---- + /* { dg-do compile { target powerpc*-*-darwin* } } */ + /* { dg-options "-O" } */ + /* { dg-final { scan-assembler "li r3,12345\n\tbl " } } */ + + /* Check that zero-size structures don't affect parameter passing. */ + + struct empty { }; + extern void foo (struct empty e, int a); + void bar (void) { + struct empty e; + foo (e, 12345); + } diff -Nrc3pad gcc-3.3.1/gcc/testsuite/gcc.dg/nest.c gcc-3.3.2/gcc/testsuite/gcc.dg/nest.c *** gcc-3.3.1/gcc/testsuite/gcc.dg/nest.c 2002-10-28 18:10:56.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/gcc.dg/nest.c 2003-08-09 06:51:11.000000000 +0000 *************** *** 5,10 **** --- 5,11 ---- /* Support for -pg on irix relies on gcrt1.o which doesn't exist yet. See: http://gcc.gnu.org/ml/gcc/2002-10/msg00169.html */ /* { dg-error "gcrt1.o" "Profiler support missing" { target mips*-*-irix* } 0 } */ + /* { dg-error "-pg not supported" "Profiler support missing" { target *-*-sco3.2v5* } 0 } */ long foo (long x) { diff -Nrc3pad gcc-3.3.1/gcc/testsuite/gcc.dg/noncompile/20030818-1.c gcc-3.3.2/gcc/testsuite/gcc.dg/noncompile/20030818-1.c *** gcc-3.3.1/gcc/testsuite/gcc.dg/noncompile/20030818-1.c 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/gcc.dg/noncompile/20030818-1.c 2003-08-27 00:52:37.000000000 +0000 *************** *** 0 **** --- 1,3 ---- + /* PR 11207. */ + + char font8x8[256][8] = { [-1] = { 0 } }; /* { dg-error "array index|near init" } */ diff -Nrc3pad gcc-3.3.1/gcc/testsuite/gcc.dg/sibcall-1.c gcc-3.3.2/gcc/testsuite/gcc.dg/sibcall-1.c *** gcc-3.3.1/gcc/testsuite/gcc.dg/sibcall-1.c 2002-09-29 18:16:15.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/gcc.dg/sibcall-1.c 2003-09-01 20:52:49.000000000 +0000 *************** track (int n) *** 42,46 **** if (n == 0) trackpoint = stackpos; else if (n != 7 || trackpoint != stackpos) ! abort (); } --- 42,49 ---- if (n == 0) trackpoint = stackpos; else if (n != 7 || trackpoint != stackpos) ! { ! printf ("%d %p %p\n", n, trackpoint, stackpos); ! abort (); ! } } diff -Nrc3pad gcc-3.3.1/gcc/testsuite/gcc.dg/ultrasp10.c gcc-3.3.2/gcc/testsuite/gcc.dg/ultrasp10.c *** gcc-3.3.1/gcc/testsuite/gcc.dg/ultrasp10.c 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/gcc.dg/ultrasp10.c 2003-09-10 13:04:00.000000000 +0000 *************** *** 0 **** --- 1,25 ---- + /* PR target/11965 */ + /* Originator: */ + /* { dg-do run { target sparc*-*-* } } */ + /* { dg-options "-O -mcpu=ultrasparc" } */ + + /* This used to fail on 32-bit Ultrasparc because GCC emitted + an invalid shift instruction. */ + + + static inline unsigned int shift(int n, unsigned int value) + { + return value << n; + } + + unsigned int val = 1; + + int main(void) + { + int i; + + for (i = 0; i < 4; i++) + val = shift(32, val); + + return 0; + } diff -Nrc3pad gcc-3.3.1/gcc/testsuite/gcc.dg/uninit-C.c gcc-3.3.2/gcc/testsuite/gcc.dg/uninit-C.c *** gcc-3.3.1/gcc/testsuite/gcc.dg/uninit-C.c 2003-01-28 02:00:55.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/gcc.dg/uninit-C.c 2003-08-23 01:58:04.000000000 +0000 *************** *** 2,8 **** --- 2,13 ---- /* { dg-do compile } */ /* { dg-options "-O -Wuninitialized" } */ + /* Not all platforms support TImode integers. */ + #if defined(__LP64__) || defined(__sparc__) typedef int TItype __attribute__ ((mode (TI))); + #else + typedef long TItype; + #endif TItype __subvdi3 (TItype a, TItype b) diff -Nrc3pad gcc-3.3.1/gcc/testsuite/gcc.dg/Wunreachable-6.c gcc-3.3.2/gcc/testsuite/gcc.dg/Wunreachable-6.c *** gcc-3.3.1/gcc/testsuite/gcc.dg/Wunreachable-6.c 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/gcc.dg/Wunreachable-6.c 2003-08-09 03:50:05.000000000 +0000 *************** *** 0 **** --- 1,18 ---- + /* PR c/11370 */ + /* { dg-do compile } */ + /* { dg-options "-Wunreachable-code" } */ + + int main(int argc, char *argv[]) + { + if (argc != 1) + exit(1); + + { + int ix; /* { dg-bogus "will never be executed" } */ + ix = printf("hello\n"); + printf("%d\n", ix); + } + + return 0; + } + diff -Nrc3pad gcc-3.3.1/gcc/testsuite/gcc.dg/Wunreachable-7.c gcc-3.3.2/gcc/testsuite/gcc.dg/Wunreachable-7.c *** gcc-3.3.1/gcc/testsuite/gcc.dg/Wunreachable-7.c 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/gcc.dg/Wunreachable-7.c 2003-08-09 03:50:05.000000000 +0000 *************** *** 0 **** --- 1,18 ---- + /* PR c/11370 */ + /* { dg-do compile } */ + /* { dg-options "-O2 -Wunreachable-code" } */ + + int main(int argc, char *argv[]) + { + if (argc != 1) + exit(1); + + { + int ix; /* { dg-bogus "will never be executed" } */ + ix = printf("hello\n"); + printf("%d\n", ix); + } + + return 0; + } + diff -Nrc3pad gcc-3.3.1/gcc/testsuite/gcc.misc-tests/linkage.exp gcc-3.3.2/gcc/testsuite/gcc.misc-tests/linkage.exp *** gcc-3.3.1/gcc/testsuite/gcc.misc-tests/linkage.exp 2002-10-21 15:42:23.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/gcc.misc-tests/linkage.exp 2003-08-23 02:02:43.000000000 +0000 *************** if [isnative] then { *** 53,58 **** --- 53,63 ---- if [ string match "*32-bit*" $file_string ] { set native_cflags "-m31" } + } elseif [istarget "*-hp-hpux*"] { + set file_string [exec file "linkage-x.o"] + if [ string match "*ELF-64*" $file_string ] { + set native_cflags "+DD64" + } } catch { exec rm -f linkage-y.o } diff -Nrc3pad gcc-3.3.1/gcc/testsuite/g++.dg/abi/bitfield11.C gcc-3.3.2/gcc/testsuite/g++.dg/abi/bitfield11.C *** gcc-3.3.1/gcc/testsuite/g++.dg/abi/bitfield11.C 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/g++.dg/abi/bitfield11.C 2003-09-17 23:48:27.000000000 +0000 *************** *** 0 **** --- 1,14 ---- + // { dg-do run } + // { dg-options "-w -fabi-version=0" } + + struct S { + char c : 1024; + }; + + S s; + + int main () { + s.c = 1; + if (*(char *)&s != 1) + return 1; + } diff -Nrc3pad gcc-3.3.1/gcc/testsuite/g++.dg/abi/bitfield12.C gcc-3.3.2/gcc/testsuite/g++.dg/abi/bitfield12.C *** gcc-3.3.1/gcc/testsuite/g++.dg/abi/bitfield12.C 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/g++.dg/abi/bitfield12.C 2003-09-17 23:48:27.000000000 +0000 *************** *** 0 **** --- 1,5 ---- + // { dg-options "-Wabi -fabi-version=1" } + + struct S { // { dg-warning "ABI" } + char c : 1024; // { dg-warning "width" } + }; diff -Nrc3pad gcc-3.3.1/gcc/testsuite/g++.dg/eh/delayslot1.C gcc-3.3.2/gcc/testsuite/g++.dg/eh/delayslot1.C *** gcc-3.3.1/gcc/testsuite/g++.dg/eh/delayslot1.C 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/g++.dg/eh/delayslot1.C 2003-09-21 08:22:34.000000000 +0000 *************** *** 0 **** --- 1,47 ---- + // PR target/12301 + // Origin: Colin Hirsch + // Testcase by Christian Ehrhardt + + // This used to fail on SPARC because the reorg pass moved an insn + // across a function call that can throw internally, in order to put + // it in a delay slot. + + // { dg-do run } + // { dg-options "-O" } + + struct S{ + char *c; + char data[100]; + S () : c (data) {}; + S (const S& s) { + c = data; + data[0] = s.c[0]; + } + }; + + S real_cast () + { + throw 3; + } + + S cast_helper(S& debug) + { + try { + return real_cast(); + } + catch (int e) { + throw debug; + } + } + + int main() + { + S tmp; + + try { + cast_helper (tmp); + } + catch (S& e) {} + + return 0; + } diff -Nrc3pad gcc-3.3.1/gcc/testsuite/g++.dg/expr/comma1.C gcc-3.3.2/gcc/testsuite/g++.dg/expr/comma1.C *** gcc-3.3.1/gcc/testsuite/g++.dg/expr/comma1.C 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/g++.dg/expr/comma1.C 2003-09-07 20:53:15.000000000 +0000 *************** *** 0 **** --- 1,21 ---- + // { dg-do run } + + extern "C" void abort (); + + struct gtst + { + unsigned char data[2]; + }; + + static struct gtst s; + + int main(int argc, char *argv[]) + { + unsigned char * pc; + struct gtst * ps; + ps = &s; + pc = (ps->data[0]='A', ps->data); + if (&s.data[0] != pc) + abort(); + return 0; + } diff -Nrc3pad gcc-3.3.1/gcc/testsuite/g++.dg/expr/static_cast4.C gcc-3.3.2/gcc/testsuite/g++.dg/expr/static_cast4.C *** gcc-3.3.1/gcc/testsuite/g++.dg/expr/static_cast4.C 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/g++.dg/expr/static_cast4.C 2003-09-07 20:51:14.000000000 +0000 *************** *** 0 **** --- 1,11 ---- + class C { + public: + explicit C(int) {} + }; + + int main() + { + int i = 0; + static_cast(i); + return 0; + } diff -Nrc3pad gcc-3.3.1/gcc/testsuite/g++.dg/expr/static_cast5.C gcc-3.3.2/gcc/testsuite/g++.dg/expr/static_cast5.C *** gcc-3.3.1/gcc/testsuite/g++.dg/expr/static_cast5.C 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/g++.dg/expr/static_cast5.C 2003-09-07 04:14:57.000000000 +0000 *************** *** 0 **** --- 1,17 ---- + void ambig() + { + struct A {}; + struct B : A {}; + struct C : A {}; + struct D : B, C {}; + + D d; + A* ap = static_cast (&d); + D* db = static_cast (ap); // { dg-error "" } + + D& dr1 = static_cast (*ap); // { dg-error "" } + + A& ar = static_cast (d); + D& dr = static_cast (ar); // { dg-error "" } + } + diff -Nrc3pad gcc-3.3.1/gcc/testsuite/g++.dg/ext/attrib8.C gcc-3.3.2/gcc/testsuite/g++.dg/ext/attrib8.C *** gcc-3.3.1/gcc/testsuite/g++.dg/ext/attrib8.C 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/g++.dg/ext/attrib8.C 2003-10-09 18:06:18.000000000 +0000 *************** *** 0 **** --- 1,10 ---- + // PR 8656 + // { dg-do compile { target i?86-*-* } } + + extern int * (__attribute__((stdcall)) *fooPtr)( void); + int * __attribute__((stdcall)) myFn01( void) { return 0; } + + void snafu( void) + { + fooPtr = myFn01; + } diff -Nrc3pad gcc-3.3.1/gcc/testsuite/g++.dg/inherit/conv1.C gcc-3.3.2/gcc/testsuite/g++.dg/inherit/conv1.C *** gcc-3.3.1/gcc/testsuite/g++.dg/inherit/conv1.C 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/g++.dg/inherit/conv1.C 2003-08-29 23:56:19.000000000 +0000 *************** *** 0 **** --- 1,23 ---- + typedef struct _A A; + typedef struct _A B; + + void some_function(B *b); + + class AClass { + + public: + operator A*() { return 0;} + + }; + + class BClass :public AClass { + + public: + operator B*() { return 0;} + + }; + + int main(int argc, char **argv) { + BClass b; + some_function(b); + } diff -Nrc3pad gcc-3.3.1/gcc/testsuite/g++.dg/inherit/error1.C gcc-3.3.2/gcc/testsuite/g++.dg/inherit/error1.C *** gcc-3.3.1/gcc/testsuite/g++.dg/inherit/error1.C 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/g++.dg/inherit/error1.C 2003-10-02 23:11:27.000000000 +0000 *************** *** 0 **** --- 1,10 ---- + // PR 12486 + + struct A { int ma; }; + struct B { }; + + void foo() + { + B *b; + b->A::ma=0; // { dg-error "" } + } diff -Nrc3pad gcc-3.3.1/gcc/testsuite/g++.dg/init/array11.C gcc-3.3.2/gcc/testsuite/g++.dg/init/array11.C *** gcc-3.3.1/gcc/testsuite/g++.dg/init/array11.C 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/g++.dg/init/array11.C 2003-09-19 14:49:28.000000000 +0000 *************** *** 0 **** --- 1,28 ---- + /* PR 11665 + Orgin: jwhite@cse.unl.edu + The problem was in initializer_constant_valid_p, + "for a CONSTRUCTOR, only the last element + of the CONSTRUCTOR was being checked" + (from the email of the patch which fixed this). + This used to ICE because GCC thought gdt_table was a + constant value when it is not. */ + + int x; + + typedef __SIZE_TYPE__ size_t; + + struct gdt + { + size_t a,b,c,d,e,f; + }; + void f() + { + struct gdt gdt_table[2]= + { + { + 0, + ( (((size_t)(&x))<<(24))&(-1<<(8)) ), + }, + }; + } + diff -Nrc3pad gcc-3.3.1/gcc/testsuite/g++.dg/init/new9.C gcc-3.3.2/gcc/testsuite/g++.dg/init/new9.C *** gcc-3.3.1/gcc/testsuite/g++.dg/init/new9.C 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/g++.dg/init/new9.C 2003-10-07 05:57:06.000000000 +0000 *************** *** 0 **** --- 1,22 ---- + // PR 12337 + + class A {}; + + template + class X : public A { + public: + X(T&); + }; + + class B { + public: + bool foo(A*); + template + bool foo(T& t) { return foo(new X(t)); } + }; + + int main() + { + B x, y; + x.foo(y); + } diff -Nrc3pad gcc-3.3.1/gcc/testsuite/g++.dg/init/ref8.C gcc-3.3.2/gcc/testsuite/g++.dg/init/ref8.C *** gcc-3.3.1/gcc/testsuite/g++.dg/init/ref8.C 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/g++.dg/init/ref8.C 2003-08-19 23:14:01.000000000 +0000 *************** *** 0 **** --- 1,10 ---- + struct A { + A operator=(const A&); + }; + + A operator*(A, A); + + A& operator+=(A& a, const A& b) + { + return a = a * b; // { dg-error "non-const reference" } + } diff -Nrc3pad gcc-3.3.1/gcc/testsuite/g++.dg/init/ref9.C gcc-3.3.2/gcc/testsuite/g++.dg/init/ref9.C *** gcc-3.3.1/gcc/testsuite/g++.dg/init/ref9.C 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/g++.dg/init/ref9.C 2003-09-01 20:52:49.000000000 +0000 *************** *** 0 **** --- 1,36 ---- + // { dg-do run } + + struct ex; + struct basic { + int refcount; + ex eval() const; + basic() : refcount(0) {} + }; + + struct ex { + basic *bp; + ex() : bp(0) { } + ex(const basic &); + virtual ~ex(); + void construct_from_basic(const basic &); + }; + + ex basic::eval() const { + throw 1; + } + + inline ex::ex(const basic &b) { construct_from_basic (b); } + inline ex::~ex() { if (--bp->refcount == 0) delete bp; } + void ex::construct_from_basic(const basic &b) { + const ex & tmpex = b.eval(); + bp = tmpex.bp; + bp->refcount++; + } + + ex pow() { return basic(); } + + int main() + { + try { pow (); } catch (int) {} + return 0; + } diff -Nrc3pad gcc-3.3.1/gcc/testsuite/g++.dg/init/struct1.C gcc-3.3.2/gcc/testsuite/g++.dg/init/struct1.C *** gcc-3.3.1/gcc/testsuite/g++.dg/init/struct1.C 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/g++.dg/init/struct1.C 2003-09-07 23:51:05.000000000 +0000 *************** *** 0 **** --- 1,6 ---- + struct bug { + const char *name; + unsigned long type; + }; + + struct bug s = { 0, (unsigned long) &s | 1 }; diff -Nrc3pad gcc-3.3.1/gcc/testsuite/g++.dg/lookup/koenig2.C gcc-3.3.2/gcc/testsuite/g++.dg/lookup/koenig2.C *** gcc-3.3.1/gcc/testsuite/g++.dg/lookup/koenig2.C 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/g++.dg/lookup/koenig2.C 2003-09-08 19:05:44.000000000 +0000 *************** *** 0 **** --- 1,15 ---- + struct S + { + template void operator() (T) {} + }; + + namespace N + { + S s; + struct A {} a; + } + + using N::s; + + void f () { s(N::a); } + diff -Nrc3pad gcc-3.3.1/gcc/testsuite/g++.dg/opt/cfg2.C gcc-3.3.2/gcc/testsuite/g++.dg/opt/cfg2.C *** gcc-3.3.1/gcc/testsuite/g++.dg/opt/cfg2.C 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/g++.dg/opt/cfg2.C 2003-10-06 09:24:17.000000000 +0000 *************** *** 0 **** --- 1,38 ---- + // PR optimization/12215 + // Origin: + // Reduced testcase by Wolfgang Bangerth + + // This used to fail because the CSE pass destroyed the CFG in presence + // of trapping loads, which led to the deletion of basic blocks. + + // { dg-do compile } + // { dg-options "-O2 -fno-gcse -fnon-call-exceptions" } + + + struct B { + ~B() throw() {} + }; + + struct X { + X(const char*, const B&); + ~X() {} + }; + + bool m(); + void f(int &i, float &arg0); + + void g (const char **argv) { + float val; + int i = 1; + + try { + while ( i < 1 ) + { + X arg(argv[i], B()); + if (m()) + throw(0); + + f(i, val); + } + } catch (...) {} + } diff -Nrc3pad gcc-3.3.1/gcc/testsuite/g++.dg/opt/cfg3.C gcc-3.3.2/gcc/testsuite/g++.dg/opt/cfg3.C *** gcc-3.3.1/gcc/testsuite/g++.dg/opt/cfg3.C 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/g++.dg/opt/cfg3.C 2003-09-17 07:17:18.000000000 +0000 *************** *** 0 **** --- 1,61 ---- + // PR optimization/11646 + // Origin: + + // This used to fail because the compiler inadvertently cleared + // the EDGE_ABNORMAL flag on a EDGE_EH edge and didn't delete + // unreachable blocks after CSE. + + // { dg-do compile } + // { dg-options "-O -fgcse -fnon-call-exceptions" } + + struct C + { + int i; + }; + + struct allocator + { + ~allocator() throw() {} + }; + + struct _Vector_alloc_base + { + _Vector_alloc_base(const allocator& __a) {} + allocator _M_data_allocator; + struct C *_M_start, *_M_end_of_storage; + void _M_deallocate(struct C* __p, unsigned int __n) {} + }; + + struct _Vector_base : _Vector_alloc_base + { + _Vector_base(const allocator& __a) : _Vector_alloc_base(__a) { } + ~_Vector_base() { _M_deallocate(0, _M_end_of_storage - _M_start); } + }; + + struct vector : _Vector_base + { + vector(const allocator& __a = allocator()) : _Vector_base(__a) {} + struct C& operator[](unsigned int __n) { return *_M_start; } + }; + + struct A + { + float l() const; + A operator-(const A &) const; + const A& operator=(float) const; + }; + + struct B + { + float d(); + }; + + float f(const A& a, B& b) + { + vector vc; + int index = vc[0].i; + A aa; + float d = (aa - a).l(); + if (d > b.d()) aa = 0; + return b.d(); + } diff -Nrc3pad gcc-3.3.1/gcc/testsuite/g++.dg/opt/cond1.C gcc-3.3.2/gcc/testsuite/g++.dg/opt/cond1.C *** gcc-3.3.1/gcc/testsuite/g++.dg/opt/cond1.C 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/g++.dg/opt/cond1.C 2003-10-02 12:00:51.000000000 +0000 *************** *** 0 **** --- 1,24 ---- + // { dg-do run } + // { dg-options "-O2" } + + struct D { int x; }; + struct W + { + W () {} + D & operator * () { return d; } + D d; + }; + + int + foo (int y) + { + W m; + (*m).x = (y > 1 ? y : 0); + return (*m).x; + } + + int + main () + { + return (foo (6) != 6); + } diff -Nrc3pad gcc-3.3.1/gcc/testsuite/g++.dg/opt/float1.C gcc-3.3.2/gcc/testsuite/g++.dg/opt/float1.C *** gcc-3.3.1/gcc/testsuite/g++.dg/opt/float1.C 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/g++.dg/opt/float1.C 2003-10-06 08:59:02.000000000 +0000 *************** *** 0 **** --- 1,21 ---- + // PR optimization/11637 + // Origin: + + // This used to fail to assemble on x86 because a decimal + // floating point litteral was emitted, which originated + // from a bogus REG_EQUAL note not removed by the combiner. + + // { dg-do assemble } + // { dg-options "-O2 -fnon-call-exceptions" } + + void f(long int seed); + + void g(float &o) + { + float a = 0.05f; + float b = 1.0 - a; + float c = 1.0 + a; + + f(0); + o = a; + } diff -Nrc3pad gcc-3.3.1/gcc/testsuite/g++.dg/opt/longbranch2.C gcc-3.3.2/gcc/testsuite/g++.dg/opt/longbranch2.C *** gcc-3.3.1/gcc/testsuite/g++.dg/opt/longbranch2.C 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/g++.dg/opt/longbranch2.C 2003-09-08 06:46:44.000000000 +0000 *************** *** 0 **** --- 1,62 ---- + // PR target/11689 + // Originator: thor@math.tu-berlin.de + + // { dg-do compile } + // { dg-options "-O3 -funroll-loops -mcpu=k6 -fomit-frame-pointer" { target i?86-*-* } } + + // This used to fail to assemble because of an out-of-range 'loop' instructions. + + + class JKeeper { + public: + unsigned long a0; + }; + + class EBCOTLut : public JKeeper { + unsigned char a1[1<<8]; + unsigned char a2[1<<8]; + unsigned char a3[1<<8]; + long a4[1<<9]; + public: + EBCOTLut(void); + }; + + EBCOTLut::EBCOTLut(void) + { + unsigned char inter[36]; // intermediate lookup table; + unsigned long i; + for(i=0;i<36;i++) { + inter[i] = 0; + } + for(i=1;i<16;i++) { + a1[i | (1<<7)] = 8<<1; + a1[i | (1<<6)] = 8<<1; + } + for(i=0;i < ((1<<9)-1);i++) { + int ds = (i>>0) & 0x01; // significance of DOWN + int us = (i>>1) & 0x01; // significance of UP + int rs = (i>>2) & 0x01; // significance of RIGHT + int ls = (i>>3) & 0x01; // significance of LEFT + int dn = (i>>5) & 0x01; // sign of DOWN + int un = (i>>6) & 0x01; // sign of UP + int rn = (i>>7) & 0x01; // sign of RIGHT + int ln = (i>>8) & 0x01; // sign of LEFT + int h,v; // h and v as in the VM description + + h = ls*(1-ln*2) + rs*(1-2*rn); + v = us*(1-un*2) + ds*(1-2*dn); + h = (h >= -1)?(h):(-1); + v = (v >= -1)?(v):(-1); + h = (h <= 1)?(h):(1); + v = (v <= 1)?(v):(1); + a2[i] = inter[((h+1)<<3) | (v+1)]; + a3[i] = inter[((h+1)<<3) | (v+1)] & (unsigned char)(~1); + } + for(i=0;i< 1<<9; i++) { + a4[i] = 2*(i-(1<<(9-1)))*(i-(1<<(9-1))) - + ((i< (1<<(9-1)))? + (2*(i-(1<<(9-2)))*(i-(1<<(9-2)))): + (2*(i-(3<<(9-2)))*(i-(3<<(9-2))))); + + } + } diff -Nrc3pad gcc-3.3.1/gcc/testsuite/g++.dg/opt/reg-stack2.C gcc-3.3.2/gcc/testsuite/g++.dg/opt/reg-stack2.C *** gcc-3.3.1/gcc/testsuite/g++.dg/opt/reg-stack2.C 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/g++.dg/opt/reg-stack2.C 2003-09-22 07:11:27.000000000 +0000 *************** *** 0 **** --- 1,34 ---- + // PR target/9786 + // Origin: + + // This used to fail on x86 because the reg-stack pass deleted + // an insn that could seemingly trap (but actually doesn't) + // without updating the CFG. + + // { dg-do compile } + // { dg-options "-O2 -fnon-call-exceptions" } + + struct D1 { + float l; + D1 GS() const {D1 d;float f=.299*l;d.l=f;return d;} + static D1 G() {return D1();} + }; + + struct D2 { + D1 g; + D2(const D1& gi) : g(gi) {} + D2 GS() const {return D2(g.GS());} + }; + + class A { + public: + virtual ~A() {} + }; + + class B : public A { + public: + B(const D2& mi); + D2 fm; + }; + + B::B(const D2 &mi) : fm(mi.GS()) {} diff -Nrc3pad gcc-3.3.1/gcc/testsuite/g++.dg/opt/unroll1.C gcc-3.3.2/gcc/testsuite/g++.dg/opt/unroll1.C *** gcc-3.3.1/gcc/testsuite/g++.dg/opt/unroll1.C 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/g++.dg/opt/unroll1.C 2003-09-29 06:18:06.000000000 +0000 *************** *** 0 **** --- 1,420 ---- + // PR optimization/12340 + // Origin: Richard Guenther + // Testcase by Eric Botcazou + + // This used to segfault on x86 because the loop optimizer wrongly + // interpreted a double assignment to a biv as a double increment, + // which subsequently fooled the unroller. + + // { dg-do run } + // { dg-options "-O2 -fno-exceptions -funroll-loops" } + + typedef __SIZE_TYPE__ size_t; + + inline void* operator new(size_t, void* __p) throw() { return __p; } + inline void operator delete (void*, void*) throw() { }; + + class Loc; + class Interval; + + template + class DomainBase + { + public: + typedef typename DT::Domain_t Domain_t; + typedef typename DT::Storage_t Storage_t; + + Domain_t &unwrap() { return *static_cast(this); } + + const Domain_t &unwrap() const { + return *static_cast(const_cast *>(this)); + } + + protected: + Storage_t domain_m; + }; + + template + class Domain : public DomainBase
+ { + typedef DomainBase
Base_t; + + public: + typedef typename DT::Size_t Size_t; + typedef typename DT::Element_t Element_t; + typedef typename Base_t::Domain_t Domain_t; + typedef typename Base_t::Storage_t Storage_t; + + Domain_t &operator[](int) { return this->unwrap(); } + + const Domain_t &operator[](int) const { return this->unwrap(); } + + template + void setDomain(const T &newdom) { + DT::setDomain(this->domain_m, newdom); + } + + Element_t first() const { return DT::first(this->domain_m); } + + Size_t length() const { return DT::length(this->domain_m); } + + Size_t size() const { return length(); } + }; + + template + struct DomainTraits; + + template<> + struct DomainTraits + { + typedef int Size_t; + typedef int Element_t; + typedef Interval Domain_t; + typedef Interval OneDomain_t; + typedef Loc AskDomain_t; + typedef int Storage_t[2]; + enum { dimensions = 1 }; + enum { wildcard = false }; + + static int first(const Storage_t &d) { return d[0]; } + + static int length(const Storage_t &d) { return d[1]; } + + static OneDomain_t &getDomain(Domain_t &d, int) { return d; } + + static const OneDomain_t &getDomain(const Domain_t &d, int) { return d; } + + template + static void setDomain(Storage_t &dom, const T &newdom) { + dom[0] = newdom.first(); + dom[1] = newdom.length(); + } + + template + static void setDomain(Storage_t &dom, const T1 &begval, const T2 &endval) { + dom[0] = begval; + dom[1] = (endval - begval + 1); + } + + }; + + class Interval : public Domain > + { + public: + Interval(const Interval &a) : Domain >() { + for (int i=0; i < DomainTraits::dimensions; ++i) + DomainTraits::getDomain(*this, i).setDomain( + DomainTraits::getDomain(a, i)); + } + + Interval(int a) : Domain >() + { + DomainTraits::setDomain(domain_m, 0, a - 1); + } + }; + + template<> + struct DomainTraits + { + typedef int Size_t; + typedef int Element_t; + typedef Loc Domain_t; + typedef Loc AskDomain_t; + typedef Loc MultResult_t; + typedef int Storage_t; + + static int first(int d) { return d; } + + template + static void setDomain(int &dom, const T &newdom) { + dom = DomainTraits::getFirst(newdom); + } + }; + + template<> + struct DomainTraits + { + enum { dimensions = 1 }; + enum { wildcard = false }; + + static int getPointDomain(int d, int) { return d; } + + static int getFirst(const int &d) { return d; } + }; + + class Loc : public Domain > + { + public: + explicit Loc(const int &a) : Domain >() { + for (int i=0; i < 1; ++i) + (*this)[i].setDomain(DomainTraits::getPointDomain(a, 0)); + } + }; + + struct ElementProperties + { + enum { hasTrivialDefaultConstructor = false }; + enum { hasTrivialDestructor = false }; + + static void construct(double* addr) + { + new (addr) double(); + } + + static void construct(double* addr, const double& model) + { + new (addr) double(model); + } + + static void destruct(double *addr) {} + }; + + class RefCounted + { + public: + RefCounted() : count_m(0) {} + + void addReference() { ++count_m; } + bool removeRefAndCheckGarbage() + { + return (--count_m == 0); + } + + private: + int count_m; + }; + + class RefBlockController : public RefCounted + { + public: + explicit RefBlockController(unsigned int size) + : pBegin_m(0), pEnd_m(0), pEndOfStorage_m(0), dealloc_m(false) + { + reallocateStorage(size, false); + + if (!ElementProperties::hasTrivialDefaultConstructor) + { + for (double * pt = begin(); pt != end(); ++pt) + ElementProperties::construct(pt); + } + } + + ~RefBlockController() + { + deleteStorage(); + } + + double *begin() const + { + return pBegin_m; + } + + double *end() const + { + return pEnd_m; + } + + bool isMine() const + { + return dealloc_m; + } + + private: + void deleteStorage() + { + if (isMine() && pBegin_m != 0) + { + if (!ElementProperties::hasTrivialDestructor) + for (double *pt = begin(); pt != end(); ++pt) + ElementProperties::destruct(pt); + + char *tmp = reinterpret_cast(pBegin_m); + delete [] tmp; + } + } + + void reallocateStorage(unsigned int newsize, bool copyold = false) + { + double *pBeginNew = 0; + double *pEndNew = 0; + double *pEndOfStorageNew = 0; + + if (newsize > 0) + { + int nsize = newsize * sizeof(double); + char *tmp = new char[nsize]; + pBeginNew = reinterpret_cast(tmp); + pEndNew = pBeginNew + newsize; + pEndOfStorageNew = pBeginNew + (nsize / sizeof(double)); + + if (copyold) + { + double * pOld = begin(); + double * pNew = pBeginNew; + while (pOld != end() && pNew != pEndNew) + ElementProperties::construct(pNew++,*pOld++); + } + } + + deleteStorage(); + + pBegin_m = pBeginNew; + pEnd_m = pEndNew; + pEndOfStorage_m = pEndOfStorageNew; + dealloc_m = true; + } + + double *pBegin_m; + double *pEnd_m; + double *pEndOfStorage_m; + bool dealloc_m; + }; + + class DataBlockController : public RefBlockController + { + public: + explicit + DataBlockController(unsigned int size) + : RefBlockController(size), dataObjectPtr_m(new char), owned_m(true) {} + + ~DataBlockController() + { + if (owned_m) delete dataObjectPtr_m; + } + + private: + mutable char *dataObjectPtr_m; + bool owned_m; + }; + + class RefCountedPtr + { + public: + RefCountedPtr(DataBlockController * const pT) : ptr_m(pT) + { if (isValid()) ptr_m->addReference(); } + + ~RefCountedPtr() { invalidate(); } + + DataBlockController* operator->() const { return ptr_m; } + void invalidate(); + bool isValid() const { return ptr_m != 0; } + + private: + friend class RefCountedBlockPtr; + DataBlockController * ptr_m; + }; + + inline void RefCountedPtr::invalidate() + { + if ( isValid() && ptr_m->removeRefAndCheckGarbage() ) + delete ptr_m; + ptr_m = 0; + } + + class RefCountedBlockPtr + { + public: + explicit RefCountedBlockPtr(unsigned int size) + : offset_m(0), + blockControllerPtr_m(new DataBlockController(size)) {} + + int offset() const + { + return offset_m; + } + + double *beginPointer() const + { + return blockControllerPtr_m->begin(); + } + + double *currentPointer() const + { + return beginPointer() + offset(); + } + + protected: + int offset_m; + RefCountedPtr blockControllerPtr_m; + }; + + class DataBlockPtr : public RefCountedBlockPtr + { + public: + explicit DataBlockPtr(unsigned int size) : RefCountedBlockPtr(size) {} + }; + + class Node + { + public: + Node(const Interval &owned, const Interval &allocated) + : domain_m(owned), allocated_m(allocated) {} + + const Interval &allocated() const { return allocated_m; } + + private: + Interval domain_m; + Interval allocated_m; + }; + + class DomainLayout + { + public: + explicit DomainLayout(const Interval &dom) : node_m(0, dom) {} + + const Interval &domain() const + { + return node_m.allocated(); + } + + private: + Node node_m; + }; + + class BrickBase + { + public: + explicit BrickBase(const Interval &domain); + + int offset(const Loc &dom) const { return off_m + dom[0].first(); } + + protected: + DomainLayout layout_m; + int firsts_m; + int off_m; + }; + + BrickBase::BrickBase(const Interval &dom) + : layout_m(dom) + { + firsts_m = layout_m.domain()[0].first(); + off_m = -firsts_m; + } + + class Engine : public BrickBase + { + public: + explicit Engine(const Interval &dom) + : BrickBase(dom), dataBlock_m(dom.size()), data_m(dataBlock_m.currentPointer()) {} + + double& operator()(const Loc &loc) const + { + return data_m[this->offset(loc)]; + } + + private: + DataBlockPtr dataBlock_m; + double *data_m; + }; + + + int main() + { + Interval I(10); + Engine A(I); + + for (int i = 0; i < 10; i++) + A(Loc(i)) = 2.0 + i - i*i; + + return 0; + } diff -Nrc3pad gcc-3.3.1/gcc/testsuite/g++.dg/other/packed1.C gcc-3.3.2/gcc/testsuite/g++.dg/other/packed1.C *** gcc-3.3.1/gcc/testsuite/g++.dg/other/packed1.C 2003-05-08 17:15:26.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/g++.dg/other/packed1.C 2003-08-22 19:48:40.000000000 +0000 *************** *** 1,4 **** ! // { dg-do run { xfail arm-*-* hppa*-*-* mips-*-* powerpc-*-* sh-*-* sparc*-*-* } } // NMS:2003-04-21 this fails on strict aligned architectures again, // the patch was reverted because it broke something more important. --- 1,4 ---- ! // { dg-do run { xfail arm-*-* hppa*-*-* mips-*-* powerpc-*-* sh-*-* sparc*-*-* ia64-hp-hpux* } } // NMS:2003-04-21 this fails on strict aligned architectures again, // the patch was reverted because it broke something more important. diff -Nrc3pad gcc-3.3.1/gcc/testsuite/g++.dg/overload/builtin3.C gcc-3.3.2/gcc/testsuite/g++.dg/overload/builtin3.C *** gcc-3.3.1/gcc/testsuite/g++.dg/overload/builtin3.C 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/g++.dg/overload/builtin3.C 2003-10-05 03:46:58.000000000 +0000 *************** *** 0 **** --- 1,10 ---- + // PR c++/11409 + // { dg-do compile } + + namespace std { + double fabs (double); + } + using std::fabs; + + double (*p) (double) = &fabs; // { dg-bogus "is ambiguous" "" } + diff -Nrc3pad gcc-3.3.1/gcc/testsuite/g++.dg/overload/template1.C gcc-3.3.2/gcc/testsuite/g++.dg/overload/template1.C *** gcc-3.3.1/gcc/testsuite/g++.dg/overload/template1.C 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/g++.dg/overload/template1.C 2003-09-17 23:48:27.000000000 +0000 *************** *** 0 **** --- 1,12 ---- + template T Foo (int) {T d;} + + void Baz (void (*)(int), int); + + int Foo (); + int Baz (int (*)(), float); + + void Bar () + { + Baz (Foo, 1.0f); + + } diff -Nrc3pad gcc-3.3.1/gcc/testsuite/g++.dg/parse/parameter-declaration-1.C gcc-3.3.2/gcc/testsuite/g++.dg/parse/parameter-declaration-1.C *** gcc-3.3.1/gcc/testsuite/g++.dg/parse/parameter-declaration-1.C 2002-12-10 11:06:33.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/g++.dg/parse/parameter-declaration-1.C 2003-10-02 18:44:30.000000000 +0000 *************** *** 3,6 **** // { dg-do compile } struct { ! a(void = 0; a(0), a(0) // { dg-error "" "" { target *-*-* } 7 } --- 3,6 ---- // { dg-do compile } struct { ! a(void = 0; a(0), a(0) // { dg-error "" "" { target *-*-* } } diff -Nrc3pad gcc-3.3.1/gcc/testsuite/g++.dg/parse/template12.C gcc-3.3.2/gcc/testsuite/g++.dg/parse/template12.C *** gcc-3.3.1/gcc/testsuite/g++.dg/parse/template12.C 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/g++.dg/parse/template12.C 2003-09-15 01:43:46.000000000 +0000 *************** *** 0 **** --- 1,10 ---- + template + struct A { + }; + + struct B { + template + struct C : public A {}; + + typedef double I; + }; diff -Nrc3pad gcc-3.3.1/gcc/testsuite/g++.dg/rtti/typeid2.C gcc-3.3.2/gcc/testsuite/g++.dg/rtti/typeid2.C *** gcc-3.3.1/gcc/testsuite/g++.dg/rtti/typeid2.C 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/g++.dg/rtti/typeid2.C 2003-09-08 16:59:00.000000000 +0000 *************** *** 0 **** --- 1,15 ---- + // { dg-do run } + + #include + + template const char *print_type (const T &) { + return typeid(T).name(); + } + + /* no template */ void pp1 (int) {} + template void pp2 (X) {} + + int main () { + if (print_type (&pp1) != print_type (&pp2)) + return 1; + } diff -Nrc3pad gcc-3.3.1/gcc/testsuite/g++.dg/rtti/typeid3.C gcc-3.3.2/gcc/testsuite/g++.dg/rtti/typeid3.C *** gcc-3.3.1/gcc/testsuite/g++.dg/rtti/typeid3.C 1970-01-01 00:00:00.000000000 +0000 --- gcc-3.3.2/gcc/testsuite/g++.dg/rtti/typeid3.C 2003-09-17 23:48:27.000000000 +0000 *************** *** 0 **** --- 1,11 ---- + #include + + template