diff -Nrc3pad gcc-3.1/gcc/testsuite/ChangeLog gcc-3.1.1/gcc/testsuite/ChangeLog *** gcc-3.1/gcc/testsuite/ChangeLog Wed May 15 02:24:10 2002 --- gcc-3.1.1/gcc/testsuite/ChangeLog Thu Jul 25 23:39:38 2002 *************** *** 1,3 **** --- 1,142 ---- + 2002-07-25 Release Manager + + * GCC 3.1.1 Released. + + 2002-07-15 Jakub Jelinek + + * gcc.c-torture/compile/20020710-1.c: New test. + + 2002-07-11 Mark Mitchell + + PR c++/7224 + * g++.dg/overload/error1.C: New test. + + 2002-07-03 Mark Mitchell + + PR c++/6706 + * g++.dg/debug/debug6.C: New test. + * g++.dg/debug/debug7.C: New test. + + 2002-07-03 Kriang Lerdsuwanakij + + PR c++/6944 + * g++.dg/init/array4.C: New test. + * g++.dg/init/array5.C: New test. + + 2002-07-02 Kriang Lerdsuwanakij + + PR c++/6716 + * g++.dg/template/instantiate1.C: New test. + + 2002-07-01 Mark Mitchell + + PR c++/7112 + * g++.dg/template/sizeof1.C: New test. + + 2002-07-01 Hans-Peter Nilsson + + PR target/7177 + * gcc.c-torture/compile/20020701-1.c: New test. + + 2002-06-27 Neil Booth + + * gcc.dg/Wunknownprag.c: New tests. + + 2002-06-27 Mark Mitchell + + PR c++/6695 + * g++.dg/template/friend7.C: New file. + + 2002-06-23 Andreas Jaeger + + * gcc.c-torture/execute/complex-6.c: New. + + 2002-06-20 Kriang Lerdsuwanakij + + * g++.dg/template/ttp4.C: New test. + + 2002-06-19 Jakub Jelinek + + * g++.dg/opt/vt1.C: Fix regexp. + + 2002-06-18 Hans-Peter Nilsson + + * gcc.c-torture/execute/20020615-1.c: Correct bug-description. + + 2002-06-15 Hans-Peter Nilsson + + * gcc.c-torture/execute/20020615-1.c: New test. + + 2002-06-13 Hans-Peter Nilsson + + * gcc.c-torture/execute/20020611-1.c: New test. + + 2002-06-12 Kriang Lerdsuwanakij + + * g++.dg/template/typename2.C: Update error message. + + 2002-06-10 Jakub Jelinek + + * gcc.c-torture/compile/20020605-1.c: New test. + + * g++.dg/opt/vt1.C: New test. + + * gcc.dg/20020530-1.c: New test. + + * gcc.dg/20020527-1.c: New test. + + * g++.dg/opt/cse1.C: New test. + + 2002-05-29 Hans-Peter Nilsson + + * gcc.c-torture/execute/20020529-1.c: New test. + + 2002-05-26 Jakub Jelinek + + * g++.dg/opt/cse2.C: New test. + + 2002-05-24 Jakub Jelinek + + * gcc.dg/verbose-asm.c: New test. + + 2002-05-24 Neil Booth + + * gcc.dg/cpp/paste12.c: New test. + + 2002-05-24 Neil Booth + + * g++.dg/parse/named_ops.C: New test. + + 2002-05-23 Jakub Jelinek + + * gcc.dg/20020517-1.c: New test. + + * gcc.dg/20020523-1.c: New test. + + 2002-05-22 Andreas Jaeger + + * gcc.c-torture/execute/loop-2c.x: Remove, the test should pass + now. + * gcc.c-torture/execute/loop-2d.x: Likewise. + + 2002-05-19 David Billinghurst + + * gcc.dg/weak-2.c: xfail warnings for platforms that don't + support weak symbols. + * gcc.dg/weak-4.c: Likewise + * gcc.dg/weak-6.c: Likewise + + 2002-05-16 David.Billinghurst + + * gcc.dg/weak-3.c: Add dg-excess-error comment for + cygwin, coff and h8300-*-hms targets + * gcc.dg/weak-5.c: Likewise + * gcc.dg/weak-7.c: Likewise + + 2002-05-15 Jason Merrill , Alexandre Oliva + + * g++.dg/init/pm1.C: New test. + 2002-05-14 Release Manager * GCC 3.1 Released. *************** *** 68,74 **** PR c++/6497 * g++.dg/inherit/access2.C: New test. ! 2002-04-26 Mark Mitchell PR bootstrap/6445 --- 207,213 ---- PR c++/6497 * g++.dg/inherit/access2.C: New test. ! 2002-04-26 Mark Mitchell PR bootstrap/6445 *************** *** 242,248 **** * g++.dg/opt/const1.C: New test. 2002-04-10 Lars Brinkhoff ! * gcc.c-torture/execute/20020406-1.c: Declare malloc. 2002-04-10 Nathan Sidwell --- 381,387 ---- * g++.dg/opt/const1.C: New test. 2002-04-10 Lars Brinkhoff ! * gcc.c-torture/execute/20020406-1.c: Declare malloc. 2002-04-10 Nathan Sidwell *************** *** 350,356 **** 2002-03-27 Mark Mitchell * g++.dg/init/new2.C: New test. ! 2002-03-27 Richard Henderson * g++.old-deja/g++.brendan/crash52.C: Remove return warning marker. --- 489,495 ---- 2002-03-27 Mark Mitchell * g++.dg/init/new2.C: New test. ! 2002-03-27 Richard Henderson * g++.old-deja/g++.brendan/crash52.C: Remove return warning marker. *************** *** 448,454 **** 2002-03-21 Rainer Orth ! * g++.old-deja/g++.eh/ia64-1.C: Use [ijkl]_[0-9] as variable names. (A, E): Handle this. 2002-03-20 Jason Merrill --- 587,593 ---- 2002-03-21 Rainer Orth ! * g++.old-deja/g++.eh/ia64-1.C: Use [ijkl]_[0-9] as variable names. (A, E): Handle this. 2002-03-20 Jason Merrill diff -Nrc3pad gcc-3.1/gcc/testsuite/g++.dg/debug/debug6.C gcc-3.1.1/gcc/testsuite/g++.dg/debug/debug6.C *** gcc-3.1/gcc/testsuite/g++.dg/debug/debug6.C Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/g++.dg/debug/debug6.C Fri Jul 5 16:37:44 2002 *************** *** 0 **** --- 1,7 ---- + // { dg-do compile } + + void foo() + { + int i=1, x[i]; + } + diff -Nrc3pad gcc-3.1/gcc/testsuite/g++.dg/debug/debug7.C gcc-3.1.1/gcc/testsuite/g++.dg/debug/debug7.C *** gcc-3.1/gcc/testsuite/g++.dg/debug/debug7.C Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/g++.dg/debug/debug7.C Fri Jul 5 16:37:44 2002 *************** *** 0 **** --- 1,18 ---- + // { dg-do compile } + + void f (int); + + int + main() { + + int a = 4; + int b = 5; + int (*x)[b] = new int[a][b]; + + x[2][1] = 7; + + for (int i = 0; i < a; ++i) + for (int j = 0; j < b; ++j) + f (x[i][j]); + delete [] x; + } diff -Nrc3pad gcc-3.1/gcc/testsuite/g++.dg/init/array4.C gcc-3.1.1/gcc/testsuite/g++.dg/init/array4.C *** gcc-3.1/gcc/testsuite/g++.dg/init/array4.C Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/g++.dg/init/array4.C Wed Jul 3 15:02:15 2002 *************** *** 0 **** --- 1,27 ---- + // { dg-do compile } + // Origin: Markus Breuer + + // PR c++/6944 + // Fail to synthesize copy constructor of multi-dimensional + // array of class. + + #include + + class Array + { + public: + std::string m_array[10][20][30]; + }; + + Array func() + { + Array result; + return result; // sorry, not implemented: cannot initialize multi-dimensional array with initializer + } + + + int main() + { + Array arr = func(); + } + diff -Nrc3pad gcc-3.1/gcc/testsuite/g++.dg/init/array5.C gcc-3.1.1/gcc/testsuite/g++.dg/init/array5.C *** gcc-3.1/gcc/testsuite/g++.dg/init/array5.C Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/g++.dg/init/array5.C Wed Jul 3 15:02:15 2002 *************** *** 0 **** --- 1,52 ---- + // { dg-do run } + // Copyright (C) 2002 Free Software Foundation + // Contributed by Kriang Lerdsuwanakij + + // Incorrect construction and destruction of multi-dimensional + // array of class. + + extern "C" void abort(); + extern "C" int printf(const char *, ...); + + int count; + int num; + + struct A + { + A() + { + if (count == num) + throw ""; + count++; + #ifdef PRINT + printf("ctor %p\n", static_cast(this)); + #endif + } + + ~A() + { + count--; + #ifdef PRINT + printf("dtor %p\n", static_cast(this)); + #endif + } + }; + + struct Array + { + A array[2][2][2]; + }; + + int main() + { + for (num = 0; num <= 8; ++num) { + count = 0; + try { + Array A; + } + catch (...) { + } + if (count != 0) + abort(); + } + } diff -Nrc3pad gcc-3.1/gcc/testsuite/g++.dg/init/pm1.C gcc-3.1.1/gcc/testsuite/g++.dg/init/pm1.C *** gcc-3.1/gcc/testsuite/g++.dg/init/pm1.C Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/g++.dg/init/pm1.C Thu May 16 02:09:36 2002 *************** *** 0 **** --- 1,88 ---- + // { dg-do run } + + // Copyright 2002 Free Software Foundation + // Contributed by Jason Merrill and Alexandre Oliva + + // Test zero-initialization of pointers to data members. Their NULL + // value is represented with -1, not 0. + + #include + + struct A + { + int i; + }; + + int A::* gp; + + typedef int A::* iApm; + + iApm gp_zero = 0; + iApm gp_dflt = iApm(); + iApm gp_cast = (iApm)0; + iApm gp_func = iApm(0); + iApm gp_stat = static_cast(0); + + struct AD : A {}; + + int AD::* gp_impl = gp_dflt; + int AD::* gp_down = static_cast(gp_stat); + + int A::* ga[2]; + + // Test use in a simple struct. + struct B + { + int A::* mp; + }; + + B gb; + + struct D; + struct C; + extern D gd; + extern C gc; + + // Test that in a class with a constructor, the pointer to member is + // zero-initialized until the constructor is run. + struct C + { + int A::* mp; + inline C (); + }; + + int fail; + struct D + { + int count; + inline D (); + }; + + C::C() : mp (&A::i) { gd.count++; } + + D::D() : count (0) + { + if (gc.mp != 0) + abort (); + } + + // The D must come first for this to work. + D gd; + C gc; + + int main() + { + static int A::* slp; + static int A::* sla[2]; + static B slb; + + if (gp != 0 || slp != 0 + || gp_zero != 0 || gp_dflt != 0 || gp_cast != 0 + || gp_func != 0 || gp_stat != 0 + || gp_impl != 0 || gp_down != 0) + abort (); + if (ga[1] != 0 || sla[1] != 0) + abort (); + if (gb.mp != 0 || slb.mp != 0) + abort (); + } diff -Nrc3pad gcc-3.1/gcc/testsuite/g++.dg/opt/asm1.C gcc-3.1.1/gcc/testsuite/g++.dg/opt/asm1.C *** gcc-3.1/gcc/testsuite/g++.dg/opt/asm1.C Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/g++.dg/opt/asm1.C Thu Jun 20 23:25:11 2002 *************** *** 0 **** --- 1,9 ---- + // PR c++/6747 + // { dg-do compile } + // { dg-options "-O" } + + void foo() + { + union { double d; char c[sizeof(double)]; } tmp; + __asm__ ("" : "=m" (tmp.d)); // { dg-bogus "not directly addressable" } + } diff -Nrc3pad gcc-3.1/gcc/testsuite/g++.dg/opt/cse1.C gcc-3.1.1/gcc/testsuite/g++.dg/opt/cse1.C *** gcc-3.1/gcc/testsuite/g++.dg/opt/cse1.C Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/g++.dg/opt/cse1.C Mon Jun 10 22:12:08 2002 *************** *** 0 **** --- 1,12 ---- + // PR optimization/6759 + // This testcase ICEd on SPARC because folded REG_EQUAL + // note was note stored back and fold_rtx left invalid rtx + // in it. + // { dg-do compile } + // { dg-options "-O2" } + + struct A + { + long long a; + A (unsigned short d) : a (d) {} + } x (65535); diff -Nrc3pad gcc-3.1/gcc/testsuite/g++.dg/opt/cse2.C gcc-3.1.1/gcc/testsuite/g++.dg/opt/cse2.C *** gcc-3.1/gcc/testsuite/g++.dg/opt/cse2.C Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/g++.dg/opt/cse2.C Sun May 26 19:58:07 2002 *************** *** 0 **** --- 1,39 ---- + // This testcase caused ICE on IA-32 in simplify_unary_operation + // CSE did not assume SUBREGs changing mode from integral to floating. + // { dg-do run { target i?86-*-* sparc*-*-* } } + // { dg-options "-O2" } + + struct A + { + union + { + float f; + unsigned int w; + } a; + + static inline const A foo (void) + { + return A ((unsigned int) (__extension__ ((union { unsigned l; float d; }) + { l: 0x3f800000 }).d)); + } + inline A (float f) { a.f = f; } + A (); + inline A (unsigned int w) { a.w = w; } + }; + + A::A() + { + *this = foo (); + } + + A a; + + extern "C" void abort (void); + extern "C" void exit (int); + + int main () + { + if (a.a.w != 1) + abort (); + exit (0); + } diff -Nrc3pad gcc-3.1/gcc/testsuite/g++.dg/opt/inline3.C gcc-3.1.1/gcc/testsuite/g++.dg/opt/inline3.C *** gcc-3.1/gcc/testsuite/g++.dg/opt/inline3.C Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/g++.dg/opt/inline3.C Mon Jun 17 00:29:37 2002 *************** *** 0 **** --- 1,40 ---- + // PR opt/6793 + // We failed to supress inlining of a varargs function when it's a template. + // { dg-do compile } + // { dg-options "-O3" } + + #include + + typedef __SIZE_TYPE__ size_t; + + template < class Type > class VectorNd + { + size_t size; + Type *data; + public: + + VectorNd (size_t _size, size_t count, ...) + : size (_size) + { + data = new Type[size]; + + va_list ap; + + va_start (ap, count); + + for (size_t i = 0; i < count; i++) + data[i] = va_arg (ap, Type); + + va_end (ap); + } + + ~VectorNd () + { + delete [] data; + } + }; + + int main () + { + VectorNd vector (3, 3, 1.0, 2.0, 3.0); + } diff -Nrc3pad gcc-3.1/gcc/testsuite/g++.dg/opt/thunk1.C gcc-3.1.1/gcc/testsuite/g++.dg/opt/thunk1.C *** gcc-3.1/gcc/testsuite/g++.dg/opt/thunk1.C Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/g++.dg/opt/thunk1.C Sun May 26 02:42:21 2002 *************** *** 0 **** --- 1,42 ---- + // PR 6788 + // Test that the thunk adjusts the this pointer properly. + // { dg-do run } + + extern "C" void abort (); + + struct A + { + virtual void foo() = 0; + char large[33*1024]; + }; + + struct B + { + virtual void foo() = 0; + }; + + struct C : public A, public B + { + virtual void foo(); + }; + + static C *match; + + void C::foo() + { + if (this != match) + abort (); + } + + void bar(B *x) + { + x->foo(); + } + + int main() + { + C obj; + match = &obj; + bar(&obj); + return 0; + } diff -Nrc3pad gcc-3.1/gcc/testsuite/g++.dg/opt/vt1.C gcc-3.1.1/gcc/testsuite/g++.dg/opt/vt1.C *** gcc-3.1/gcc/testsuite/g++.dg/opt/vt1.C Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/g++.dg/opt/vt1.C Wed Jun 19 14:38:56 2002 *************** *** 0 **** --- 1,11 ---- + // Test whether vtable for S is not put into read-only section. + // { dg-do compile } + // { dg-options "-O2 -fpic -fno-rtti" } + // Origin: Jakub Jelinek + + struct S + { + virtual void vm (void) {}; + } x; + + // { dg-final { scan-assembler-not "section\[^\n\r\]*_ZTV1S\[^\n\r\]*\"\[^w\"\n\r\]*\"" } } diff -Nrc3pad gcc-3.1/gcc/testsuite/g++.dg/overload/error1.C gcc-3.1.1/gcc/testsuite/g++.dg/overload/error1.C *** gcc-3.1/gcc/testsuite/g++.dg/overload/error1.C Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/g++.dg/overload/error1.C Thu Jul 11 22:07:47 2002 *************** *** 0 **** --- 1,7 ---- + // { dg-do compile } + + struct S + { + void f () {} + int f () { return 0; } // { dg-error "" "" } + }; diff -Nrc3pad gcc-3.1/gcc/testsuite/g++.dg/parse/named_ops.C gcc-3.1.1/gcc/testsuite/g++.dg/parse/named_ops.C *** gcc-3.1/gcc/testsuite/g++.dg/parse/named_ops.C Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/g++.dg/parse/named_ops.C Fri May 24 09:27:00 2002 *************** *** 0 **** --- 1,13 ---- + /* Copyright (C) 2002 Free Software Foundation, Inc. */ + + /* { dg-do compile } */ + /* { dg-options -fpreprocessed } */ + + /* Tests that C++ named ops are still there with -fpreprocessed. */ + + /* Source: Neil Booth, 23 May 2002. */ + + int main () + { + return 2 xor 2; + } diff -Nrc3pad gcc-3.1/gcc/testsuite/g++.dg/template/friend7.C gcc-3.1.1/gcc/testsuite/g++.dg/template/friend7.C *** gcc-3.1/gcc/testsuite/g++.dg/template/friend7.C Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/g++.dg/template/friend7.C Thu Jun 27 21:48:00 2002 *************** *** 0 **** --- 1,33 ---- + // { dg-do compile } + + template + struct b + { + template + class a + { + template + friend class a; + + T t_; + + public: + a() {} + a(a const &); + }; + }; + + template + template + b::a::a(a const &rhs): t_(*rhs.t_) + {} + + + int + f () + { + b::a q; + b::a w(q); + + return 0; + } diff -Nrc3pad gcc-3.1/gcc/testsuite/g++.dg/template/instantiate1.C gcc-3.1.1/gcc/testsuite/g++.dg/template/instantiate1.C *** gcc-3.1/gcc/testsuite/g++.dg/template/instantiate1.C Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/g++.dg/template/instantiate1.C Tue Jul 2 15:50:42 2002 *************** *** 0 **** --- 1,21 ---- + // { dg-do compile } + // Origin: + + // PR c++/6716 + // ICE in complex class structure when components are incomplete + + template struct X { + T t; // { dg-error "incomplete" } + }; + + template struct Y { // { dg-error "instantiated" } + X x; + }; + + template struct Z { // { dg-error "instantiated|declaration" } + Y > y; + }; + + struct ZZ : Z + { // { dg-error "instantiated" } + }; diff -Nrc3pad gcc-3.1/gcc/testsuite/g++.dg/template/sizeof1.C gcc-3.1.1/gcc/testsuite/g++.dg/template/sizeof1.C *** gcc-3.1/gcc/testsuite/g++.dg/template/sizeof1.C Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/g++.dg/template/sizeof1.C Tue Jul 2 03:14:16 2002 *************** *** 0 **** --- 1,23 ---- + // { dg-do compile } + + template + struct Foobar { + // Contents irrelevant + }; + + template + struct Wrapper { + // Contents irrelevant + }; + + template + Foobar)> * + compiler_bug (A) + { + return 0; + } + + int main() + { + compiler_bug(1); + } diff -Nrc3pad gcc-3.1/gcc/testsuite/g++.dg/template/ttp4.C gcc-3.1.1/gcc/testsuite/g++.dg/template/ttp4.C *** gcc-3.1/gcc/testsuite/g++.dg/template/ttp4.C Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/g++.dg/template/ttp4.C Thu Jun 20 15:11:09 2002 *************** *** 0 **** --- 1,11 ---- + // { dg-do compile } + // Origin: Ewgenij Gawrilow + + // PR c++/6723 + // ICE when default template argument contains instantiation of + // template template parameter. + + template class Predicate, + bool _matches=Predicate::answer> + struct helper { }; diff -Nrc3pad gcc-3.1/gcc/testsuite/g++.dg/template/typename2.C gcc-3.1.1/gcc/testsuite/g++.dg/template/typename2.C *** gcc-3.1/gcc/testsuite/g++.dg/template/typename2.C Wed Apr 10 09:38:55 2002 --- gcc-3.1.1/gcc/testsuite/g++.dg/template/typename2.C Wed Jun 12 15:44:01 2002 *************** class ctype : public __ctype_abstract_ba *** 21,25 **** template class ctype2 : public __ctype_abstract_base<_CharT> { ! typedef mask mask; // { dg-warning "(`typename )|(implicit typename)" "" } }; --- 21,25 ---- template class ctype2 : public __ctype_abstract_base<_CharT> { ! typedef mask mask; // { dg-warning "(implicitly a typename)|(implicit typename)" "" } }; diff -Nrc3pad gcc-3.1/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog gcc-3.1.1/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog *** gcc-3.1/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog Wed May 15 02:24:18 2002 --- gcc-3.1.1/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog Thu Jul 25 23:39:40 2002 *************** *** 1,3 **** --- 1,7 ---- + 2002-07-25 Release Manager + + * GCC 3.1.1 Released. + 2002-05-14 Release Manager * GCC 3.1 Released. diff -Nrc3pad gcc-3.1/gcc/testsuite/g++.old-deja/g++.pt/explicit70.C gcc-3.1.1/gcc/testsuite/g++.old-deja/g++.pt/explicit70.C *** gcc-3.1/gcc/testsuite/g++.old-deja/g++.pt/explicit70.C Wed Dec 16 21:56:02 1998 --- gcc-3.1.1/gcc/testsuite/g++.old-deja/g++.pt/explicit70.C Sun May 19 10:19:05 2002 *************** template class S; // OK - explici *** 28,41 **** // specialization template <> ! struct S {}; // ERROR - explicit specialization ! template class S; // ERROR - explicit instantiation after template <> ! void f(long double) {} // ERROR - explicit specialization ! template void f(long double); // ERROR - explicit instantiation after template void g(T); --- 28,41 ---- // specialization template <> ! struct S {}; ! template class S; // OK - explicit instantiation after template <> ! void f(long double) {} ! template void f(long double); // OK - explicit instantiation after template void g(T); diff -Nrc3pad gcc-3.1/gcc/testsuite/g++.old-deja/g++.pt/spec19.C gcc-3.1.1/gcc/testsuite/g++.old-deja/g++.pt/spec19.C *** gcc-3.1/gcc/testsuite/g++.old-deja/g++.pt/spec19.C Wed Dec 16 21:59:59 1998 --- gcc-3.1.1/gcc/testsuite/g++.old-deja/g++.pt/spec19.C Sun May 19 10:19:05 2002 *************** *** 1,5 **** // Build don't link: template T f(T o) { return o; } ! template<> int f(int o) { return o; } // ERROR - after specialization ! template int f(int); // ERROR - explicit instantiation --- 1,5 ---- // Build don't link: template T f(T o) { return o; } ! template<> int f(int o) { return o; } ! template int f(int); diff -Nrc3pad gcc-3.1/gcc/testsuite/gcc.c-torture/compile/20020530-1.c gcc-3.1.1/gcc/testsuite/gcc.c-torture/compile/20020530-1.c *** gcc-3.1/gcc/testsuite/gcc.c-torture/compile/20020530-1.c Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/gcc.c-torture/compile/20020530-1.c Thu May 30 23:13:20 2002 *************** *** 0 **** --- 1,16 ---- + /* PR optimization/6822 */ + + extern unsigned char foo1 (void); + extern unsigned short foo2 (void); + + int bar1 (void) + { + unsigned char q = foo1 (); + return (q < 0x80) ? 64 : 0; + } + + int bar2 (void) + { + unsigned short h = foo2 (); + return (h < 0x8000) ? 64 : 0; + } diff -Nrc3pad gcc-3.1/gcc/testsuite/gcc.c-torture/compile/20020605-1.c gcc-3.1.1/gcc/testsuite/gcc.c-torture/compile/20020605-1.c *** gcc-3.1/gcc/testsuite/gcc.c-torture/compile/20020605-1.c Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/gcc.c-torture/compile/20020605-1.c Mon Jun 10 21:39:48 2002 *************** *** 0 **** --- 1,17 ---- + /* This testcase caused on IA-32 -O2 endless loop in + merge_blocks when trying to merge a basic block + with itself. */ + + void f (void) + { + char *c; + do + { + if (c) + break; + } + while (1); + if (!c) + while (1) + f (); + } diff -Nrc3pad gcc-3.1/gcc/testsuite/gcc.c-torture/compile/20020701-1.c gcc-3.1.1/gcc/testsuite/gcc.c-torture/compile/20020701-1.c *** gcc-3.1/gcc/testsuite/gcc.c-torture/compile/20020701-1.c Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/gcc.c-torture/compile/20020701-1.c Mon Jul 1 19:40:54 2002 *************** *** 0 **** --- 1,75 ---- + /* PR target/7177 + Problem with cris-axis-elf: ICE in global. + Origin: hp@axis.com. */ + + typedef __SIZE_TYPE__ size_t; + void f1 (void *); + char *f2 (const char *); + int atoi (const char *); + char *strchr (const char *, int); + int strcmp (const char *, const char *); + size_t strlen (const char *); + typedef enum { A, B, C } t1; + extern const char _v[]; + + static t1 + f (const char* p1, const char* p2, char p3) + { + char *v1; + char *v2; + char *a; + char *v3; + char *v4; + char *v5; + char *e; + char *v6; + t1 r = C; + + v1 = f2 (p2); + v4 = f2 (p1); + + a = v2 = v1; + e = v5 = v4; + memcpy (&e, &e, sizeof (e)); + + v3 = strchr (v2, ','); + v6 = strchr (v5, ','); + + while ((_v + 1)[(unsigned) *a] & 4) + a++; + while ((_v + 1)[(unsigned) *e] & 4) + e++; + + if (a == v3 && e == v6) + { + if (p3) + r = atoi (v5) < atoi (v2) ? B : A; + else + r = atoi (v5) > atoi (v2) ? B : A; + v2 = ++a; + v5 = ++e; + v3 = strchr (v2, ','); + v6 = strchr (v5, ','); + + while ((_v + 1)[(unsigned) *a] & 4) + a++; + while ((_v + 1)[(unsigned) *e] & 4) + e++; + + if (a == v3 && e == v6) + { + if (r == B) + r = B; + else if (p3) + r = atoi (v5) < atoi (v2) ? B : A; + else + r = atoi (v5) > atoi (v2) ? B : A; + } + else + r = C; + } + + f1 (v1); + f1 (v4); + return r; + } diff -Nrc3pad gcc-3.1/gcc/testsuite/gcc.c-torture/compile/20020710-1.c gcc-3.1.1/gcc/testsuite/gcc.c-torture/compile/20020710-1.c *** gcc-3.1/gcc/testsuite/gcc.c-torture/compile/20020710-1.c Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/gcc.c-torture/compile/20020710-1.c Mon Jul 15 06:54:37 2002 *************** *** 0 **** --- 1,12 ---- + /* Red Hat bugzilla #68395 + PR middle-end/7245 + This testcase ICEd on IA-32 because shift & compare patterns + predicates allowed any immediate, but constraints allowed only + numbers from 1 to 31. */ + + void foo (int *x, unsigned int y) + { + int a = y >> -13; + if (a) + *x = a; + } diff -Nrc3pad gcc-3.1/gcc/testsuite/gcc.c-torture/compile/20020715-1.c gcc-3.1.1/gcc/testsuite/gcc.c-torture/compile/20020715-1.c *** gcc-3.1/gcc/testsuite/gcc.c-torture/compile/20020715-1.c Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/gcc.c-torture/compile/20020715-1.c Tue Jul 16 05:43:37 2002 *************** *** 0 **** --- 1,22 ---- + /* PR optimization/7153 */ + /* Verify that GCC doesn't promote a register when its + lifetime is not limited to one basic block. */ + + void f(char); + void g(void); + + void scale(void) + { + int width; + char bytes; + char *src; + + if (width) + { + bytes = *src; + g(); + width *= bytes; + } + + f(bytes); + } diff -Nrc3pad gcc-3.1/gcc/testsuite/gcc.c-torture/execute/20020529-1.c gcc-3.1.1/gcc/testsuite/gcc.c-torture/execute/20020529-1.c *** gcc-3.1/gcc/testsuite/gcc.c-torture/execute/20020529-1.c Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/gcc.c-torture/execute/20020529-1.c Wed May 29 16:18:20 2002 *************** *** 0 **** --- 1,78 ---- + /* PR target/6838 from cato@df.lth.se. + cris-elf got an ICE with -O2: the insn matching + (insn 49 48 52 (parallel[ + (set (mem/s:HI (plus:SI (reg/v/f:SI 0 r0 [24]) + (const_int 8 [0x8])) [5 .c+0 S2 A8]) + (reg:HI 2 r2 [27])) + (set (reg/f:SI 2 r2 [31]) + (plus:SI (reg/v/f:SI 0 r0 [24]) + (const_int 8 [0x8]))) + ] ) 24 {*mov_sidehi_mem} (nil) + (nil)) + forced a splitter through the output pattern "#", but there was no + matching splitter. */ + + struct xx + { + int a; + struct xx *b; + short c; + }; + + int f1 (struct xx *); + void f2 (void); + + int + foo (struct xx *p, int b, int c, int d) + { + int a; + + for (;;) + { + a = f1(p); + if (a) + return (0); + if (b) + continue; + p->c = d; + if (p->a) + f2 (); + if (c) + f2 (); + d = p->c; + switch (a) + { + case 1: + if (p->b) + f2 (); + if (c) + f2 (); + default: + break; + } + } + return d; + } + + int main (void) + { + struct xx s = {0, &s, 23}; + if (foo (&s, 0, 0, 0) != 0 || s.a != 0 || s.b != &s || s.c != 0) + abort (); + exit (0); + } + + int + f1 (struct xx *p) + { + static int beenhere = 0; + if (beenhere++ > 1) + abort (); + return beenhere > 1; + } + + void + f2 (void) + { + abort (); + } diff -Nrc3pad gcc-3.1/gcc/testsuite/gcc.c-torture/execute/20020611-1.c gcc-3.1.1/gcc/testsuite/gcc.c-torture/execute/20020611-1.c *** gcc-3.1/gcc/testsuite/gcc.c-torture/execute/20020611-1.c Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/gcc.c-torture/execute/20020611-1.c Wed Jun 12 22:50:17 2002 *************** *** 0 **** --- 1,32 ---- + /* PR target/6997. Missing (set_attr "cc" "none") in sleu pattern in + cris.md. Testcase from hp@axis.com. */ + + int p; + int k; + unsigned int n; + + void x () + { + unsigned int h; + + h = n <= 30; + if (h) + p = 1; + else + p = 0; + + if (h) + k = 1; + else + k = 0; + } + + unsigned int n = 30; + + main () + { + x (); + if (p != 1 || k != 1) + abort (); + exit (0); + } diff -Nrc3pad gcc-3.1/gcc/testsuite/gcc.c-torture/execute/20020614-1.c gcc-3.1.1/gcc/testsuite/gcc.c-torture/execute/20020614-1.c *** gcc-3.1/gcc/testsuite/gcc.c-torture/execute/20020614-1.c Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/gcc.c-torture/execute/20020614-1.c Sat Jun 15 00:43:49 2002 *************** *** 0 **** --- 1,41 ---- + /* PR c/6677 */ + /* Verify that GCC doesn't perform illegal simplifications + when folding constants. */ + + #include + + extern void abort (void); + extern void exit (int); + + int main (void) + { + int i; + signed char j; + unsigned char k; + + i = SCHAR_MAX; + + j = ((signed char) (i << 1)) / 2; + + if (j != -1) + abort(); + + j = ((signed char) (i * 2)) / 2; + + if (j != -1) + abort(); + + i = UCHAR_MAX; + + k = ((unsigned char) (i << 1)) / 2; + + if (k != UCHAR_MAX/2) + abort(); + + k = ((unsigned char) (i * 2)) / 2; + + if (k != UCHAR_MAX/2) + abort(); + + exit(0); + } diff -Nrc3pad gcc-3.1/gcc/testsuite/gcc.c-torture/execute/20020615-1.c gcc-3.1.1/gcc/testsuite/gcc.c-torture/execute/20020615-1.c *** gcc-3.1/gcc/testsuite/gcc.c-torture/execute/20020615-1.c Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/gcc.c-torture/execute/20020615-1.c Tue Jun 18 15:37:34 2002 *************** *** 0 **** --- 1,59 ---- + /* PR target/7042. When reorg.c changed branches into return insns, it + completely forgot about any current_function_epilogue_delay_list and + dropped those insns. Uncovered on cris-axis-elf, where an insn in an + epilogue delay-slot set the return-value register with the test-case + below. Derived from ghostscript-6.52 (GPL) by hp@axis.com. */ + + typedef struct font_hints_s { + int axes_swapped; + int x_inverted, y_inverted; + } font_hints; + typedef struct gs_fixed_point_s { + long x, y; + } gs_fixed_point; + + int + line_hints(const font_hints *fh, const gs_fixed_point *p0, + const gs_fixed_point *p1) + { + long dx = p1->x - p0->x; + long dy = p1->y - p0->y; + long adx, ady; + int xi = fh->x_inverted, yi = fh->y_inverted; + int hints; + if (xi) + dx = -dx; + if (yi) + dy = -dy; + if (fh->axes_swapped) { + long t = dx; + int ti = xi; + dx = dy, xi = yi; + dy = t, yi = ti; + } + adx = dx < 0 ? -dx : dx; + ady = dy < 0 ? -dy : dy; + if (dy != 0 && (adx <= ady >> 4)) { + hints = dy > 0 ? 2 : 1; + if (xi) + hints ^= 3; + } else if (dx != 0 && (ady <= adx >> 4)) { + hints = dx < 0 ? 8 : 4; + if (yi) + hints ^= 12; + } else + hints = 0; + return hints; + } + int main () + { + static font_hints fh[] = {{0, 1, 0}, {0, 0, 1}, {0, 0, 0}}; + static gs_fixed_point gsf[] + = {{0x30000, 0x13958}, {0x30000, 0x18189}, + {0x13958, 0x30000}, {0x18189, 0x30000}}; + if (line_hints (fh, gsf, gsf + 1) != 1 + || line_hints (fh + 1, gsf + 2, gsf + 3) != 8 + || line_hints (fh + 2, gsf + 2, gsf + 3) != 4) + abort (); + exit (0); + } diff -Nrc3pad gcc-3.1/gcc/testsuite/gcc.c-torture/execute/20020619-1.c gcc-3.1.1/gcc/testsuite/gcc.c-torture/execute/20020619-1.c *** gcc-3.1/gcc/testsuite/gcc.c-torture/execute/20020619-1.c Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/gcc.c-torture/execute/20020619-1.c Thu Jun 20 07:35:46 2002 *************** *** 0 **** --- 1,32 ---- + static int ref(void) + { + union { + char c[5]; + int i; + } u; + + __builtin_memset (&u, 0, sizeof(u)); + u.c[0] = 1; + u.c[1] = 2; + u.c[2] = 3; + u.c[3] = 4; + + return u.i; + } + + #define MAX(a,b) (a < b ? b : a) + + static int test(void) + { + char c[MAX(5, sizeof(int))] __attribute__((aligned)) = { 1, 2, 3, 4 }; + return *(int *)c; + } + + int main() + { + int a = test(); + int b = ref(); + if (a != b) + abort (); + return 0; + } diff -Nrc3pad gcc-3.1/gcc/testsuite/gcc.c-torture/execute/20020716-1.c gcc-3.1.1/gcc/testsuite/gcc.c-torture/execute/20020716-1.c *** gcc-3.1/gcc/testsuite/gcc.c-torture/execute/20020716-1.c Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/gcc.c-torture/execute/20020716-1.c Thu Jul 18 17:45:54 2002 *************** *** 0 **** --- 1,36 ---- + extern void abort (void); + extern void exit (int); + + int sub1 (int val) + { + return val; + } + + int testcond (int val) + { + int flag1; + + { + int t1 = val; + { + int t2 = t1; + { + flag1 = sub1 (t2) ==0; + goto lab1; + }; + } + lab1: ; + } + + if (flag1 != 0) + return 0x4d0000; + else + return 0; + } + + int main (void) + { + if (testcond (1)) + abort (); + exit (0); + } diff -Nrc3pad gcc-3.1/gcc/testsuite/gcc.c-torture/execute/alloca-1.c gcc-3.1.1/gcc/testsuite/gcc.c-torture/execute/alloca-1.c *** gcc-3.1/gcc/testsuite/gcc.c-torture/execute/alloca-1.c Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/gcc.c-torture/execute/alloca-1.c Wed May 29 20:34:28 2002 *************** *** 0 **** --- 1,21 ---- + /* Verify that alloca storage is sufficiently aligned. */ + /* ??? May fail if BIGGEST_ALIGNMENT > STACK_BOUNDARY. Which, I guess + can only happen on !STRICT_ALIGNMENT targets. */ + + typedef __SIZE_TYPE__ size_t; + + struct dummy { int x __attribute__((aligned)); }; + #define BIGGEST_ALIGNMENT __alignof__(struct dummy) + + _Bool foo(void) + { + char *p = __builtin_alloca(32); + return ((size_t)p & (BIGGEST_ALIGNMENT - 1)) == 0; + } + + int main() + { + if (!foo()) + abort (); + return 0; + } diff -Nrc3pad gcc-3.1/gcc/testsuite/gcc.c-torture/execute/complex-6.c gcc-3.1.1/gcc/testsuite/gcc.c-torture/execute/complex-6.c *** gcc-3.1/gcc/testsuite/gcc.c-torture/execute/complex-6.c Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/gcc.c-torture/execute/complex-6.c Sun Jun 23 05:34:25 2002 *************** *** 0 **** --- 1,59 ---- + /* This test tests complex conjugate and passing/returning of + complex parameter. */ + + #include + #include + + int err; + + #define TEST(TYPE, FUNC) \ + __complex__ TYPE \ + ctest_ ## FUNC (__complex__ TYPE x) \ + { \ + __complex__ TYPE res; \ + \ + res = ~x; \ + \ + return res; \ + } \ + \ + void \ + test_ ## FUNC (void) \ + { \ + __complex__ TYPE res, x; \ + \ + x = 1.0 + 2.0i; \ + \ + res = ctest_ ## FUNC (x); \ + \ + if (res != 1.0 - 2.0i) \ + { \ + printf ("test_" #FUNC " failed\n"); \ + ++err; \ + } \ + } + + + TEST(float, float) + TEST(double, double) + TEST(long double, long_double) + TEST(int, int) + TEST(long int, long_int) + + int + main (void) + { + + err = 0; + + test_float (); + test_double (); + test_long_double (); + test_int (); + test_long_int (); + + if (err != 0) + abort (); + + return 0; + } diff -Nrc3pad gcc-3.1/gcc/testsuite/gcc.c-torture/execute/loop-2c.x gcc-3.1.1/gcc/testsuite/gcc.c-torture/execute/loop-2c.x *** gcc-3.1/gcc/testsuite/gcc.c-torture/execute/loop-2c.x Thu Sep 27 19:32:24 2001 --- gcc-3.1.1/gcc/testsuite/gcc.c-torture/execute/loop-2c.x Thu Jan 1 00:00:00 1970 *************** *** 1,13 **** - if { [istarget "i686-*"] } { - set torture_eval_before_execute { - global compiler_conditional_xfail_data - set compiler_conditional_xfail_data { - "Loop optimiser bug" \ - "i686-*" \ - { "-Os" } \ - { "" } - } - } - } - - return 0 --- 0 ---- diff -Nrc3pad gcc-3.1/gcc/testsuite/gcc.c-torture/execute/loop-2d.x gcc-3.1.1/gcc/testsuite/gcc.c-torture/execute/loop-2d.x *** gcc-3.1/gcc/testsuite/gcc.c-torture/execute/loop-2d.x Thu Sep 27 19:32:24 2001 --- gcc-3.1.1/gcc/testsuite/gcc.c-torture/execute/loop-2d.x Thu Jan 1 00:00:00 1970 *************** *** 1,13 **** - if { [istarget "i686-*"] } { - set torture_eval_before_execute { - global compiler_conditional_xfail_data - set compiler_conditional_xfail_data { - "Loop optimiser bug" \ - "i686-*" \ - { "-Os" } \ - { "" } - } - } - } - - return 0 --- 0 ---- diff -Nrc3pad gcc-3.1/gcc/testsuite/gcc.dg/20020517-1.c gcc-3.1.1/gcc/testsuite/gcc.dg/20020517-1.c *** gcc-3.1/gcc/testsuite/gcc.dg/20020517-1.c Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/gcc.dg/20020517-1.c Thu May 23 08:14:35 2002 *************** *** 0 **** --- 1,28 ---- + /* This testcase caused ICE in do_SUBST on IA-32, because 0xf6 constant + was not sign-extended for QImode. */ + /* { dg-do run } */ + /* { dg-options "-O2" } */ + /* { dg-options "-O2 -mcpu=i686" { target i?86-*-* } } */ + + #include + + void abort (void); + void exit (int); + + void foo (void) + { + int i; + char *p; + + p = (char *) &i; + *p = -10; + if (* (unsigned char *) p != 0x100 - 10) + abort (); + } + + int main (void) + { + if (UCHAR_MAX == 255) + foo (); + exit (0); + } diff -Nrc3pad gcc-3.1/gcc/testsuite/gcc.dg/20020523-1.c gcc-3.1.1/gcc/testsuite/gcc.dg/20020523-1.c *** gcc-3.1/gcc/testsuite/gcc.dg/20020523-1.c Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/gcc.dg/20020523-1.c Thu May 23 09:24:37 2002 *************** *** 0 **** --- 1,65 ---- + /* PR target/6753 + This testcase was miscompiled because sse_mov?fcc_const0* + patterns were missing earlyclobber. */ + /* { dg-do run { target i386-*-* } } */ + /* { dg-options "-march=pentium3 -msse -ffast-math -O2" } */ + + extern void abort (void); + extern void exit (int); + + float one = 1.f; + + void bar (float f) + { + if (__builtin_memcmp (&one, &f, sizeof (float))) + abort (); + } + + float foo (void) + { + return 1.f; + } + + typedef struct + { + float t; + } T; + + void bail_if_no_sse (void) + { + int fl1, fl2; + + /* See if we can use cpuid. */ + __asm__ ("pushfl; pushfl; popl %0; movl %0,%1; xorl %2,%0;" + "pushl %0; popfl; pushfl; popl %0; popfl" + : "=&r" (fl1), "=&r" (fl2) + : "i" (0x00200000)); + if (((fl1 ^ fl2) & 0x00200000) == 0) + exit (0); + + /* See if cpuid gives capabilities. */ + __asm__ ("cpuid" : "=a" (fl1) : "0" (0) : "ebx", "ecx", "edx", "cc"); + if (fl1 == 0) + exit (0); + + /* See if capabilities include SSE (25th bit; 26 for SSE2). */ + __asm__ ("cpuid" : "=a" (fl1), "=d" (fl2) : "0" (1) : "ebx", "ecx", "cc"); + if ((fl2 & (1 << 25)) == 0) + exit (0); + } + + int main (void) + { + int i; + T x[1]; + + bail_if_no_sse (); + for (i = 0; i < 1; i++) + { + x[i].t = foo (); + x[i].t = 0.f > x[i].t ? 0.f : x[i].t; + bar (x[i].t); + } + + exit (0); + } diff -Nrc3pad gcc-3.1/gcc/testsuite/gcc.dg/20020527-1.c gcc-3.1.1/gcc/testsuite/gcc.dg/20020527-1.c *** gcc-3.1/gcc/testsuite/gcc.dg/20020527-1.c Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/gcc.dg/20020527-1.c Mon Jun 10 21:53:39 2002 *************** *** 0 **** --- 1,54 ---- + /* PR c/6660 + Test whether an unnamed field with user defined type - struct or union is + accepted. */ + /* { dg-do compile } */ + /* { dg-options "" } */ + + typedef struct { + unsigned short a; + unsigned short b; + } __attribute__ ((__packed__)) A; + + typedef struct B_ { + unsigned int c; + unsigned int d; + } B; + + typedef struct C_ { + B; + unsigned int e; + unsigned int f; + } C; + + typedef C D; + + typedef struct { + A; + D; + struct { + unsigned short g; + unsigned short h; + } __attribute__ ((__packed__)); + union { + int i; + long j; + }; + int k; + } __attribute__ ((__packed__)) E; + + E x; + + void foo (void) + { + x.a = 1; + x.b = 2; + x.c = 3; + x.d = 4; + x.e = 5; + x.f = 6; + x.g = 7; + x.h = 8; + x.i = 9; + x.j = 10; + x.k = 11; + } diff -Nrc3pad gcc-3.1/gcc/testsuite/gcc.dg/20020530-1.c gcc-3.1.1/gcc/testsuite/gcc.dg/20020530-1.c *** gcc-3.1/gcc/testsuite/gcc.dg/20020530-1.c Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/gcc.dg/20020530-1.c Mon Jun 10 21:51:07 2002 *************** *** 0 **** --- 1,20 ---- + /* PR c/6809 + Test -fverbose-asm with unnamed fields. */ + /* { dg-do compile } */ + /* { dg-options "-fverbose-asm" } */ + + typedef union U + { + struct + { + unsigned int a; + int b; + }; + long long c; + } *T; + + int foo (T x) + { + int r = x->a + x->b; + return r; + } diff -Nrc3pad gcc-3.1/gcc/testsuite/gcc.dg/20020616-1.c gcc-3.1.1/gcc/testsuite/gcc.dg/20020616-1.c *** gcc-3.1/gcc/testsuite/gcc.dg/20020616-1.c Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/gcc.dg/20020616-1.c Sun Jun 16 21:54:12 2002 *************** *** 0 **** --- 1,29 ---- + /* PR opt/6722 */ + /* { dg-do run { target i?86-*-* } } */ + /* { dg-options "-O2" } */ + + register int k asm("%ebx"); + + void __attribute__((noinline)) + foo() + { + k = 1; + } + + void test() + { + int i; + for (i = 0; i < 10; i += k) + { + k = 0; + foo(); + } + } + + int main() + { + int old = k; + test(); + k = old; + return 0; + } diff -Nrc3pad gcc-3.1/gcc/testsuite/gcc.dg/Wunknownprag.c gcc-3.1.1/gcc/testsuite/gcc.dg/Wunknownprag.c *** gcc-3.1/gcc/testsuite/gcc.dg/Wunknownprag.c Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/gcc.dg/Wunknownprag.c Thu Jun 27 22:27:13 2002 *************** *** 0 **** --- 1,11 ---- + /* Copyright (C) 2002 Free Software Foundation, Inc. */ + + /* { dg-do compile } */ + /* { dg-options "-Wunknown-pragmas" } */ + + /* We used to get "unspellable token: CPP_EOF" warnings. */ + + #pragma /* { dg-warning "ignoring #pragma" } */ + #pragma ~ /* { dg-warning "ignoring #pragma" } */ + #pragma baz /* { dg-warning "ignoring #pragma" } */ + #pragma baz baz /* { dg-warning "ignoring #pragma" } */ diff -Nrc3pad gcc-3.1/gcc/testsuite/gcc.dg/cpp/paste12.c gcc-3.1.1/gcc/testsuite/gcc.dg/cpp/paste12.c *** gcc-3.1/gcc/testsuite/gcc.dg/cpp/paste12.c Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/gcc.dg/cpp/paste12.c Fri May 24 19:13:48 2002 *************** *** 0 **** --- 1,8 ---- + /* { dg-do preprocess } */ + + /* Test correct diagnostics when pasting in #include. + Source: PR preprocessor/6780. */ + + #define inc2(a,b) <##a.b> + #define INC(X) inc2(X,h) + #include INC(stdio) /* { dg-error "pasting \"<\" and \"stdio\" does not" } */ diff -Nrc3pad gcc-3.1/gcc/testsuite/gcc.dg/verbose-asm.c gcc-3.1.1/gcc/testsuite/gcc.dg/verbose-asm.c *** gcc-3.1/gcc/testsuite/gcc.dg/verbose-asm.c Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/gcc.dg/verbose-asm.c Fri May 24 21:26:54 2002 *************** *** 0 **** --- 1,27 ---- + /* Test whether -fverbose-asm works. */ + /* { dg-do compile } */ + /* { dg-options "-fverbose-asm" } */ + + void foo (int *x) + { + (*x)++; + } + + int bar (int *y) + { + int a, b; + b = 10; + a = 26; + foo (&a); + a += 10; + foo (&a); + *y--; + return b; + } + + int + main (int argc, char *argv []) + { + bar (&argc); + return 0; + } diff -Nrc3pad gcc-3.1/gcc/testsuite/gcc.dg/weak-2.c gcc-3.1.1/gcc/testsuite/gcc.dg/weak-2.c *** gcc-3.1/gcc/testsuite/gcc.dg/weak-2.c Sun Apr 28 18:43:58 2002 --- gcc-3.1.1/gcc/testsuite/gcc.dg/weak-2.c Sun May 19 01:26:18 2002 *************** void * foo1b (void) *** 30,36 **** return (void *)ffoo1b; } ! extern void * ffoo1c (void); /* { dg-warning "applying #pragma weak" "applying #pragma weak" } */ void * foo1c (void) { return (void *)ffoo1c; --- 30,36 ---- return (void *)ffoo1b; } ! extern void * ffoo1c (void); /* { dg-warning "applying #pragma weak" "applying #pragma weak" { xfail *-*-coff i?86-pc-cygwin h8300-*-hms } } */ void * foo1c (void) { return (void *)ffoo1c; diff -Nrc3pad gcc-3.1/gcc/testsuite/gcc.dg/weak-3.c gcc-3.1.1/gcc/testsuite/gcc.dg/weak-3.c *** gcc-3.1/gcc/testsuite/gcc.dg/weak-3.c Wed May 8 14:36:35 2002 --- gcc-3.1.1/gcc/testsuite/gcc.dg/weak-3.c Fri May 17 04:04:29 2002 *************** *** 3,8 **** --- 3,9 ---- /* COFF does not support weak, and dg doesn't support UNSUPPORTED. */ /* { dg-do compile { xfail *-*-coff i?86-pc-cygwin h8300-*-hms } } */ + /* { dg-excess-errors "COFF does not support weak symbols" { target *-*-coff i?86-pc-cygwin h8300-*-hms } } */ /* { dg-final { global target_triplet } } */ /* { dg-final { if [string match h8300-*-hms $target_triplet ] {return} } } */ diff -Nrc3pad gcc-3.1/gcc/testsuite/gcc.dg/weak-4.c gcc-3.1.1/gcc/testsuite/gcc.dg/weak-4.c *** gcc-3.1/gcc/testsuite/gcc.dg/weak-4.c Sun Apr 28 18:43:58 2002 --- gcc-3.1.1/gcc/testsuite/gcc.dg/weak-4.c Sun May 19 01:26:18 2002 *************** void * foo1b (void) *** 38,44 **** } ! extern int vfoo1c; /* { dg-warning "applying #pragma weak" "applying #pragma weak" } */ void * foo1c (void) { return (void *)&vfoo1c; --- 38,44 ---- } ! extern int vfoo1c; /* { dg-warning "applying #pragma weak" "applying #pragma weak" { xfail *-*-coff i?86-pc-cygwin h8300-*-hms } } */ void * foo1c (void) { return (void *)&vfoo1c; *************** void * foo1f (void) *** 70,76 **** #pragma weak vfoo1f ! extern int vfoo1g; /* { dg-warning "applying #pragma weak" "applying #pragma weak" } */ void * foo1g (void) { return (void *)&vfoo1g; --- 70,76 ---- #pragma weak vfoo1f ! extern int vfoo1g; /* { dg-warning "applying #pragma weak" "applying #pragma weak" { xfail *-*-coff i?86-pc-cygwin h8300-*-hms } } */ void * foo1g (void) { return (void *)&vfoo1g; diff -Nrc3pad gcc-3.1/gcc/testsuite/gcc.dg/weak-5.c gcc-3.1.1/gcc/testsuite/gcc.dg/weak-5.c *** gcc-3.1/gcc/testsuite/gcc.dg/weak-5.c Wed May 8 14:36:35 2002 --- gcc-3.1.1/gcc/testsuite/gcc.dg/weak-5.c Mon May 27 05:48:19 2002 *************** *** 3,25 **** /* COFF does not support weak, and dg doesn't support UNSUPPORTED. */ /* { dg-do compile { xfail *-*-coff i?86-pc-cygwin h8300-*-hms } } */ /* { dg-final { global target_triplet } } */ /* { dg-final { if [string match h8300-*-hms $target_triplet ] {return} } } */ /* { dg-final { if [string match i?86-pc-cygwin $target_triplet ] {return} } } */ /* { dg-final { if [string match *-*-coff $target_triplet ] {return} } } */ ! /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]vfoo1a" } } */ ! /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]vfoo1b" } } */ ! /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]vfoo1c" } } */ ! /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]vfoo1d" } } */ ! /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]vfoo1e" } } */ ! /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]vfoo1f" } } */ ! /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]vfoo1g" } } */ ! /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]vfoo1h" } } */ ! /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]vfoo1i" } } */ ! /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]vfoo1j" } } */ ! /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]vfoo1k" } } */ ! /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]vfoo1l" } } */ /* test variable addresses with __attribute__ ((weak)) */ --- 3,26 ---- /* COFF does not support weak, and dg doesn't support UNSUPPORTED. */ /* { dg-do compile { xfail *-*-coff i?86-pc-cygwin h8300-*-hms } } */ + /* { dg-excess-errors "COFF does not support weak symbols" { target *-*-coff i?86-pc-cygwin h8300-*-hms } } */ /* { dg-final { global target_triplet } } */ /* { dg-final { if [string match h8300-*-hms $target_triplet ] {return} } } */ /* { dg-final { if [string match i?86-pc-cygwin $target_triplet ] {return} } } */ /* { dg-final { if [string match *-*-coff $target_triplet ] {return} } } */ ! /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?vfoo1a" } } */ ! /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?vfoo1b" } } */ ! /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?vfoo1c" } } */ ! /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?vfoo1d" } } */ ! /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?vfoo1e" } } */ ! /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?vfoo1f" } } */ ! /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?vfoo1g" } } */ ! /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?vfoo1h" } } */ ! /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?vfoo1i" } } */ ! /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?vfoo1j" } } */ ! /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?vfoo1k" } } */ ! /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?vfoo1l" } } */ /* test variable addresses with __attribute__ ((weak)) */ *************** void * foo1c (void) *** 44,50 **** { return (void *)&vfoo1c; } ! extern int vfoo1c __attribute__((weak)); /* { dg-warning "weak declaration" "weak declaration" } */ extern int vfoo1d __attribute__((weak)); --- 45,51 ---- { return (void *)&vfoo1c; } ! extern int vfoo1c __attribute__((weak)); /* { dg-warning "unspecified behavior" } */ extern int vfoo1d __attribute__((weak)); *************** void * foo1f (void) *** 68,74 **** { return (void *)&vfoo1f; } ! extern int vfoo1f __attribute__((weak)); extern int vfoo1g; --- 69,75 ---- { return (void *)&vfoo1f; } ! extern int vfoo1f __attribute__((weak)); /* { dg-warning "unspecified behavior" } */ extern int vfoo1g; *************** void * foo1g (void) *** 76,82 **** { return (void *)&vfoo1g; } ! int vfoo1g __attribute__((weak)); extern int vfoo1h __attribute__((weak)); --- 77,83 ---- { return (void *)&vfoo1g; } ! int vfoo1g __attribute__((weak)); /* { dg-warning "unspecified behavior" } */ extern int vfoo1h __attribute__((weak)); *************** int vfoo1k = 1; *** 111,116 **** int vfoox1l = 1; - extern int vfoo1l __attribute__((alias ("vfoox1l"))); extern int vfoo1l __attribute__((weak, alias ("vfoox1l"))); - --- 112,115 ---- diff -Nrc3pad gcc-3.1/gcc/testsuite/gcc.dg/weak-6.c gcc-3.1.1/gcc/testsuite/gcc.dg/weak-6.c *** gcc-3.1/gcc/testsuite/gcc.dg/weak-6.c Sun Apr 28 18:43:58 2002 --- gcc-3.1.1/gcc/testsuite/gcc.dg/weak-6.c Sun May 19 01:26:18 2002 *************** *** 1,6 **** /* { dg-do compile } */ extern void * foo (void); ! void * foo (void) { return (void *)foo; } /* { dg-error "precede" } */ #pragma weak foo --- 1,6 ---- /* { dg-do compile } */ extern void * foo (void); ! void * foo (void) { return (void *)foo; } /* { dg-error "precede" "" { xfail *-*-coff i?86-pc-cygwin h8300-*-hms } } */ #pragma weak foo diff -Nrc3pad gcc-3.1/gcc/testsuite/gcc.dg/weak-7.c gcc-3.1.1/gcc/testsuite/gcc.dg/weak-7.c *** gcc-3.1/gcc/testsuite/gcc.dg/weak-7.c Sun Apr 28 18:43:58 2002 --- gcc-3.1.1/gcc/testsuite/gcc.dg/weak-7.c Fri May 17 04:04:29 2002 *************** *** 1,4 **** --- 1,5 ---- /* { dg-do compile } */ + /* { dg-excess-errors "COFF does not support weak symbols" { target *-*-coff i?86-pc-cygwin h8300-*-hms } } */ extern void * foo (void); void * foo (void) { return (void *)foo; } /* { dg-error "precede" } */ diff -Nrc3pad gcc-3.1/gcc/testsuite/gcc.dg/weak-9.c gcc-3.1.1/gcc/testsuite/gcc.dg/weak-9.c *** gcc-3.1/gcc/testsuite/gcc.dg/weak-9.c Thu Jan 1 00:00:00 1970 --- gcc-3.1.1/gcc/testsuite/gcc.dg/weak-9.c Mon May 27 05:48:20 2002 *************** *** 0 **** --- 1,28 ---- + /* { dg-do compile } */ + /* { dg-options "-fno-common" } */ + + /* COFF does not support weak, and dg doesn't support UNSUPPORTED. */ + /* { dg-do compile { xfail *-*-coff i?86-pc-cygwin h8300-*-hms } } */ + + /* { dg-final { global target_triplet } } */ + /* { dg-final { if [string match h8300-*-hms $target_triplet ] {return} } } */ + /* { dg-final { if [string match i?86-pc-cygwin $target_triplet ] {return} } } * + / + /* { dg-final { if [string match *-*-coff $target_triplet ] {return} } } */ + /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?f1" } } */ + /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?f2" } } */ + /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?f3" } } */ + /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?f4" } } */ + /* { dg-final { scan-assembler "notf1" } } */ + /* { dg-final { scan-assembler "notf2" } } */ + /* { dg-final { scan-assembler "notf3" } } */ + /* { dg-final { scan-assembler "notf4" } } */ + + void f1() __attribute__((weak, alias("notf1"))); + void f2() __attribute__((alias("notf2"), weak)); + + #pragma weak f3=notf3 + void f3(); + + void f4(); + #pragma weak f4=notf4 diff -Nrc3pad gcc-3.1/gcc/testsuite/objc.dg/const-str-2.m gcc-3.1.1/gcc/testsuite/objc.dg/const-str-2.m *** gcc-3.1/gcc/testsuite/objc.dg/const-str-2.m Thu Feb 7 09:08:25 2002 --- gcc-3.1.1/gcc/testsuite/objc.dg/const-str-2.m Thu May 23 18:12:39 2002 *************** *** 5,10 **** { dg-error "no class name specified as argument to -fconstant-string-class" "" { target *-*-* } 0 } void foo () {} - - /* Seem bogus, should investigate some day. */ - /* { dg-error "parse error" "" { target *-*-* } 5 } */ --- 5,7 ----