diff -Nrcpad gcc-4.2.0/gcc/testsuite/ChangeLog gcc-4.2.1/gcc/testsuite/ChangeLog
*** gcc-4.2.0/gcc/testsuite/ChangeLog	Mon May 14 03:12:47 2007
--- gcc-4.2.1/gcc/testsuite/ChangeLog	Thu Jul 19 14:29:16 2007
***************
*** 1,3 ****
--- 1,272 ----
+ 2007-07-19  Release Manager
+ 
+ 	* GCC 4.2.1 released.
+ 
+ 2007-07-11  Paolo Carlini  <pcarlini@suse.de>
+ 
+ 	PR c++/31027
+ 	* g++.dg/inherit/virtual4.C: New.
+ 
+ 2007-07-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+ 
+ 	* gcc.dg/c99-math-double-1.c, gcc.dg/c99-math-float-1.c,
+ 	c99-math-long-double-1.c, c99-math.h: Test subnormals.
+ 
+ 2007-07-07  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR libgfortran/32554
+ 	* gfortran.dg/fmt_p_1.f90: New test.
+ 
+ 2007-07-07  Mark Mitchell  <mark@codesourcery.com>
+ 
+ 	PR c++/32232
+ 	* g++.dg/template/overload9.C: New test.
+ 
+ 2007-07-06  Mark Mitchell  <mark@codesourcery.com>
+ 
+ 	PR c++/32245
+ 	* g++.dg/init/ptrmem4.C: New test.
+ 
+ 	PR c++/32251
+ 	* g++.dg/init/new21.C: Likewise.
+ 
+ 	PR c++/31992
+ 	* g++.dg/template/static30.C: Likewise.
+ 
+ 2007-07-06  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR rtl-optimization/32450
+ 	* gcc.dg/pr32450.c: New runtime test.
+ 
+ 2007-07-03  Mark Mitchell  <mark@codesourcery.com>
+ 
+ 	PR c++/31338
+ 	* g++.dg/ext/complex2.C: New test.
+ 
+ 2007-07-04  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/32500
+ 	* gcc.c-torture/execute/pr32500.c: New testcase.
+ 
+ 2007-07-04  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR tree-optimization/31966
+ 	PR tree-optimization/32533
+ 	* gcc.dg/tree-ssa/pr31966.c: New runtime test.
+ 	* gfortran.dg/pr32533.f90: Ditto.
+ 
+ 2007-07-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+ 
+ 	* gcc.dg/c99-math.h: Fix typo.
+ 
+ 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR libgomp/32468
+ 	* gcc.dg/gomp/pr32468-1.c: New test.
+ 
+ 	PR c++/31748
+ 	* g++.dg/gomp/pr31748.C: New test.
+ 
+ 2007-06-30  Alexandre Oliva  <aoliva@redhat.com>
+ 
+ 	* g++.dg/ext/interface4.C, g++.dg/ext/interface4.h: New.
+ 
+ 2007-06-28  Seongbae Park  <seongbae.park@gmail.com>
+ 
+ 	* gcc.target/arm/stack-corruption.c: New test.
+ 
+ 2007-06-27  Simon Martin  <simartin@users.sourceforge.net>
+ 
+ 	PR c++/27492
+ 	* g++.dg/inherit/covariant15.C: New test.
+ 
+ 2007-06-21  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/32389
+ 	* gcc.target/i386/pr32389.c New test.
+ 
+ 2007-06-20  Daniel Franke  <franke.daniel@gmail.com>
+ 
+ 	Backport from trunk:
+ 	PR fortran/32002
+ 	* gfortran.dg/compliant_elemental_intrinsics_2.f90: New test.
+ 
+ 2007-06-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR inline-asm/32109
+ 	* g++.dg/ext/asm10.C: New test.
+ 
+ 	PR middle-end/32285
+ 	* gcc.c-torture/execute/20070614-1.c: New test.
+ 
+ 2007-06-20  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/32302
+ 	* gfortran.dg/common_resize_1.f90: New test.
+ 
+ 2007-06-19  Richard Guenther  <rguenther@suse.de>
+ 	Michael Matz  <matz@suse.de>
+ 
+ 	PR tree-optimization/30252
+ 	* g++.dg/opt/pr30252.C: New testcase.
+ 
+ 2007-06-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/32353
+ 	* g++.dg/opt/nrv13.C: New test.
+ 
+ 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
+ 
+ 	* g++.dg/lookup/anon6.C: New test.
+ 
+ 2007-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
+ 
+ 	* gcc.target/sparc/align.c: Use 'unsigned char' as element type.
+ 	* gcc.target/sparc/combined-2.c: Likewise.
+ 	* gcc.target/sparc/fexpand.c : Likewise.
+ 	* gcc.target/sparc/fnot.c: Likewise.  Fix a couple of prototypes.
+ 	* gcc.target/sparc/fpack16.c : Likewise.
+ 	* gcc.target/sparc/fpmerge.c : Likewise.
+ 	* gcc.target/sparc/fpmul.c : Likewise.
+ 	* gcc.target/sparc/noresult.c : Likewise.
+ 	* gcc.target/sparc/pdist.c: Likewise.
+ 
+ 2007-06-15  Diego Novillo  <dnovillo@google.com>
+ 
+ 	PR 32327
+ 	* g++.dg/tree-ssa/pr32327-1.C: New test.
+ 	* g++.dg/tree-ssa/pr32327.C: New test.
+ 
+ 2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
+ 
+ 	* gcc.target/sparc/mfpu.c: New test.
+ 
+ 2007-06-09  Ian Lance Taylor  <iant@google.com>
+ 
+ 	PR tree-optimization/32169
+ 	* gcc.c-torture/compile/pr32169.c: New test.
+ 
+ 2007-06-08  Dirk Mueller  <dmueller@suse.de>
+ 
+ 	PR c++/31809
+ 	Backport from mainline:
+ 	2007-05-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* g++.dg/opt/static5.C: New test.
+ 
+ 2007-06-06  Ian Lance Taylor  <iant@google.com>
+ 
+ 	* g++.dg/conversion/enum1.C: New test.
+ 
+ 2007-06-05  Ian Lance Taylor  <iant@google.com>
+ 
+ 	* gcc.dg/Wstrict-overflow-19.c: New test.
+ 
+ 2007-06-04  Ian Lance Taylor  <iant@google.com>
+ 
+ 	* gcc.dg/Wstrict-overflow-18.c: New test.
+ 
+ 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	Backport from mainline:
+ 	2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	* gcc.target/i386/sse2-check.h: New.
+ 	* gcc.target/i386/sse2-vec-1.c: Likewise.
+ 	* gcc.target/i386/sse2-vec-2.c: Likewise.
+ 	* gcc.target/i386/sse2-vec-3.c: Likewise.
+ 	* gcc.target/i386/sse2-vec-4.c: Likewise.
+ 	* gcc.target/i386/sse2-vec-5.c: Likewise.
+ 	* gcc.target/i386/sse2-vec-6.c: Likewise.
+ 
+ 2007-05-31  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/31483
+ 	* gfortran.dg/altreturn_5.f90: New test.
+ 
+ 	PR fortran/31540
+ 	* gfortran.dg/char_result_5.f90: New test.
+ 
+ 	PR fortran/31867
+ 	* gfortran.dg/char_length_5.f90: New test.
+ 
+ 	PR fortran/31994
+ 	* gfortran.dg/array_reference_1.f90: New test.
+ 
+ 2007-05-22  Tobias Burnus  <burnus@net-b.de>
+ 
+ 	PR fortran/31559
+ 	Backport from mainline.
+ 	* primary.c (match_variable): External functions
+ 	are no variables.
+ 
+ 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/31769
+ 	* g++.dg/gomp/pr31769.C: New test.
+ 
+ 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
+ 
+ 	PR tree-opt/32100
+ 	* gcc.c-torture/execute/vrp-7.c: New test.
+ 	 
+ 2007-05-23  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR libfortran/31964
+ 	* gfortran.fortran-torture/execute/intrinsic_bitops.f90: Update.
+ 
+ 2007-05-22  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR libgfortran/31051
+ 	* gfortran.dg/fmt_t_3.f90: New.
+ 
+ 2007-05-22  Dominique d'Humieres  <dominiq@lps.ens.fr>
+ 
+ 	* gfortran.dg/unf_io_convert_3.f90: Fix dg directive.
+ 
+ 2007-05-22  Tobias Burnus  <burnus@net-b.de>
+ 
+ 	PR fortran/31559
+ 	Backport from mainline.
+ 	* func_assign.f90: New test.
+ 
+ 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/31167
+ 	Backport from mainline.
+ 	* gcc.target/i386/pr31167.c: New test.
+ 
+ 2007-05-20  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR libgfortran/31395
+ 	* gfortran.dg/fmt_colon.f90: New test.
+ 
+ 2007-05-20  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/31618
+ 	Backport from trunk.
+ 	* gfortran.dg/backspace_8.f:  New test case.
+ 
+ 2007-05-20  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR libfortran/31196
+ 	Backport from trunk.
+ 	* gfortran.dg/reshape_transpose_1.f90:  New test.
+ 
+ 2007-05-17  Ian Lance Taylor  <iant@google.com>
+ 
+ 	PR tree-optimization/31953
+ 	* gcc.c-torture/compile/pr31953.c: New test.
+ 
+ 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
+ 
+ 	* gcc.c-torture/execute/20070517-1.c: New test.
+ 
+ 2007-05-16  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
+ 
+ 	PR fortran/31725
+ 	* gfortran.dg/substr_4.f: New test.
+ 
  2007-05-13  Release Manager
  
  	* GCC 4.2.0 released.
diff -Nrcpad gcc-4.2.0/gcc/testsuite/g++.dg/conversion/enum1.C gcc-4.2.1/gcc/testsuite/g++.dg/conversion/enum1.C
*** gcc-4.2.0/gcc/testsuite/g++.dg/conversion/enum1.C	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/g++.dg/conversion/enum1.C	Wed Jun  6 13:56:46 2007
***************
*** 0 ****
--- 1,10 ----
+ // { dg-do run }
+ // { dg-options "-O2 -finline-functions" }
+ 
+ enum E { V = 1 };
+ static const E E_MIN = V;
+ static const E E_MAX = V;
+ 
+ bool valid(E v) { return v >= E_MIN && v <= E_MAX; }
+ 
+ int main() { return valid(E(2)); }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/g++.dg/ext/asm10.C gcc-4.2.1/gcc/testsuite/g++.dg/ext/asm10.C
*** gcc-4.2.0/gcc/testsuite/g++.dg/ext/asm10.C	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/g++.dg/ext/asm10.C	Wed Jun 20 06:46:31 2007
***************
*** 0 ****
--- 1,14 ----
+ // PR inline-asm/32109
+ // { dg-do compile }
+ // { dg-options "-O2" }
+ 
+ struct A { int i[3]; ~A (); };
+ struct A a;
+ struct B { struct A c; int i; B (); } b;
+ 
+ B::B ()
+ {
+   __asm ("" : : "r" (a));	// { dg-error "impossible constraint|non-memory input" }
+   __asm ("" : : "r" (b.c));	// { dg-error "impossible constraint|non-memory input" }
+   __asm ("" : : "r" (c));	// { dg-error "impossible constraint|non-memory input" }
+ }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/g++.dg/ext/complex2.C gcc-4.2.1/gcc/testsuite/g++.dg/ext/complex2.C
*** gcc-4.2.0/gcc/testsuite/g++.dg/ext/complex2.C	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/g++.dg/ext/complex2.C	Wed Jul  4 17:18:22 2007
***************
*** 0 ****
--- 1,5 ----
+ // PR c++/31388
+ // { dg-options "" }
+ 
+ bool b = !0i;
+ 
diff -Nrcpad gcc-4.2.0/gcc/testsuite/g++.dg/ext/interface4.C gcc-4.2.1/gcc/testsuite/g++.dg/ext/interface4.C
*** gcc-4.2.0/gcc/testsuite/g++.dg/ext/interface4.C	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/g++.dg/ext/interface4.C	Sat Jun 30 04:53:21 2007
***************
*** 0 ****
--- 1,13 ----
+ /* https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=227376 */
+ 
+ /* { dg-do compile } */
+ /* { dg-options "-g2" } */
+ 
+ /* We used to crash when emitting debug info for type N::A because its
+    context was a namespace, not a function.  */
+ 
+ #include "interface4.h"
+ 
+ void f ( ) {
+         g ( );
+ }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/g++.dg/ext/interface4.h gcc-4.2.1/gcc/testsuite/g++.dg/ext/interface4.h
*** gcc-4.2.0/gcc/testsuite/g++.dg/ext/interface4.h	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/g++.dg/ext/interface4.h	Sat Jun 30 04:53:21 2007
***************
*** 0 ****
--- 1,8 ----
+ #pragma interface
+ namespace N {
+         typedef int A;
+ }
+ inline void g ( ) {
+         static N :: A a = 0;
+         a = a;
+ }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/g++.dg/gomp/pr31748.C gcc-4.2.1/gcc/testsuite/g++.dg/gomp/pr31748.C
*** gcc-4.2.0/gcc/testsuite/g++.dg/gomp/pr31748.C	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/g++.dg/gomp/pr31748.C	Mon Jul  2 13:01:37 2007
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/31748
+ 
+ struct A;
+ 
+ void
+ foo ()
+ {
+ #pragma omp parallel private(A)	// { dg-error "struct A.*is not a variable" }
+   ;
+ }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/g++.dg/gomp/pr31769.C gcc-4.2.1/gcc/testsuite/g++.dg/gomp/pr31769.C
*** gcc-4.2.0/gcc/testsuite/g++.dg/gomp/pr31769.C	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/g++.dg/gomp/pr31769.C	Wed May 30 13:49:06 2007
***************
*** 0 ****
--- 1,61 ----
+ // PR tree-optimization/31769
+ // { dg-options "-O2 -fopenmp" }
+ // { dg-do compile }
+ 
+ struct B
+ {
+   B () {}
+   virtual ~B () {}
+ };
+ struct C
+ {
+   C (int x, int y) {}
+ };
+ template<typename T, int U>
+ struct D
+ {
+   D () {}
+   ~D () {}
+ };
+ struct E
+ {
+   E () {}
+   ~E () {}
+   D<int, 1> e;
+ };
+ struct A
+ {
+   B *b;
+   A () { b = __null; }
+   ~A () { if (b != __null) delete b; }
+ };
+ struct F : public A
+ {
+   explicit F (int x) { foo (0); }
+   F (const F &x) {}
+   F (F &x, C y) {}
+   F operator () (C x) const
+   {
+     return F (const_cast<F &>(*this), x);
+   }
+   template <typename U> F & operator+= (const U &);
+   void foo (int);
+   E f;
+ };
+ 
+ int
+ main ()
+ {
+   try
+   {
+     F f (10);
+     F g (10);
+     C h (0, 9);
+ #pragma omp parallel for
+     for (int i = 0; i < 2; ++i)
+       g += f (h);
+   }
+   catch (int &e)
+   {
+   }
+ }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/g++.dg/inherit/covariant15.C gcc-4.2.1/gcc/testsuite/g++.dg/inherit/covariant15.C
*** gcc-4.2.0/gcc/testsuite/g++.dg/inherit/covariant15.C	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/g++.dg/inherit/covariant15.C	Wed Jun 27 19:53:45 2007
***************
*** 0 ****
--- 1,18 ----
+ /* This used to ICE (PR c++/27492) */
+ /* { dg-do "compile" } */
+ 
+ struct A {};
+ 
+ class B : A
+ {
+     virtual A* foo(); /* { dg-error "overriding" } */
+ };
+ 
+ struct C : virtual B
+ {
+     virtual C* foo(); /* { dg-error "invalid covariant return type" } */
+ };
+ 
+ C* C::foo() { return 0; }
+ 
+ struct D : C {};
diff -Nrcpad gcc-4.2.0/gcc/testsuite/g++.dg/inherit/virtual4.C gcc-4.2.1/gcc/testsuite/g++.dg/inherit/virtual4.C
*** gcc-4.2.0/gcc/testsuite/g++.dg/inherit/virtual4.C	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/g++.dg/inherit/virtual4.C	Wed Jul 11 21:54:36 2007
***************
*** 0 ****
--- 1,24 ----
+ // PR c++/31027
+ 
+ struct A {};
+ 
+ template<typename T>
+ struct C: virtual A {
+   C() {}
+   template<typename T_OTHER> C(const C<T_OTHER>&) {}
+   C func(const class C<long>&) const;
+   operator bool() const;
+ };
+ 
+ template<typename T>
+ struct D: C<T> {
+   void func2() {
+     C<int>a;
+     a.func(a);
+   }
+ };
+ 
+ void func3() {
+   C<int>a;
+   a.func(a);
+ }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/g++.dg/init/new21.C gcc-4.2.1/gcc/testsuite/g++.dg/init/new21.C
*** gcc-4.2.0/gcc/testsuite/g++.dg/init/new21.C	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/g++.dg/init/new21.C	Sat Jul  7 02:02:37 2007
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/32251
+ 
+ struct A {
+   A();
+   void operator delete(void *, ...);
+ };
+ 
+ void foo () {
+   new A; // { dg-warning "deallocation" }
+ }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/g++.dg/init/ptrmem4.C gcc-4.2.1/gcc/testsuite/g++.dg/init/ptrmem4.C
*** gcc-4.2.0/gcc/testsuite/g++.dg/init/ptrmem4.C	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/g++.dg/init/ptrmem4.C	Sat Jul  7 02:02:37 2007
***************
*** 0 ****
--- 1,13 ----
+ // PR c++/32245
+ // { dg-do run } 
+ 
+ struct foo {
+   int mem1;
+   int foo::* mem2;
+ };
+ 
+ int main () {
+   foo x = { 0 } ;
+   if (x.mem2 != foo().mem2)
+     return 1;
+ }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/g++.dg/lookup/anon6.C gcc-4.2.1/gcc/testsuite/g++.dg/lookup/anon6.C
*** gcc-4.2.0/gcc/testsuite/g++.dg/lookup/anon6.C	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/g++.dg/lookup/anon6.C	Tue Jun 19 00:40:30 2007
***************
*** 0 ****
--- 1,11 ----
+ extern int v1; // { dg-error "declared" }
+ static union { int v1; }; // { dg-error "redeclaration" } 
+ 
+ static union { int v2; }; // { dg-error "declared" }
+ extern int v2; // { dg-error "redeclaration" } 
+ 
+ int v3; // { dg-error "declared" }
+ static union { int v3; }; // { dg-error "redeclaration" } 
+ 
+ static union { int v4; }; // { dg-error "declared" }
+ static union { int v4; }; // { dg-error "redeclaration" } 
diff -Nrcpad gcc-4.2.0/gcc/testsuite/g++.dg/opt/nrv13.C gcc-4.2.1/gcc/testsuite/g++.dg/opt/nrv13.C
*** gcc-4.2.0/gcc/testsuite/g++.dg/opt/nrv13.C	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/g++.dg/opt/nrv13.C	Tue Jun 19 09:11:22 2007
***************
*** 0 ****
--- 1,42 ----
+ // PR tree-optimization/32353
+ // { dg-do run }
+ // { dg-options "-O2" }
+ 
+ extern "C" void abort ();
+ 
+ struct A
+ {
+   int f;
+   A (int x) : f (x) {}
+ };
+ 
+ A
+ foo (const A &x, const A &y)
+ {
+   A r (0);
+   r = x.f == -111 ? y : (y.f == -111 || x.f > y.f) ? x : y;
+   A s (0);
+   r = r.f == -111 ? s : (r.f > s.f) ? r : s;
+   return r;
+ }
+ 
+ int
+ main ()
+ {
+   if (foo (A (0), A (1)).f != 1)
+     abort ();
+   if (foo (A (1), A (9)).f != 9)
+     abort ();
+   if (foo (A (9), A (1)).f != 9)
+     abort ();
+   if (foo (A (-4), A (-5)).f != 0)
+     abort ();
+   if (foo (A (-111), A (-111)).f != 0)
+     abort ();
+   if (foo (A (2), A (-111)).f != 2)
+     abort ();
+   if (foo (A (-111), A (6)).f != 6)
+     abort ();
+   if (foo (A (-111), A (-4)).f != 0)
+     abort ();
+ }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/g++.dg/opt/pr30252.C gcc-4.2.1/gcc/testsuite/g++.dg/opt/pr30252.C
*** gcc-4.2.0/gcc/testsuite/g++.dg/opt/pr30252.C	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/g++.dg/opt/pr30252.C	Tue Jun 19 09:24:35 2007
***************
*** 0 ****
--- 1,226 ----
+ /* { dg-do run } */
+ /* { dg-options "-O -fstrict-aliasing" } */
+ 
+ extern "C" void abort (void);
+ namespace sigc {
+   template <class T_type>
+   struct type_trait
+   {
+     typedef T_type& pass;
+     typedef const T_type& take;
+     typedef T_type* pointer;
+   };
+   template <class T_base, class T_derived>
+   struct is_base_and_derived
+   {
+     struct big {
+       char memory[64];
+     };
+     static big is_base_class_(...);
+     static char is_base_class_(typename type_trait<T_base>::pointer);
+     static const bool value =
+     sizeof(is_base_class_(reinterpret_cast<typename type_trait<T_derived>::pointer>(0))) ==
+     sizeof(char);
+   };
+   struct nil;
+   struct functor_base {};
+   template <class T_functor, bool I_derives_functor_base=is_base_and_derived<functor_base,T_functor>::value>
+   struct functor_trait
+   {
+   };
+   template <class T_functor>
+   struct functor_trait<T_functor,true>
+   {
+     typedef typename T_functor::result_type result_type;
+     typedef T_functor functor_type;
+   };
+   template <class T_arg1, class T_return>
+   class pointer_functor1 : public functor_base
+   {
+     typedef T_return (*function_type)(T_arg1);
+     function_type func_ptr_;
+   public:
+     typedef T_return result_type;
+     explicit pointer_functor1(function_type _A_func): func_ptr_(_A_func) {}
+     T_return operator()(typename type_trait<T_arg1>::take _A_a1) const
+     { return func_ptr_(_A_a1); }
+   };
+   template <class T_arg1, class T_return>
+   inline pointer_functor1<T_arg1, T_return>
+   ptr_fun1(T_return (*_A_func)(T_arg1))
+   { return pointer_functor1<T_arg1, T_return>(_A_func); }
+   struct adaptor_base : public functor_base {};
+   template <class T_functor,
+     class T_arg1=void,
+     bool I_derives_adaptor_base=is_base_and_derived<adaptor_base,T_functor>::value>
+   struct deduce_result_type
+   { typedef typename functor_trait<T_functor>::result_type type; };
+   template <class T_functor>
+   struct adaptor_functor : public adaptor_base
+   {
+     template <class T_arg1=void>
+     struct deduce_result_type
+     { typedef typename sigc::deduce_result_type<T_functor, T_arg1>::type type; };
+     typedef typename functor_trait<T_functor>::result_type result_type;
+     result_type
+     operator()() const;
+     template <class T_arg1>
+     typename deduce_result_type<T_arg1>::type
+     operator()(T_arg1 _A_arg1) const
+     { return functor_(_A_arg1); }
+     explicit adaptor_functor(const T_functor& _A_functor)
+       : functor_(_A_functor)
+     {}
+     mutable T_functor functor_;
+   };
+   template <class T_functor>
+   typename adaptor_functor<T_functor>::result_type
+   adaptor_functor<T_functor>::operator()() const
+   { return functor_(); }
+   template <class T_functor, bool I_isadaptor = is_base_and_derived<adaptor_base, T_functor>::value> struct adaptor_trait;
+   template <class T_functor>
+   struct adaptor_trait<T_functor, true>
+   {
+     typedef T_functor adaptor_type;
+   };
+   template <class T_functor>
+   struct adaptor_trait<T_functor, false>
+   {
+     typedef typename functor_trait<T_functor>::functor_type functor_type;
+     typedef adaptor_functor<functor_type> adaptor_type;
+   };
+   template <class T_functor>
+   struct adapts : public adaptor_base
+   {
+     typedef typename adaptor_trait<T_functor>::adaptor_type adaptor_type;
+     explicit adapts(const T_functor& _A_functor)
+       : functor_(_A_functor)
+     {}
+     mutable adaptor_type functor_;
+   };
+   template <class T_type>
+   struct reference_wrapper
+   {
+   };
+   template <class T_type>
+   struct unwrap_reference
+   {
+     typedef T_type type;
+   };
+   template <class T_type>
+   class bound_argument
+   {
+   public:
+     bound_argument(const T_type& _A_argument)
+       : visited_(_A_argument)
+     {}
+     inline T_type& invoke()
+     { return visited_; }
+     T_type visited_;
+   };
+   template <class T_wrapped>
+   class bound_argument< reference_wrapper<T_wrapped> >
+   {
+   };
+   template <int I_location, class T_functor, class T_type1=nil>
+   struct bind_functor;
+   template <class T_functor, class T_type1>
+   struct bind_functor<-1, T_functor, T_type1> : public adapts<T_functor>
+   {
+     typedef typename adapts<T_functor>::adaptor_type adaptor_type;
+     typedef typename adaptor_type::result_type result_type;
+     result_type
+     operator()()
+     {
+       return this->functor_.template operator()<typename type_trait<typename unwrap_reference<T_type1>::type>::pass> (bound1_.invoke());
+     }
+     bind_functor(typename type_trait<T_functor>::take _A_func, typename type_trait<T_type1>::take _A_bound1)
+       : adapts<T_functor>(_A_func), bound1_(_A_bound1)
+     {}
+     bound_argument<T_type1> bound1_;
+   };
+   template <class T_type1, class T_functor>
+   inline bind_functor<-1, T_functor,
+ 		      T_type1>
+   bind(const T_functor& _A_func, T_type1 _A_b1)
+   { return bind_functor<-1, T_functor,
+       T_type1>
+       (_A_func, _A_b1);
+   }
+   namespace internal {
+     struct slot_rep;
+     typedef void* (*hook)(slot_rep *);
+     struct slot_rep
+     {
+       hook call_;
+     };
+   }
+   class slot_base : public functor_base
+   {
+   public:
+     typedef internal::slot_rep rep_type;
+     explicit slot_base(rep_type* rep)
+       : rep_(rep)
+     {
+     }
+     mutable rep_type *rep_;
+   };
+   namespace internal {
+     template <class T_functor>
+     struct typed_slot_rep : public slot_rep
+     {
+       typedef typename adaptor_trait<T_functor>::adaptor_type adaptor_type;
+       adaptor_type functor_;
+       inline typed_slot_rep(const T_functor& functor)
+ 	: functor_(functor)
+       {
+       }
+     };
+     template<class T_functor>
+     struct slot_call0
+     {
+       static void *call_it(slot_rep* rep)
+       {
+ 	typedef typed_slot_rep<T_functor> typed_slot;
+ 	typed_slot *typed_rep = static_cast<typed_slot*>(rep);
+ 	return (typed_rep->functor_)();
+       }
+       static hook address()
+       {
+ 	return &call_it;
+       }
+     };
+   }
+ 
+   class slot0 : public slot_base
+   {
+   public:
+     typedef void * (*call_type)(rep_type*);
+     inline void *operator()() const
+     {
+       return slot_base::rep_->call_ (slot_base::rep_);
+     }
+     template <class T_functor>
+     slot0(const T_functor& _A_func)
+       : slot_base(new internal::typed_slot_rep<T_functor>(_A_func))
+     {
+       slot_base::rep_->call_ = internal::slot_call0<T_functor>::address();
+     }
+   };
+ }
+ struct A
+ {
+   static void *foo (void *p) { return p; }
+   typedef sigc::slot0 C;
+   C bar();
+ };
+ A::C A::bar ()
+ {
+   return sigc::bind (sigc::ptr_fun1 (&A::foo), (void*)0);
+ }
+ int main (void)
+ {
+   A a;
+   if (a.bar ()() != 0)
+     abort ();
+ }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/g++.dg/opt/static5.C gcc-4.2.1/gcc/testsuite/g++.dg/opt/static5.C
*** gcc-4.2.0/gcc/testsuite/g++.dg/opt/static5.C	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/g++.dg/opt/static5.C	Fri Jun  8 21:48:34 2007
***************
*** 0 ****
--- 1,29 ----
+ // PR c++/31809
+ // { dg-do run }
+ // { dg-options "-O2" }
+ 
+ struct S
+ {
+   unsigned v;
+   static inline S f (unsigned a);
+ };
+ 
+ inline S
+ S::f (unsigned a)
+ {
+   static S t = { a };
+   return t;
+ }
+ 
+ const static S s = S::f (26);
+ 
+ extern "C" void abort (void);
+ 
+ int
+ main ()
+ {
+   S t = s;
+   if (t.v != 26)
+     abort ();
+   return 0;
+ }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/g++.dg/template/overload9.C gcc-4.2.1/gcc/testsuite/g++.dg/template/overload9.C
*** gcc-4.2.0/gcc/testsuite/g++.dg/template/overload9.C	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/g++.dg/template/overload9.C	Sat Jul  7 19:16:09 2007
***************
*** 0 ****
--- 1,18 ----
+ // PR c++/32232
+ 
+ template <typename T> struct A;
+ template <typename T> struct B {};
+ template <typename T> A<T>& operator<<(A<T>&, const B<T>&);
+ 
+ template <typename T>
+ struct A 
+ {
+   A<T>& operator<<(A<T>& (*)(A<T>&)); // { dg-error "candidate" }
+ };
+ 
+ template <typename T> A<T>& foo(A<T>&);
+ extern A<char> c;
+ 
+ int main () {
+   c << (1, foo); // { dg-error "no match" }
+ }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/g++.dg/template/static30.C gcc-4.2.1/gcc/testsuite/g++.dg/template/static30.C
*** gcc-4.2.0/gcc/testsuite/g++.dg/template/static30.C	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/g++.dg/template/static30.C	Sat Jul  7 02:02:37 2007
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/31992
+ 
+ template <int> struct A 
+ {
+   static const int i1;
+   static const int i2;
+ };
+ 
+ template <int N> const int A<N>::i1(A<N>::i);
+ template <int N> const int A<N>::i2(3, A<N>::i);
diff -Nrcpad gcc-4.2.0/gcc/testsuite/g++.dg/tree-ssa/pr32327-1.C gcc-4.2.1/gcc/testsuite/g++.dg/tree-ssa/pr32327-1.C
*** gcc-4.2.0/gcc/testsuite/g++.dg/tree-ssa/pr32327-1.C	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/g++.dg/tree-ssa/pr32327-1.C	Fri Jun 15 22:10:09 2007
***************
*** 0 ****
--- 1,70 ----
+ // { dg-do run { target { { i?86-*-* x86_64-*-* } && ilp32 } } }
+ // { dg-options "-O2" }
+ 
+ // Endian sensitive.  This is a little-endian redux.
+ 
+ typedef long long int64;
+ typedef unsigned long long uint64;
+ typedef __SIZE_TYPE__ size_t;
+ 
+ extern "C" {
+ extern void *memcpy (void *__restrict __dest,
+       __const void *__restrict __src, size_t __n) /*throw ()*/;
+ extern void abort (void);
+ }
+ 
+ inline uint64 Swap64(uint64 ull) {
+  uint64 b0 = (ull >>  0) & 0xff;
+  uint64 b1 = (ull >>  8) & 0xff;
+  uint64 b2 = (ull >> 16) & 0xff;
+  uint64 b3 = (ull >> 24) & 0xff;
+  uint64 b4 = (ull >> 32) & 0xff;
+  uint64 b5 = (ull >> 40) & 0xff;
+  uint64 b6 = (ull >> 48) & 0xff;
+  uint64 b7 = (ull >> 56) & 0xff;
+  return (b0 << 56) | (b1 << 48) | (b2 << 40) | (b3 << 32) |
+         (b4 << 24) | (b5 << 16) | (b6 <<  8) | (b7 <<  0);
+ }
+ 
+ inline void KeyFromUint64(uint64 ull, unsigned char* key) {
+  uint64 ull_swap = Swap64(ull);
+  memcpy(key, &ull_swap, sizeof(uint64));
+ }
+ 
+ inline int64 int64_from_double(const double& source) {
+  int64 dest;
+  memcpy(&dest, &source, sizeof(dest));
+  return dest;
+ }
+ 
+ void KeyFromDouble(double x, unsigned char* key) __attribute__ ((noinline));
+ void KeyFromDouble(double x, unsigned char* key) {
+  int64 n = int64_from_double(x);
+  if (n >= 0) {
+    n += 1ull << 63;
+  } else {
+    n = -n;
+  }
+  KeyFromUint64(n, key);
+ }
+ 
+ 
+ void TestKeyFromDouble(uint64 ull) {
+  double d;
+  memcpy(&d, &ull, sizeof(d));
+ 
+  unsigned char key[sizeof(uint64)];
+  unsigned char expected_key[sizeof(uint64)] = { 0x81, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef };
+ 
+  KeyFromDouble(d, key);
+ 
+  for (size_t i = 0; i < sizeof(key); ++i) {
+    if ((key[i] & 0xff) != expected_key[i])
+      abort ();
+  }
+ }
+ 
+ int main() {
+  TestKeyFromDouble(0x0123456789abcdefull);
+  return 0;
+ }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/g++.dg/tree-ssa/pr32327.C gcc-4.2.1/gcc/testsuite/g++.dg/tree-ssa/pr32327.C
*** gcc-4.2.0/gcc/testsuite/g++.dg/tree-ssa/pr32327.C	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/g++.dg/tree-ssa/pr32327.C	Fri Jun 15 22:10:09 2007
***************
*** 0 ****
--- 1,84 ----
+ // { dg-do run { target { { i?86-*-* x86_64-*-* } && ilp32 } } }
+ // { dg-options "-O2" }
+ 
+ typedef unsigned long long uint64;
+ typedef __SIZE_TYPE__ size_t;
+ 
+ extern "C" {
+ extern void *memcpy (void *__restrict __dest,
+       __const void *__restrict __src, size_t __n) /*throw ()*/;
+ extern void abort (void);
+ }
+ 
+ extern void foo (void* p);
+ 
+ inline uint64
+ ghtonll(uint64 x)
+ {
+  // __r is allocated the same stack slot as dest below
+  union { unsigned long long int __ll;
+          unsigned long int __l[2]; } __w, __r;
+  __w.__ll = x;
+  __r.__l[0] = (
+    {
+      register unsigned int __v;
+      __asm__ __volatile__ ("bswap %0" : "=r" (__v) :
+                            "0" ((unsigned int) (__w.__l[1])));
+      __v; });
+ 
+  __r.__l[1] = (
+    {
+      register unsigned int __v;
+      __asm__ __volatile__ ("bswap %0" : "=r" (__v) :
+                            "0" ((unsigned int) (__w.__l[0])));
+      __v; });
+ 
+  return __r.__ll;
+ }
+ 
+ inline uint64
+ double_2_uint64 (const double *source)
+ {
+  uint64 dest;  // allocated the same stack slot as __r above
+  memcpy(&dest, source, sizeof(dest));
+  return dest;
+ }
+ 
+ inline void
+ KeyFromUint64(uint64 fp) {
+  uint64 norder;
+  norder = ghtonll (fp);
+  foo((char*)(&norder));
+ }
+ 
+ void
+ KeyFromDouble(double x) {
+  uint64 n = double_2_uint64 (&x);
+  if (n >= 42) {
+    n += 1;
+  }
+ 
+  KeyFromUint64(n);
+ }
+ 
+ #define NUM		0x0123456789abcdefll
+ #define EXPECTED	0xe0bc9a7856347243ll
+ 
+ void foo (void *x)
+ {
+   if (*((uint64 *)x) != (uint64) EXPECTED)
+     abort ();
+ }
+ 
+ int main ()
+ {
+   if (sizeof (double) != sizeof (uint64))
+     return 0;
+ 
+   if (sizeof (uint64) == sizeof (unsigned long int))
+     return 0;
+ 
+   KeyFromDouble ((double)NUM);
+ 
+   return 0;
+ }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog gcc-4.2.1/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog
*** gcc-4.2.0/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog	Mon May 14 03:12:56 2007
--- gcc-4.2.1/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog	Thu Jul 19 14:29:11 2007
***************
*** 1,3 ****
--- 1,7 ----
+ 2007-07-19  Release Manager
+ 
+ 	* GCC 4.2.1 released.
+ 
  2007-05-13  Release Manager
  
  	* GCC 4.2.0 released.
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gcc.c-torture/compile/pr31953.c gcc-4.2.1/gcc/testsuite/gcc.c-torture/compile/pr31953.c
*** gcc-4.2.0/gcc/testsuite/gcc.c-torture/compile/pr31953.c	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gcc.c-torture/compile/pr31953.c	Fri May 18 05:40:21 2007
***************
*** 0 ****
--- 1,14 ----
+ struct WView
+ {
+   int hexedit_mode:1;
+ };
+ toggle_hexedit_mode (struct WView *view)
+ {
+   if (view->hexedit_mode)
+     {
+     }
+   else
+     {
+       view->hexedit_mode = !view->hexedit_mode;
+     }
+ }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gcc.c-torture/compile/pr32169.c gcc-4.2.1/gcc/testsuite/gcc.c-torture/compile/pr32169.c
*** gcc-4.2.0/gcc/testsuite/gcc.c-torture/compile/pr32169.c	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gcc.c-torture/compile/pr32169.c	Sat Jun  9 16:31:11 2007
***************
*** 0 ****
--- 1,17 ----
+ void f(char);
+ static inline
+ void * __memset_generic(char c)
+ {
+   f(c);
+ }
+ int prepare_startup_playback_urb(
+      int b,
+      int c
+ )
+ {
+   char d;
+   if (b)
+     __memset_generic(c == ( 1) ? 0x80 : 0);
+   else
+     __memset_generic (c == ( 1) ? 0x80 : 0);
+ }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gcc.c-torture/execute/20070517-1.c gcc-4.2.1/gcc/testsuite/gcc.c-torture/execute/20070517-1.c
*** gcc-4.2.0/gcc/testsuite/gcc.c-torture/execute/20070517-1.c	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gcc.c-torture/execute/20070517-1.c	Thu May 17 13:29:38 2007
***************
*** 0 ****
--- 1,41 ----
+ /* PR rtl-optimization/31691 */
+ /* Origin: Chi-Hua Chen <stephaniechc-gccbug@yahoo.com> */
+ 
+ extern void abort (void);
+ 
+ static int get_kind(int) __attribute__ ((noinline));
+ 
+ static int get_kind(int v)
+ {
+   volatile int k = v;
+   return k;
+ }
+ 
+ static int some_call(void) __attribute__ ((noinline));
+ 
+ static int some_call(void)
+ {
+   return 0;
+ }
+ 
+ static void example (int arg)
+ {
+   int tmp, kind = get_kind (arg);
+ 
+   if (kind == 9 || kind == 10 || kind == 5)
+     {
+       if (some_call() == 0)
+         {
+           if (kind == 9 || kind == 10)
+             tmp = arg;
+           else
+             abort();
+         }
+     }
+ } 
+ 
+ int main(void)
+ {
+   example(10);
+   return 0;
+ }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gcc.c-torture/execute/20070614-1.c gcc-4.2.1/gcc/testsuite/gcc.c-torture/execute/20070614-1.c
*** gcc-4.2.0/gcc/testsuite/gcc.c-torture/execute/20070614-1.c	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gcc.c-torture/execute/20070614-1.c	Wed Jun 20 06:44:26 2007
***************
*** 0 ****
--- 1,33 ----
+ extern void abort (void);
+ 
+ _Complex v = 3.0 + 1.0iF;
+ 
+ void
+ foo (_Complex z, int *x)
+ {
+   if (z != v)
+     abort ();
+ }
+ 
+ _Complex bar (_Complex z) __attribute__ ((pure));
+ _Complex
+ bar (_Complex z)
+ {
+   return v;
+ }
+ 
+ int
+ baz (void)
+ {
+   int a, i;
+   for (i = 0; i < 6; i++)
+     foo (bar (1.0iF * i), &a);
+   return 0;
+ }
+ 
+ int
+ main ()
+ {
+   baz ();
+   return 0;
+ }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gcc.c-torture/execute/pr32500.c gcc-4.2.1/gcc/testsuite/gcc.c-torture/execute/pr32500.c
*** gcc-4.2.0/gcc/testsuite/gcc.c-torture/execute/pr32500.c	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gcc.c-torture/execute/pr32500.c	Wed Jul  4 12:38:23 2007
***************
*** 0 ****
--- 1,26 ----
+ extern void abort(void);
+ extern void exit(int);
+ void foo(int) __attribute__((noinline));
+ void bar(void) __attribute__((noinline));
+ 
+ /* Make sure foo is not inlined or considered pure/const.  */
+ int x;
+ void foo(int i) { x = i; }
+ void bar(void) { exit(0); }
+ 
+ int
+ main(int argc, char *argv[])
+ {
+ 	int i;
+ 	int numbers[4] = { 0xdead, 0xbeef, 0x1337, 0x4242 };
+ 
+ 	for (i = 1; i <= 12; i++) {
+ 		if (i <= 4)
+ 			foo(numbers[i]);
+ 		else if (i >= 7 && i <= 9)
+ 			bar();
+ 	}
+ 
+ 	abort();
+ }
+ 
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gcc.c-torture/execute/vrp-7.c gcc-4.2.1/gcc/testsuite/gcc.c-torture/execute/vrp-7.c
*** gcc-4.2.0/gcc/testsuite/gcc.c-torture/execute/vrp-7.c	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gcc.c-torture/execute/vrp-7.c	Mon May 28 19:47:53 2007
***************
*** 0 ****
--- 1,20 ----
+ 
+ void abort (void);
+ 
+ struct T
+ {
+   int b : 1;
+ } t;
+ 
+ void __attribute__((noinline)) foo (int f)
+ {
+   t.b = (f & 0x10) ? 1 : 0;
+ }
+ 
+ int main (void)
+ {
+   foo (0x10);
+   if (!t.b)
+     abort ();
+   return 0;
+ }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gcc.dg/Wstrict-overflow-18.c gcc-4.2.1/gcc/testsuite/gcc.dg/Wstrict-overflow-18.c
*** gcc-4.2.0/gcc/testsuite/gcc.dg/Wstrict-overflow-18.c	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gcc.dg/Wstrict-overflow-18.c	Mon Jun  4 21:58:42 2007
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do compile } */
+ /* { dg-options "-fstrict-overflow -O2 -Wstrict-overflow" } */
+ 
+ /* Don't warn about an overflow when folding i > 0.  The loop analysis
+    should determine that i does not wrap.  */
+ 
+ struct c { unsigned int a; unsigned int b; };
+ extern void bar (struct c *);
+ int
+ foo (struct c *p)
+ {
+   int i;
+   int sum = 0;
+ 
+   for (i = 0; i < p->a - p->b; ++i)
+     {
+       if (i > 0)
+ 	sum += 2;
+       bar (p);
+     }
+   return sum;
+ }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gcc.dg/Wstrict-overflow-19.c gcc-4.2.1/gcc/testsuite/gcc.dg/Wstrict-overflow-19.c
*** gcc-4.2.0/gcc/testsuite/gcc.dg/Wstrict-overflow-19.c	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gcc.dg/Wstrict-overflow-19.c	Tue Jun  5 13:18:59 2007
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do compile } */
+ /* { dg-options "-fstrict-overflow -O2 -Wstrict-overflow" } */
+ 
+ /* Don't warn about an overflow when threading jumps.  We used to get
+    a warning from comparing bounds generated by VRP.  */
+ 
+ int
+ bar(int a, int b, int n)
+ {
+   if (b > a)
+     n = a - b;
+   if (a >= b)
+     n = 1;
+   return n;
+ }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gcc.dg/c99-math-double-1.c gcc-4.2.1/gcc/testsuite/gcc.dg/c99-math-double-1.c
*** gcc-4.2.0/gcc/testsuite/gcc.dg/c99-math-double-1.c	Mon May 30 15:13:30 2005
--- gcc-4.2.1/gcc/testsuite/gcc.dg/c99-math-double-1.c	Sun Jul  8 20:22:34 2007
*************** int main(void)
*** 10,18 ****
    double inf = INFINITY;
    double huge = HUGE_VAL;
    double norm = __DBL_MIN__;
    double zero = 0.0;
  
!   C99_MATH_TESTS (nan, inf, huge, norm, zero)
  
    return 0;
  }
--- 10,19 ----
    double inf = INFINITY;
    double huge = HUGE_VAL;
    double norm = __DBL_MIN__;
+   double sub = __DBL_MIN__ / 2;
    double zero = 0.0;
  
!   C99_MATH_TESTS (nan, inf, huge, norm, sub, zero)
  
    return 0;
  }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gcc.dg/c99-math-float-1.c gcc-4.2.1/gcc/testsuite/gcc.dg/c99-math-float-1.c
*** gcc-4.2.0/gcc/testsuite/gcc.dg/c99-math-float-1.c	Mon May 30 15:13:30 2005
--- gcc-4.2.1/gcc/testsuite/gcc.dg/c99-math-float-1.c	Sun Jul  8 20:22:34 2007
*************** int main(void)
*** 10,18 ****
    float inf = INFINITY;
    float huge = HUGE_VALF;
    float norm = __FLT_MIN__;
    float zero = 0.0f;
  
!   C99_MATH_TESTS (nan, inf, huge, norm, zero)
  
    return 0;
  }
--- 10,19 ----
    float inf = INFINITY;
    float huge = HUGE_VALF;
    float norm = __FLT_MIN__;
+   float sub = __FLT_MIN__ / 2;
    float zero = 0.0f;
  
!   C99_MATH_TESTS (nan, inf, huge, norm, sub, zero)
  
    return 0;
  }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gcc.dg/c99-math-long-double-1.c gcc-4.2.1/gcc/testsuite/gcc.dg/c99-math-long-double-1.c
*** gcc-4.2.0/gcc/testsuite/gcc.dg/c99-math-long-double-1.c	Mon May 30 15:13:30 2005
--- gcc-4.2.1/gcc/testsuite/gcc.dg/c99-math-long-double-1.c	Sun Jul  8 20:22:34 2007
*************** int main(void)
*** 10,18 ****
    long double inf = INFINITY;
    long double huge = HUGE_VALL;
    long double norm = __LDBL_MIN__;
    long double zero = 0.0l;
  
!   C99_MATH_TESTS (nan, inf, huge, norm, zero)
  
    return 0;
  }
--- 10,19 ----
    long double inf = INFINITY;
    long double huge = HUGE_VALL;
    long double norm = __LDBL_MIN__;
+   long double sub = __LDBL_MIN__ / 2;
    long double zero = 0.0l;
  
!   C99_MATH_TESTS (nan, inf, huge, norm, sub, zero)
  
    return 0;
  }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gcc.dg/c99-math.h gcc-4.2.1/gcc/testsuite/gcc.dg/c99-math.h
*** gcc-4.2.0/gcc/testsuite/gcc.dg/c99-math.h	Mon May 30 15:13:30 2005
--- gcc-4.2.1/gcc/testsuite/gcc.dg/c99-math.h	Sun Jul  8 20:22:34 2007
***************
*** 2,8 ****
  
  extern void abort(void);
  
! #define C99_MATH_TESTS(nan, inf, huge, norm, zero)	\
  {							\
    if (fpclassify (nan) != FP_NAN)			\
      abort ();						\
--- 2,8 ----
  
  extern void abort(void);
  
! #define C99_MATH_TESTS(nan, inf, huge, norm, sub, zero)	\
  {							\
    if (fpclassify (nan) != FP_NAN)			\
      abort ();						\
*************** extern void abort(void);
*** 16,21 ****
--- 16,24 ----
    if (fpclassify (norm) != FP_NORMAL)			\
      abort ();						\
  							\
+   if (fpclassify (sub) != FP_SUBNORMAL)			\
+     abort ();						\
+ 							\
    if (fpclassify (zero) != FP_ZERO)			\
      abort ();						\
  							\
*************** extern void abort(void);
*** 32,37 ****
--- 35,43 ----
    if (isnan (norm))					\
      abort ();						\
  							\
+   if (isnan (sub))					\
+     abort ();						\
+ 							\
    if (isnan (zero))					\
      abort ();						\
  							\
*************** extern void abort(void);
*** 45,51 ****
    if (!isinf (huge))					\
      abort ();						\
  							\
!   if (isnan (norm))					\
      abort ();						\
  							\
    if (isinf (zero))					\
--- 51,60 ----
    if (!isinf (huge))					\
      abort ();						\
  							\
!   if (isinf (norm))					\
!     abort ();						\
! 							\
!   if (isinf (sub))					\
      abort ();						\
  							\
    if (isinf (zero))					\
*************** extern void abort(void);
*** 64,69 ****
--- 73,81 ----
    if (!isfinite (norm))					\
      abort ();						\
  							\
+   if (!isfinite (sub))					\
+     abort ();						\
+ 							\
    if (!isfinite (zero))					\
      abort ();						\
  							\
*************** extern void abort(void);
*** 80,85 ****
--- 92,100 ----
    if (!isnormal (norm))					\
      abort ();						\
  							\
+   if (isnormal (sub))					\
+     abort ();						\
+ 							\
    if (isnormal (zero))					\
      abort ();						\
  							\
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gcc.dg/gomp/pr32468-1.c gcc-4.2.1/gcc/testsuite/gcc.dg/gomp/pr32468-1.c
*** gcc-4.2.0/gcc/testsuite/gcc.dg/gomp/pr32468-1.c	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gcc.dg/gomp/pr32468-1.c	Mon Jul  2 19:27:28 2007
***************
*** 0 ****
--- 1,100 ----
+ /* PR libgomp/32468 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fopenmp -fdump-tree-ompexp" } */
+ 
+ extern int printf (const char *, ...);
+ extern int omp_get_thread_num (void), omp_get_num_threads (void);
+ extern int bar (void);
+ extern int baz (const char *, ...);
+ 
+ void
+ f1 (void)
+ {
+ #pragma omp parallel
+   {
+     baz ("%d/%d\n", omp_get_thread_num (), omp_get_num_threads ());
+     #pragma omp sections
+       {
+ 	#pragma omp section
+ 	printf ("section1 %d/%d\n", omp_get_thread_num (), omp_get_num_threads ());
+ 	#pragma omp section
+ 	printf ("section2 %d/%d\n", omp_get_thread_num (), omp_get_num_threads ());
+       }
+   }
+ }
+ 
+ void
+ f2 (void)
+ {
+ #pragma omp parallel
+   {
+     #pragma omp sections
+       {
+ 	#pragma omp section
+ 	printf ("section1 %d/%d\n", omp_get_thread_num (), omp_get_num_threads ());
+ 	#pragma omp section
+ 	printf ("section2 %d/%d\n", omp_get_thread_num (), omp_get_num_threads ());
+       }
+     baz ("%d/%d\n", omp_get_thread_num (), omp_get_num_threads ());
+   }
+ }
+ 
+ void
+ f3 (void)
+ {
+ #pragma omp parallel
+   {
+     int bb = bar ();
+     #pragma omp sections
+       {
+ 	#pragma omp section
+ 	printf ("section1 %d/%d\n", omp_get_thread_num (), omp_get_num_threads ());
+ 	#pragma omp section
+ 	printf ("section2 %d/%d\n", omp_get_thread_num (), omp_get_num_threads ());
+       }
+   }
+ }
+ 
+ void
+ f4 (void)
+ {
+   int i;
+ #pragma omp parallel
+   {
+     baz ("%d/%d\n", omp_get_thread_num (), omp_get_num_threads ());
+     #pragma omp for schedule (dynamic, 15)
+     for (i = 0; i < 10000; i++)
+       printf ("section1 %d/%d\n", omp_get_thread_num (), omp_get_num_threads ());
+   }
+ }
+ 
+ void
+ f5 (void)
+ {
+   int i;
+ #pragma omp parallel
+   {
+     #pragma omp for schedule (dynamic, 15)
+     for (i = 0; i < 10000; i++)
+       printf ("section1 %d/%d\n", omp_get_thread_num (), omp_get_num_threads ());
+     baz ("%d/%d\n", omp_get_thread_num (), omp_get_num_threads ());
+   }
+ }
+ 
+ void
+ f6 (void)
+ {
+   int i;
+ #pragma omp parallel
+   {
+     int bb = bar ();
+     #pragma omp for schedule (runtime)
+     for (i = 0; i < 10000; i++)
+       printf ("section1 %d/%d\n", omp_get_thread_num (), omp_get_num_threads ());
+   }
+ }
+ 
+ /* There should not be a GOMP_parallel_{loop,sections}* call.  */
+ /* { dg-final { scan-tree-dump-times "GOMP_parallel_loop" 0 "ompexp"} } */
+ /* { dg-final { scan-tree-dump-times "GOMP_parallel_sections" 0 "ompexp"} } */
+ /* { dg-final { cleanup-tree-dump "ompexp" } } */
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gcc.dg/pr32450.c gcc-4.2.1/gcc/testsuite/gcc.dg/pr32450.c
*** gcc-4.2.0/gcc/testsuite/gcc.dg/pr32450.c	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gcc.dg/pr32450.c	Fri Jul  6 09:49:52 2007
***************
*** 0 ****
--- 1,33 ----
+ /* Contributed by Joost VandeVondele  <jv244@cam.ac.uk> */
+ 
+ /* { dg-do run } */
+ /* { dg-require-profiling "-pg" } */
+ /* { dg-options "-O2 -pg" } */
+ /* { dg-options "-O2 -pg -static" { target hppa*-*-hpux* } } */
+ 
+ extern void abort (void);
+ 
+ int stack_pointer;
+ 
+ void
+ __attribute__((noinline))
+ mystop ()
+ {
+   abort ();
+ }
+ 
+ void
+ __attribute__((noinline))
+ add ()
+ {
+   if (stack_pointer + 1 > 10)
+     mystop ();
+ 
+   stack_pointer = stack_pointer + 1;
+ }
+ 
+ int main ()
+ {
+   add ();
+   return stack_pointer - 1;
+ }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gcc.dg/tree-ssa/pr31966.c gcc-4.2.1/gcc/testsuite/gcc.dg/tree-ssa/pr31966.c
*** gcc-4.2.0/gcc/testsuite/gcc.dg/tree-ssa/pr31966.c	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gcc.dg/tree-ssa/pr31966.c	Wed Jul  4 05:40:58 2007
***************
*** 0 ****
--- 1,50 ----
+ /* Contributed by Jack Lloyd  <lloyd@randombit.net> */
+ 
+ /* { dg-options "-O2 -ftree-vectorize" } */
+ /* { dg-options "-O2 -ftree-vectorize -march=nocona" { target { i?86-*-* x86_64-*-* } } } */
+ 
+ typedef unsigned long long word;
+ 
+ const unsigned int MP_WORD_BITS = 64;
+ const word MP_WORD_MASK = ~((word)0);
+ const word MP_WORD_TOP_BIT = (word)1 << (8*sizeof(word) - 1);
+ 
+ extern void abort (void);
+ 
+ word do_div(word n1, word n0, word d)
+ {
+   word high = n1 % d, quotient = 0;
+   unsigned int j;
+ 
+   for(j = 0; j != MP_WORD_BITS; ++j)
+     {
+       word high_top_bit = (high & MP_WORD_TOP_BIT);
+ 
+       high <<= 1;
+       high |= (n0 >> (MP_WORD_BITS-1-j)) & 1;
+       quotient <<= 1;
+ 
+       if(high_top_bit || high >= d)
+ 	{
+ 	  high -= d;
+ 	  quotient |= 1;
+ 	}
+     }
+ 
+   return quotient;
+ }
+ 
+ int main()
+ {
+   word result;
+ 
+   result = do_div(0x0000000000200000ll,
+ 		  0x0000000000000000ll,
+ 		  0x86E53497CE000000ll);
+ 
+   
+   if (result != 0x3CBA83)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gcc.target/arm/stack-corruption.c gcc-4.2.1/gcc/testsuite/gcc.target/arm/stack-corruption.c
*** gcc-4.2.0/gcc/testsuite/gcc.target/arm/stack-corruption.c	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gcc.target/arm/stack-corruption.c	Thu Jun 28 20:48:57 2007
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O -mthumb -fno-omit-frame-pointer" } */
+ 
+ int main() {
+   return 0;
+ }
+ 
+ /* { dg-final { scan-assembler-not "\tadd\tr7, sp, #8\n" } } */
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gcc.target/i386/pr31167.c gcc-4.2.1/gcc/testsuite/gcc.target/i386/pr31167.c
*** gcc-4.2.0/gcc/testsuite/gcc.target/i386/pr31167.c	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gcc.target/i386/pr31167.c	Mon May 21 11:31:14 2007
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do compile { target x86_64-*-* } } */
+ /* { dg-options "-O" } */
+ 
+ typedef int int32_t;
+ 
+ int32_t round32hi (const __int128_t arg)
+ {
+   const int SHIFT = 96;
+   const int mshift = 96;
+   const __int128_t M = (~(__int128_t) 0) << mshift;
+   const __int128_t L = (~M) + 1;
+   const __int128_t L1 = ((__int128_t) L) >> 1;
+   const __int128_t Mlo = ((__int128_t) (~M)) >> 1;
+   __int128_t vv = arg & M;
+ 
+   if ((arg & (L1)) && ((arg & Mlo) || (arg & L)))
+     vv += L;
+ 
+   return (int32_t) (vv >> SHIFT);
+ }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gcc.target/i386/pr32389.c gcc-4.2.1/gcc/testsuite/gcc.target/i386/pr32389.c
*** gcc-4.2.0/gcc/testsuite/gcc.target/i386/pr32389.c	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gcc.target/i386/pr32389.c	Thu Jun 21 07:06:29 2007
***************
*** 0 ****
--- 1,10 ----
+ /* Testcase by Mike Frysinger <vapier@gentoo.org>  */
+ 
+ /* { dg-do compile { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
+ /* { dg-options "-msse" } */
+ 
+ double f1();
+ int f2() {
+   __builtin_ia32_stmxcsr();
+   return f1();
+ }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gcc.target/i386/sse2-check.h gcc-4.2.1/gcc/testsuite/gcc.target/i386/sse2-check.h
*** gcc-4.2.0/gcc/testsuite/gcc.target/i386/sse2-check.h	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gcc.target/i386/sse2-check.h	Fri Jun  1 03:07:10 2007
***************
*** 0 ****
--- 1,20 ----
+ #include <stdio.h>
+ #include <stdlib.h>
+ 
+ #include "../../gcc.dg/i386-cpuid.h"
+ 
+ static void sse2_test (void);
+ 
+ int
+ main ()
+ {
+   unsigned long cpu_facilities;
+  
+   cpu_facilities = i386_cpuid_edx ();
+ 
+   /* Run SSE2 test only if host has SSE2 support.  */
+   if ((cpu_facilities & bit_SSE2))
+     sse2_test ();
+ 
+   exit (0);
+ }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gcc.target/i386/sse2-vec-1.c gcc-4.2.1/gcc/testsuite/gcc.target/i386/sse2-vec-1.c
*** gcc-4.2.0/gcc/testsuite/gcc.target/i386/sse2-vec-1.c	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gcc.target/i386/sse2-vec-1.c	Fri Jun  1 03:07:10 2007
***************
*** 0 ****
--- 1,35 ----
+ /* { dg-do run { target i?86-*-* x86_64-*-* } } */
+ /* { dg-options "-O2 -msse2" } */
+ 
+ #include "sse2-check.h"
+ 
+ #include <emmintrin.h>
+ 
+ #define msk0   0
+ #define msk1   1
+ 
+ static void
+ sse2_test (void)
+ {
+   union
+     {
+       __m128d x;
+       double d[2];
+     } val1;
+   double res[2];
+   int masks[2];
+   int i;
+ 
+   val1.d[0] = 23.;
+   val1.d[1] = 45;
+ 
+   res[0] = __builtin_ia32_vec_ext_v2df ((__v2df)val1.x, msk0);
+   res[1] = __builtin_ia32_vec_ext_v2df ((__v2df)val1.x, msk1);
+ 
+   masks[0] = msk0;
+   masks[1] = msk1;
+ 
+   for (i = 0; i < 2; i++)
+     if (res[i] != val1.d [masks[i]])
+       abort ();
+ }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gcc.target/i386/sse2-vec-2.c gcc-4.2.1/gcc/testsuite/gcc.target/i386/sse2-vec-2.c
*** gcc-4.2.0/gcc/testsuite/gcc.target/i386/sse2-vec-2.c	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gcc.target/i386/sse2-vec-2.c	Fri Jun  1 03:07:10 2007
***************
*** 0 ****
--- 1,35 ----
+ /* { dg-do run { target i?86-*-* x86_64-*-* } } */
+ /* { dg-options "-O2 -msse2" } */
+ 
+ #include "sse2-check.h"
+ 
+ #include <emmintrin.h>
+ 
+ static void
+ sse2_test (void)
+ {
+   union
+     {
+       __m128i x;
+       char c[16];
+       short s[8];
+       int i[4];
+       long long ll[2];
+     } val1;
+   long long res[2];
+   int masks[2];
+   int i;
+ 
+   for (i = 0; i < 16; i++)
+     val1.c[i] = i;
+ 
+   res[0] = __builtin_ia32_vec_ext_v2di ((__v2di)val1.x, 0);
+   res[1] = __builtin_ia32_vec_ext_v2di ((__v2di)val1.x, 1);
+ 
+   for (i = 0; i < 2; i++)
+     masks[i] = i;
+ 
+   for (i = 0; i < 2; i++)
+     if (res[i] != val1.ll [masks[i]])
+       abort ();
+ }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gcc.target/i386/sse2-vec-3.c gcc-4.2.1/gcc/testsuite/gcc.target/i386/sse2-vec-3.c
*** gcc-4.2.0/gcc/testsuite/gcc.target/i386/sse2-vec-3.c	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gcc.target/i386/sse2-vec-3.c	Fri Jun  1 03:07:10 2007
***************
*** 0 ****
--- 1,37 ----
+ /* { dg-do run { target i?86-*-* x86_64-*-* } } */
+ /* { dg-options "-O2 -msse2" } */
+ 
+ #include "sse2-check.h"
+ 
+ #include <emmintrin.h>
+ 
+ static void
+ sse2_test (void)
+ {
+   union
+     {
+       __m128i x;
+       char c[16];
+       short s[8];
+       int i[4];
+       long long ll[2];
+     } val1;
+   int res[4];
+   int masks[4];
+   int i;
+ 
+   for (i = 0; i < 16; i++)
+     val1.c[i] = i;
+ 
+   res[0] = __builtin_ia32_vec_ext_v4si ((__v4si)val1.x, 0);
+   res[1] = __builtin_ia32_vec_ext_v4si ((__v4si)val1.x, 1);
+   res[2] = __builtin_ia32_vec_ext_v4si ((__v4si)val1.x, 2);
+   res[3] = __builtin_ia32_vec_ext_v4si ((__v4si)val1.x, 3);
+ 
+   for (i = 0; i < 4; i++)
+     masks[i] = i;
+ 
+   for (i = 0; i < 4; i++)
+     if (res[i] != val1.i [masks[i]])
+       abort ();
+ }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gcc.target/i386/sse2-vec-4.c gcc-4.2.1/gcc/testsuite/gcc.target/i386/sse2-vec-4.c
*** gcc-4.2.0/gcc/testsuite/gcc.target/i386/sse2-vec-4.c	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gcc.target/i386/sse2-vec-4.c	Fri Jun  1 03:07:10 2007
***************
*** 0 ****
--- 1,41 ----
+ /* { dg-do run { target i?86-*-* x86_64-*-* } } */
+ /* { dg-options "-O2 -msse2" } */
+ 
+ #include "sse2-check.h"
+ 
+ #include <emmintrin.h>
+ 
+ static void
+ sse2_test (void)
+ {
+   union
+     {
+       __m128i x;
+       char c[16];
+       short s[8];
+       int i[4];
+       long long ll[2];
+     } val1;
+   short res[8];
+   int masks[8];
+   int i;
+ 
+   for (i = 0; i < 16; i++)
+     val1.c[i] = i;
+ 
+   res[0] = __builtin_ia32_vec_ext_v8hi ((__v8hi)val1.x, 0);
+   res[1] = __builtin_ia32_vec_ext_v8hi ((__v8hi)val1.x, 1);
+   res[2] = __builtin_ia32_vec_ext_v8hi ((__v8hi)val1.x, 2);
+   res[3] = __builtin_ia32_vec_ext_v8hi ((__v8hi)val1.x, 3);
+   res[4] = __builtin_ia32_vec_ext_v8hi ((__v8hi)val1.x, 4);
+   res[5] = __builtin_ia32_vec_ext_v8hi ((__v8hi)val1.x, 5);
+   res[6] = __builtin_ia32_vec_ext_v8hi ((__v8hi)val1.x, 6);
+   res[7] = __builtin_ia32_vec_ext_v8hi ((__v8hi)val1.x, 7);
+ 
+   for (i = 0; i < 8; i++)
+     masks[i] = i;
+ 
+   for (i = 0; i < 8; i++)
+     if (res[i] != val1.s [masks[i]])
+       abort ();
+ }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gcc.target/i386/sse2-vec-5.c gcc-4.2.1/gcc/testsuite/gcc.target/i386/sse2-vec-5.c
*** gcc-4.2.0/gcc/testsuite/gcc.target/i386/sse2-vec-5.c	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gcc.target/i386/sse2-vec-5.c	Thu Jun 21 15:47:40 2007
***************
*** 0 ****
--- 1,49 ----
+ /* { dg-do run { target i?86-*-* x86_64-*-* } } */
+ /* { dg-options "-O2 -msse2" } */
+ 
+ #include "sse2-check.h"
+ 
+ #include <emmintrin.h>
+ 
+ static void
+ sse2_test (void)
+ {
+   union
+     {
+       __m128i x;
+       char c[16];
+       short s[8];
+       int i[4];
+       long long ll[2];
+     } val1;
+   char res[16];
+   int masks[16];
+   int i;
+ 
+   for (i = 0; i < 16; i++)
+     val1.c[i] = i;
+ 
+   res[0] = __builtin_ia32_vec_ext_v16qi ((__v16qi)val1.x, 0);
+   res[1] = __builtin_ia32_vec_ext_v16qi ((__v16qi)val1.x, 1);
+   res[2] = __builtin_ia32_vec_ext_v16qi ((__v16qi)val1.x, 2);
+   res[3] = __builtin_ia32_vec_ext_v16qi ((__v16qi)val1.x, 3);
+   res[4] = __builtin_ia32_vec_ext_v16qi ((__v16qi)val1.x, 4);
+   res[5] = __builtin_ia32_vec_ext_v16qi ((__v16qi)val1.x, 5);
+   res[6] = __builtin_ia32_vec_ext_v16qi ((__v16qi)val1.x, 6);
+   res[7] = __builtin_ia32_vec_ext_v16qi ((__v16qi)val1.x, 7);
+   res[8] = __builtin_ia32_vec_ext_v16qi ((__v16qi)val1.x, 8);
+   res[9] = __builtin_ia32_vec_ext_v16qi ((__v16qi)val1.x, 9);
+   res[10] = __builtin_ia32_vec_ext_v16qi ((__v16qi)val1.x, 10);
+   res[11] = __builtin_ia32_vec_ext_v16qi ((__v16qi)val1.x, 11);
+   res[12] = __builtin_ia32_vec_ext_v16qi ((__v16qi)val1.x, 12);
+   res[13] = __builtin_ia32_vec_ext_v16qi ((__v16qi)val1.x, 13);
+   res[14] = __builtin_ia32_vec_ext_v16qi ((__v16qi)val1.x, 14);
+   res[15] = __builtin_ia32_vec_ext_v16qi ((__v16qi)val1.x, 15);
+ 
+   for (i = 0; i < 16; i++)
+     masks[i] = i;
+ 
+   for (i = 0; i < 16; i++)
+     if (res[i] != val1.c [masks[i]])
+       abort ();
+ }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gcc.target/i386/sse2-vec-6.c gcc-4.2.1/gcc/testsuite/gcc.target/i386/sse2-vec-6.c
*** gcc-4.2.0/gcc/testsuite/gcc.target/i386/sse2-vec-6.c	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gcc.target/i386/sse2-vec-6.c	Fri Jun  1 03:07:10 2007
***************
*** 0 ****
--- 1,69 ----
+ /* { dg-do run { target i?86-*-* x86_64-*-* } } */
+ /* { dg-options "-O2 -msse2" } */
+ 
+ #include "sse2-check.h"
+ 
+ #include <emmintrin.h>
+ #include <string.h>
+ 
+ static void
+ sse2_test (void)
+ {
+   union
+     {
+       __m128i x;
+       char c[16];
+       short s[8];
+       int i[4];
+       long long ll[2];
+     } val1, res[16], tmp;
+   short ins[8] = { 8, 5, 9, 4, 2, 6, 1, 20 };
+   int masks[8];
+   int i;
+ 
+   for (i = 0; i < 16; i++)
+     val1.c[i] = i;
+ 
+   res[0].x = (__m128i) __builtin_ia32_vec_set_v8hi ((__v8hi)val1.x,
+ 						    ins[0], 0);
+   res[1].x = (__m128i) __builtin_ia32_vec_set_v8hi ((__v8hi)val1.x,
+ 						    ins[0], 1);
+   res[2].x = (__m128i) __builtin_ia32_vec_set_v8hi ((__v8hi)val1.x,
+ 						    ins[0], 2);
+   res[3].x = (__m128i) __builtin_ia32_vec_set_v8hi ((__v8hi)val1.x,
+ 						    ins[0], 3);
+   res[4].x = (__m128i) __builtin_ia32_vec_set_v8hi ((__v8hi)val1.x,
+ 						    ins[0], 4);
+   res[5].x = (__m128i) __builtin_ia32_vec_set_v8hi ((__v8hi)val1.x,
+ 						    ins[0], 5);
+   res[6].x = (__m128i) __builtin_ia32_vec_set_v8hi ((__v8hi)val1.x,
+ 						    ins[0], 6);
+   res[7].x = (__m128i) __builtin_ia32_vec_set_v8hi ((__v8hi)val1.x,
+ 						    ins[0], 7);
+ 
+   for (i = 0; i < 8; i++)
+     masks[i] = i;
+ 
+   for (i = 0; i < 8; i++)
+     {
+       tmp.x = val1.x;
+       tmp.s[masks[i]] = ins[0];
+       if (memcmp (&tmp, &res[i], sizeof (tmp)))
+ 	abort ();
+     }
+ 
+   for (i = 0; i < 8; i++)
+     {
+       res[i].x = (__m128i) __builtin_ia32_vec_set_v8hi ((__v8hi)val1.x,
+ 							ins[i], 0);
+       masks[i] = 0;
+     }
+ 
+   for (i = 0; i < 8; i++)
+     {
+       tmp.x = val1.x;
+       tmp.s[masks[i]] = ins[i];
+       if (memcmp (&tmp, &res[i], sizeof (tmp)))
+ 	abort ();
+     }
+ }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gcc.target/sparc/align.c gcc-4.2.1/gcc/testsuite/gcc.target/sparc/align.c
*** gcc-4.2.0/gcc/testsuite/gcc.target/sparc/align.c	Wed Nov 24 10:36:40 2004
--- gcc-4.2.1/gcc/testsuite/gcc.target/sparc/align.c	Sun Jun 17 11:17:39 2007
***************
*** 1,10 ****
  /* { dg-do compile } */
  /* { dg-options "-mcpu=ultrasparc -mvis" } */
- 
  typedef long long int64_t;
  typedef int vec32 __attribute__((vector_size(8)));
  typedef short vec16 __attribute__((vector_size(8)));
! typedef char vec8 __attribute__((vector_size(8)));
  
  vec16 foo1 (vec16 a, vec16 b) {
    return __builtin_vis_faligndatav4hi (a, b);
--- 1,9 ----
  /* { dg-do compile } */
  /* { dg-options "-mcpu=ultrasparc -mvis" } */
  typedef long long int64_t;
  typedef int vec32 __attribute__((vector_size(8)));
  typedef short vec16 __attribute__((vector_size(8)));
! typedef unsigned char vec8 __attribute__((vector_size(8)));
  
  vec16 foo1 (vec16 a, vec16 b) {
    return __builtin_vis_faligndatav4hi (a, b);
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gcc.target/sparc/combined-2.c gcc-4.2.1/gcc/testsuite/gcc.target/sparc/combined-2.c
*** gcc-4.2.0/gcc/testsuite/gcc.target/sparc/combined-2.c	Tue Nov 23 00:35:38 2004
--- gcc-4.2.1/gcc/testsuite/gcc.target/sparc/combined-2.c	Sun Jun 17 11:17:39 2007
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mcpu=ultrasparc -mvis" } */
! typedef char pixel __attribute__((vector_size(4)));
! typedef char vec8 __attribute__((vector_size(8)));
  typedef short vec16 __attribute__((vector_size(8)));
  
  vec16 foo (pixel a, pixel b) {
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -mcpu=ultrasparc -mvis" } */
! typedef unsigned char pixel __attribute__((vector_size(4)));
! typedef unsigned char vec8 __attribute__((vector_size(8)));
  typedef short vec16 __attribute__((vector_size(8)));
  
  vec16 foo (pixel a, pixel b) {
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gcc.target/sparc/fexpand.c gcc-4.2.1/gcc/testsuite/gcc.target/sparc/fexpand.c
*** gcc-4.2.0/gcc/testsuite/gcc.target/sparc/fexpand.c	Tue Nov 23 00:35:38 2004
--- gcc-4.2.1/gcc/testsuite/gcc.target/sparc/fexpand.c	Sun Jun 17 11:17:39 2007
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-options "-mcpu=ultrasparc -mvis" } */
  typedef short vec16 __attribute__((vector_size(8)));
! typedef char vec8 __attribute__((vector_size(4)));
  
  vec16 foo (vec8 a) {
    return __builtin_vis_fexpand (a);
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-mcpu=ultrasparc -mvis" } */
  typedef short vec16 __attribute__((vector_size(8)));
! typedef unsigned char vec8 __attribute__((vector_size(4)));
  
  vec16 foo (vec8 a) {
    return __builtin_vis_fexpand (a);
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gcc.target/sparc/fnot.c gcc-4.2.1/gcc/testsuite/gcc.target/sparc/fnot.c
*** gcc-4.2.0/gcc/testsuite/gcc.target/sparc/fnot.c	Sat Nov 13 13:25:09 2004
--- gcc-4.2.1/gcc/testsuite/gcc.target/sparc/fnot.c	Sun Jun 17 11:17:39 2007
***************
*** 1,8 ****
  /* { dg-do compile } */
  /* { dg-options "-O -mcpu=ultrasparc -mvis" } */
! typedef char  vec8 __attribute__((vector_size(8)));
  typedef short vec16 __attribute__((vector_size(8)));
! typedef int   vec32 __attribute__((vector_size(8)));
  
  extern vec8 foo1_8(void);
  extern void foo2_8(vec8);
--- 1,8 ----
  /* { dg-do compile } */
  /* { dg-options "-O -mcpu=ultrasparc -mvis" } */
! typedef unsigned char vec8 __attribute__((vector_size(8)));
  typedef short vec16 __attribute__((vector_size(8)));
! typedef int vec32 __attribute__((vector_size(8)));
  
  extern vec8 foo1_8(void);
  extern void foo2_8(vec8);
*************** vec8 fun8_2(vec8 a)
*** 21,27 ****
  #endif
  
  extern vec16 foo1_16(void);
! extern void foo2_16(vec8);
  
  
  vec16 fun16(void)
--- 21,27 ----
  #endif
  
  extern vec16 foo1_16(void);
! extern void foo2_16(vec16);
  
  
  vec16 fun16(void)
*************** vec16 fun16_2(vec16 a)
*** 38,44 ****
  #endif
  
  extern vec32 foo1_32(void);
! extern void foo2_32(vec8);
  
  vec32 fun32(void)
  {
--- 38,44 ----
  #endif
  
  extern vec32 foo1_32(void);
! extern void foo2_32(vec32);
  
  vec32 fun32(void)
  {
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gcc.target/sparc/fpack16.c gcc-4.2.1/gcc/testsuite/gcc.target/sparc/fpack16.c
*** gcc-4.2.0/gcc/testsuite/gcc.target/sparc/fpack16.c	Tue Nov 23 00:35:38 2004
--- gcc-4.2.1/gcc/testsuite/gcc.target/sparc/fpack16.c	Sun Jun 17 11:17:39 2007
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-options "-mcpu=ultrasparc -mvis" } */
  typedef short vec16 __attribute__((vector_size(8)));
! typedef char vec8 __attribute__((vector_size(4)));
  
  vec8 foo (vec16 a) {
    return __builtin_vis_fpack16 (a);
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-mcpu=ultrasparc -mvis" } */
  typedef short vec16 __attribute__((vector_size(8)));
! typedef unsigned char vec8 __attribute__((vector_size(4)));
  
  vec8 foo (vec16 a) {
    return __builtin_vis_fpack16 (a);
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gcc.target/sparc/fpmerge.c gcc-4.2.1/gcc/testsuite/gcc.target/sparc/fpmerge.c
*** gcc-4.2.0/gcc/testsuite/gcc.target/sparc/fpmerge.c	Tue Nov 23 00:35:38 2004
--- gcc-4.2.1/gcc/testsuite/gcc.target/sparc/fpmerge.c	Sun Jun 17 11:17:39 2007
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-options "-mcpu=ultrasparc -mvis" } */
! typedef char pixel __attribute__((vector_size(8)));
! typedef char vec8 __attribute__((vector_size(4)));
  
  pixel foo (vec8 a, vec8 b) {
    return __builtin_vis_fpmerge (a, b);
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-mcpu=ultrasparc -mvis" } */
! typedef unsigned char pixel __attribute__((vector_size(8)));
! typedef unsigned char vec8 __attribute__((vector_size(4)));
  
  pixel foo (vec8 a, vec8 b) {
    return __builtin_vis_fpmerge (a, b);
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gcc.target/sparc/fpmul.c gcc-4.2.1/gcc/testsuite/gcc.target/sparc/fpmul.c
*** gcc-4.2.0/gcc/testsuite/gcc.target/sparc/fpmul.c	Tue Nov 23 00:35:38 2004
--- gcc-4.2.1/gcc/testsuite/gcc.target/sparc/fpmul.c	Sun Jun 17 11:17:39 2007
***************
*** 2,10 ****
  /* { dg-options "-mcpu=ultrasparc -mvis" } */
  typedef int vec32 __attribute__((vector_size(8)));
  typedef short vec16 __attribute__((vector_size(8)));
! typedef char pixel __attribute__((vector_size(4)));
  typedef short pixel16 __attribute__((vector_size(4)));
! typedef char vec8 __attribute__((vector_size(8)));
  
  vec16 foo1 (pixel a, vec16 b) {
    return __builtin_vis_fmul8x16 (a, b);
--- 2,10 ----
  /* { dg-options "-mcpu=ultrasparc -mvis" } */
  typedef int vec32 __attribute__((vector_size(8)));
  typedef short vec16 __attribute__((vector_size(8)));
! typedef unsigned char pixel __attribute__((vector_size(4)));
  typedef short pixel16 __attribute__((vector_size(4)));
! typedef unsigned char vec8 __attribute__((vector_size(8)));
  
  vec16 foo1 (pixel a, vec16 b) {
    return __builtin_vis_fmul8x16 (a, b);
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gcc.target/sparc/mfpu.c gcc-4.2.1/gcc/testsuite/gcc.target/sparc/mfpu.c
*** gcc-4.2.0/gcc/testsuite/gcc.target/sparc/mfpu.c	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gcc.target/sparc/mfpu.c	Wed Jun 13 13:59:45 2007
***************
*** 0 ****
--- 1,11 ----
+ /* Reported by Peter A. Krauss <peter.a.krauss@web.de> */
+ 
+ /* { dg-do compile } */
+ /* { dg-options "-mfpu" } */
+ 
+ float square(float x)
+ {
+   return x * x;
+ }
+ 
+ /* { dg-final { scan-assembler "fmuls" } } */
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gcc.target/sparc/noresult.c gcc-4.2.1/gcc/testsuite/gcc.target/sparc/noresult.c
*** gcc-4.2.0/gcc/testsuite/gcc.target/sparc/noresult.c	Wed Jun  8 16:03:31 2005
--- gcc-4.2.1/gcc/testsuite/gcc.target/sparc/noresult.c	Sun Jun 17 11:17:39 2007
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-options "-mcpu=ultrasparc -mvis" } */
  typedef short vec16 __attribute__((vector_size(8)));
- typedef char vec8 __attribute__((vector_size(4)));
  
  void foo (vec16 a) {
    __builtin_vis_fpack16 (a);
--- 1,6 ----
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gcc.target/sparc/pdist.c gcc-4.2.1/gcc/testsuite/gcc.target/sparc/pdist.c
*** gcc-4.2.0/gcc/testsuite/gcc.target/sparc/pdist.c	Wed Nov 24 10:36:40 2004
--- gcc-4.2.1/gcc/testsuite/gcc.target/sparc/pdist.c	Sun Jun 17 11:17:39 2007
***************
*** 1,8 ****
  /* { dg-do compile } */
  /* { dg-options "-mcpu=ultrasparc -mvis" } */
- 
  typedef long long int64_t;
! typedef char vec8 __attribute__((vector_size(8)));
  
  int64_t foo (vec8 a, vec8 b) {
    int64_t d = 0;
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-mcpu=ultrasparc -mvis" } */
  typedef long long int64_t;
! typedef unsigned char vec8 __attribute__((vector_size(8)));
  
  int64_t foo (vec8 a, vec8 b) {
    int64_t d = 0;
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gfortran.dg/altreturn_5.f90 gcc-4.2.1/gcc/testsuite/gfortran.dg/altreturn_5.f90
*** gcc-4.2.0/gcc/testsuite/gfortran.dg/altreturn_5.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gfortran.dg/altreturn_5.f90	Thu May 31 18:50:56 2007
***************
*** 0 ****
--- 1,30 ----
+ ! { dg-do run }
+ ! Tests the fix for PR31483, in which dummy argument procedures
+ ! produced an ICE if they had an alternate return.
+ !
+ ! Contributed by Mathias Fröhlich <M.Froehlich@science-computing.de>
+ 
+       SUBROUTINE R (i, *, *)
+       INTEGER i
+       RETURN i
+       END
+ 
+       SUBROUTINE PHLOAD (READER, i, res)
+       IMPLICIT NONE
+       EXTERNAL         READER
+       integer i
+       character(3) res
+       CALL READER (i, *1, *2)
+  1    res = "one"
+       return
+  2    res = "two"
+       return
+       END
+ 
+       EXTERNAL R
+       character(3) res
+       call PHLOAD (R, 1, res)
+       if (res .ne. "one") call abort ()
+       CALL PHLOAD (R, 2, res)
+       if (res .ne. "two") call abort ()
+       END
\ No newline at end of file
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gfortran.dg/array_reference_1.f90 gcc-4.2.1/gcc/testsuite/gfortran.dg/array_reference_1.f90
*** gcc-4.2.0/gcc/testsuite/gfortran.dg/array_reference_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gfortran.dg/array_reference_1.f90	Thu May 31 18:50:56 2007
***************
*** 0 ****
--- 1,35 ----
+ ! { dg-do run }
+ ! Tests the fix for PR31994, aka 31867, in which the offset
+ ! of 'a' in both subroutines was being evaluated incorrectly.
+ ! The testcase for PR31867 is char_length_5.f90
+ !
+ ! Contributed by Elizabeth Yip <elizabeth.l.yip@boeing.com>
+ !            and Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
+ !
+ program main
+   call PR31994
+   call PR31994_comment6
+ contains
+   subroutine PR31994
+     implicit none
+     complex (kind=4), dimension(2,2) :: a, b, c
+     a(1,1) = (1.,1.)
+     a(2,1) = (2.,2.)
+     a(1,2) = (3.,3.)
+     a(2,2) = (4.,4.)
+     b=conjg (transpose (a))
+     c=transpose (a)
+     c=conjg (c)
+     if (any (b .ne. c)) call abort ()
+   end subroutine PR31994
+   subroutine PR31994_comment6
+     implicit none
+     real ,dimension(2,2)::a
+     integer ,dimension(2,2) :: b, c
+     a = reshape ((/1.,2.,3.,4./), (/2,2/))
+     b=int (transpose(a))
+     c = int (a)
+     c = transpose (c)
+     if (any (b .ne. c)) call abort ()
+   end subroutine PR31994_comment6
+ END program main
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gfortran.dg/backspace_8.f gcc-4.2.1/gcc/testsuite/gfortran.dg/backspace_8.f
*** gcc-4.2.0/gcc/testsuite/gfortran.dg/backspace_8.f	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gfortran.dg/backspace_8.f	Sun May 20 21:07:14 2007
***************
*** 0 ****
--- 1,18 ----
+ C { dg-do run }
+ C PR libfortran/31618 - backspace after an error didn't work.
+       program main
+       character*78 msg
+       open (21, file="backspace_7.dat", form="unformatted")
+       write (21) 42, 43
+       write (21) 4711, 4712
+       write (21) -1, -4
+       rewind (21)
+       read (21) i,j
+       read (21,err=100,end=100) i,j,k
+       call abort
+  100  continue
+       backspace 21
+       read (21) i,j
+       if (i .ne. 4711 .or. j .ne. 4712) call abort
+       close (21,status="delete")
+       end
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gfortran.dg/char_length_5.f90 gcc-4.2.1/gcc/testsuite/gfortran.dg/char_length_5.f90
*** gcc-4.2.0/gcc/testsuite/gfortran.dg/char_length_5.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gfortran.dg/char_length_5.f90	Thu May 31 18:50:56 2007
***************
*** 0 ****
--- 1,61 ----
+ ! { dg-do run }
+ ! Tests the fix for PR31867, in which the interface evaluation
+ ! of the character length of 'join' (ie. the length available in
+ ! the caller) was wrong.
+ !
+ ! Contributed by <beliavsky@aol.com> 
+ !
+ module util_mod
+   implicit none
+ contains
+   function join (words, sep) result(str)
+     character (len=*), intent(in)        :: words(:),sep
+     character (len = (size (words) - 1) * len_trim (sep) + & 
+                sum (len_trim (words)))   :: str
+     integer                              :: i,nw
+     nw  = size (words)
+     str = ""
+     if (nw < 1) then
+       return
+     else
+       str = words(1)
+     end if
+     do i=2,nw
+       str = trim (str) // trim (sep) // words(i)
+     end do
+   end function join
+ end module util_mod
+ !
+ program xjoin
+   use util_mod, only: join
+   implicit none
+   integer yy
+   character (len=5) :: words(5:8) = (/"two  ","three","four ","five "/), sep = "^#^"
+   character (len=5) :: words2(4) = (/"bat  ","ball ","goal ","stump"/), sep2 = "&"
+ 
+   if (join (words, sep) .ne. "two^#^three^#^four^#^five") call abort ()
+   if (len (join (words, sep)) .ne. 25) call abort ()
+ 
+   if (join (words(5:6), sep) .ne. "two^#^three") call abort ()
+   if (len (join (words(5:6), sep)) .ne. 11) call abort ()
+ 
+   if (join (words(7:8), sep) .ne. "four^#^five") call abort ()
+   if (len (join (words(7:8), sep)) .ne. 11) call abort ()
+ 
+   if (join (words(5:7:2), sep) .ne. "two^#^four") call abort ()
+   if (len (join (words(5:7:2), sep)) .ne. 10) call abort ()
+ 
+   if (join (words(6:8:2), sep) .ne. "three^#^five") call abort ()
+   if (len (join (words(6:8:2), sep)) .ne. 12) call abort ()
+ 
+   if (join (words2, sep2) .ne. "bat&ball&goal&stump") call abort ()
+   if (len (join (words2, sep2)) .ne. 19) call abort ()
+ 
+   if (join (words2(1:2), sep2) .ne. "bat&ball") call abort ()
+   if (len (join (words2(1:2), sep2)) .ne. 8) call abort ()
+ 
+   if (join (words2(2:4:2), sep2) .ne. "ball&stump") call abort ()
+   if (len (join (words2(2:4:2), sep2)) .ne. 10) call abort ()
+ 
+ end program xjoin
+ ! { dg-final { cleanup-modules "util_mod" } }
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gfortran.dg/char_result_13.f90 gcc-4.2.1/gcc/testsuite/gfortran.dg/char_result_13.f90
*** gcc-4.2.0/gcc/testsuite/gfortran.dg/char_result_13.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gfortran.dg/char_result_13.f90	Thu May 31 18:50:56 2007
***************
*** 0 ****
--- 1,13 ----
+ ! { dg-do compile }
+ ! tests the fix for PR31540, in which the character lengths in
+ ! parentheses were not resolved.
+ !
+ ! Contributed by Tobias Burnus <burnus@gcc.gnu.org>
+ !
+         subroutine pfb()
+         implicit none
+         external pfname1, pfname2
+         character ((136)) pfname1
+         character ((129+7)) pfname2
+         return
+         end
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gfortran.dg/common_resize_1.f gcc-4.2.1/gcc/testsuite/gfortran.dg/common_resize_1.f
*** gcc-4.2.0/gcc/testsuite/gfortran.dg/common_resize_1.f	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gfortran.dg/common_resize_1.f	Wed Jun 20 05:02:39 2007
***************
*** 0 ****
--- 1,176 ----
+ c { dg-do run }
+ c { dg-options "-std=legacy" }
+ c
+ c Tests the fix for PR32302, in which the resizing of 'aux32' would cause
+ c misalignment for double precision types and a wrong result would be obtained
+ c at any level of optimization except none.
+ c
+ c Contributed by Dale Ranta <dir@lanl.gov> 
+ c
+       subroutine unpki(ixp,nwcon,nmel)
+       parameter(lnv=32)
+       implicit double precision (a-h,o-z)                                    dp
+ c
+ c     unpack connection data
+ c
+       common/aux32/kka(lnv),kkb(lnv),kkc(lnv),
+      1 kk1(lnv),kk2(lnv),kk3(lnv),dxy(lnv),
+      2 dyx(lnv),dyz(lnv),dzy(lnv),dzx(lnv),
+      3 dxz(lnv),vx17(lnv),vx28(lnv),vx35(lnv),
+      4 vx46(lnv),vy17(lnv),vy28(lnv),
+      5 vy35(lnv),vy46(lnv),vz17(lnv),vz28(lnv),vz35(lnv),vz46(lnv)
+       common/aux33/ix1(lnv),ix2(lnv),ix3(lnv),ix4(lnv),ix5(lnv),
+      1             ix6(lnv),ix7(lnv),ix8(lnv),mxt(lnv)
+       dimension ixp(nwcon,*)
+ c
+       return
+       end
+       subroutine prtal
+       parameter(lnv=32)
+       implicit double precision (a-h,o-z)                                    dp
+       common/aux8/
+      & x1(lnv),x2(lnv),x3(lnv),x4(lnv),
+      & x5(lnv),x6(lnv),x7(lnv),x8(lnv),
+      & y1(lnv),y2(lnv),y3(lnv),y4(lnv),
+      & y5(lnv),y6(lnv),y7(lnv),y8(lnv),
+      & z1(lnv),z2(lnv),z3(lnv),z4(lnv),
+      & z5(lnv),z6(lnv),z7(lnv),z8(lnv)
+       common/aux9/vlrho(lnv),det(lnv)
+       common/aux10/
+      1 px1(lnv),px2(lnv),px3(lnv),px4(lnv),
+      & px5(lnv),px6(lnv),px7(lnv),px8(lnv),
+      2 py1(lnv),py2(lnv),py3(lnv),py4(lnv),
+      & py5(lnv),py6(lnv),py7(lnv),py8(lnv),
+      3 pz1(lnv),pz2(lnv),pz3(lnv),pz4(lnv),
+      & pz5(lnv),pz6(lnv),pz7(lnv),pz8(lnv),
+      4 vx1(lnv),vx2(lnv),vx3(lnv),vx4(lnv),
+      5 vx5(lnv),vx6(lnv),vx7(lnv),vx8(lnv),
+      6 vy1(lnv),vy2(lnv),vy3(lnv),vy4(lnv),
+      7 vy5(lnv),vy6(lnv),vy7(lnv),vy8(lnv),
+      8 vz1(lnv),vz2(lnv),vz3(lnv),vz4(lnv),
+      9 vz5(lnv),vz6(lnv),vz7(lnv),vz8(lnv)
+       common/aux32/    ! { dg-warning "shall be of the same size" }
+      a a17(lnv),a28(lnv),dett(lnv),
+      1 aj1(lnv),aj2(lnv),aj3(lnv),aj4(lnv),
+      2 aj5(lnv),aj6(lnv),aj7(lnv),aj8(lnv),
+      3 aj9(lnv),x17(lnv),x28(lnv),x35(lnv),
+      4 x46(lnv),y17(lnv),y28(lnv),y35(lnv),
+      5 y46(lnv),z17(lnv),z28(lnv),z35(lnv),z46(lnv)
+       common/aux33/    ! { dg-warning "shall be of the same size" }
+      a ix1(lnv),ix2(lnv),ix3(lnv),ix4(lnv),ix5(lnv),
+      1             ix6(lnv),ix7(lnv),ix8(lnv),mxt(lnv),nmel
+       common/aux36/lft,llt
+       common/failu/sieu(lnv),failu(lnv)
+       common/sand1/ihf,ibemf,ishlf,itshf
+       dimension aj5968(lnv),aj6749(lnv),aj4857(lnv),aji1(lnv),aji2(lnv),
+      1          aji3(lnv),aji4(lnv),aji5(lnv),
+      1          aji6(lnv),aji7(lnv),aji8(lnv),aji9(lnv),aj12(lnv),
+      2          aj45(lnv),aj78(lnv),b17(lnv),b28(lnv),c17(lnv),c28(lnv)
+ c
+       equivalence (x17,aj5968),(x28,aj6749),(x35,aj4857),(x46,aji1),
+      1 (y17,aji2),(y28,aji3),(y35,aji4),(y46,aji5),(z17,aji6),
+      2 (z28,aji7),(z35,aji8),(z46,aji9),(aj1,aj12),(aj2,aj45),
+      3 (aj3,aj78),(px1,b17),(px2,b28),(px3,c17),(px4,c28)
+       data o64th/0.0156250/
+ c
+ c     jacobian matrix
+ c
+       do 10 i=lft,llt
+       x17(i)=x7(i)-x1(i)
+       x28(i)=x8(i)-x2(i)
+       x35(i)=x5(i)-x3(i)
+       x46(i)=x6(i)-x4(i)
+       y17(i)=y7(i)-y1(i)
+       y28(i)=y8(i)-y2(i)
+       y35(i)=y5(i)-y3(i)
+       y46(i)=y6(i)-y4(i)
+       z17(i)=z7(i)-z1(i)
+       z28(i)=z8(i)-z2(i)
+       z35(i)=z5(i)-z3(i)
+    10 z46(i)=z6(i)-z4(i)
+       do 20 i=lft,llt
+       aj1(i)=x17(i)+x28(i)-x35(i)-x46(i)
+       aj2(i)=y17(i)+y28(i)-y35(i)-y46(i)
+       aj3(i)=z17(i)+z28(i)-z35(i)-z46(i)
+       a17(i)=x17(i)+x46(i)
+       a28(i)=x28(i)+x35(i)
+       b17(i)=y17(i)+y46(i)
+       b28(i)=y28(i)+y35(i)
+       c17(i)=z17(i)+z46(i)
+    20 c28(i)=z28(i)+z35(i)
+       do 30 i=lft,llt
+       aj4(i)=a17(i)+a28(i)
+       aj5(i)=b17(i)+b28(i)
+       aj6(i)=c17(i)+c28(i)
+       aj7(i)=a17(i)-a28(i)
+       aj8(i)=b17(i)-b28(i)
+    30 aj9(i)=c17(i)-c28(i)
+ c
+ c     jacobian
+ c
+       do 40 i=lft,llt
+       aj5968(i)=aj5(i)*aj9(i)-aj6(i)*aj8(i)
+       aj6749(i)=aj6(i)*aj7(i)-aj4(i)*aj9(i)
+    40 aj4857(i)=aj4(i)*aj8(i)-aj5(i)*aj7(i)
+       if (ihf.ne.1) then
+       do 50 i=lft,llt
+    50 det(i)=o64th*(aj1(i)*aj5968(i)+aj2(i)*aj6749(i)+aj3(i)*aj4857(i))
+       else
+       do 55 i=lft,llt
+       det(i)=o64th*(aj1(i)*aj5968(i)+aj2(i)*aj6749(i)+aj3(i)*aj4857(i))
+      1       *failu(i) + (1. - failu(i))
+    55 continue
+       endif
+       do 60 i=lft,llt
+    60 dett(i)=o64th/det(i)
+ 
+       if (det(lft) .ne. 1d0) call abort ()
+       if (det(llt) .ne. 1d0) call abort ()
+ 
+       return
+ c
+       end
+       program main
+       parameter(lnv=32)
+       implicit double precision (a-h,o-z)                                    dp
+       common/aux8/
+      & x1(lnv),x2(lnv),x3(lnv),x4(lnv),
+      & x5(lnv),x6(lnv),x7(lnv),x8(lnv),
+      & y1(lnv),y2(lnv),y3(lnv),y4(lnv),
+      & y5(lnv),y6(lnv),y7(lnv),y8(lnv),
+      & z1(lnv),z2(lnv),z3(lnv),z4(lnv),
+      & z5(lnv),z6(lnv),z7(lnv),z8(lnv)
+       common/aux36/lft,llt
+       common/sand1/ihf,ibemf,ishlf,itshf
+       lft=1
+       llt=1
+       x1(1)=0
+       x2(1)=1
+       x3(1)=1
+       x4(1)=0
+       x5(1)=0
+       x6(1)=1
+       x7(1)=1
+       x8(1)=0
+ 
+       y1(1)=0
+       y2(1)=0
+       y3(1)=1
+       y4(1)=1
+       y5(1)=0
+       y6(1)=0
+       y7(1)=1
+       y8(1)=1
+ 
+       z1(1)=0
+       z2(1)=0
+       z3(1)=0
+       z4(1)=0
+       z5(1)=1
+       z6(1)=1
+       z7(1)=1
+       z8(1)=1
+       call prtal
+       stop
+       end
+ 
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gfortran.dg/compliant_elemental_intrinsics_2.f90 gcc-4.2.1/gcc/testsuite/gfortran.dg/compliant_elemental_intrinsics_2.f90
*** gcc-4.2.0/gcc/testsuite/gfortran.dg/compliant_elemental_intrinsics_2.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gfortran.dg/compliant_elemental_intrinsics_2.f90	Wed Jun 20 21:35:04 2007
***************
*** 0 ****
--- 1,44 ----
+ ! { dg-compile }
+ !
+ ! Testcases from PR32002.
+ !
+ PROGRAM test_pr32002
+ 
+   CALL test_1()                       ! scalar/vector
+   CALL test_2()                       ! vector/vector
+   CALL test_3()                       ! matrix/vector
+   CALL test_4()                       ! matrix/matrix
+ 
+ CONTAINS
+   ELEMENTAL FUNCTION f(x)
+     INTEGER, INTENT(in) :: x
+     INTEGER :: f
+     f = x
+   END FUNCTION
+ 
+   SUBROUTINE test_1()
+     INTEGER :: a = 0, b(2) = 0
+     a = f(b)                          ! { dg-error "Incompatible ranks" }
+     b = f(a)                          ! ok, set all array elements to f(a)
+   END SUBROUTINE
+ 
+   SUBROUTINE test_2()
+     INTEGER :: a(2) = 0, b(3) = 0
+     a = f(b)                          ! { dg-error "different shape" }
+     a = f(b(1:2))                     ! ok, slice, stride 1
+     a = f(b(1:3:2))                   ! ok, slice, stride 2
+   END SUBROUTINE
+ 
+   SUBROUTINE test_3()
+     INTEGER :: a(4) = 0, b(2,2) = 0
+     a = f(b)                          ! { dg-error "Incompatible ranks" }
+     a = f(RESHAPE(b, (/ 4 /)))        ! ok, same shape
+   END SUBROUTINE
+ 
+   SUBROUTINE test_4()
+     INTEGER :: a(2,2) = 0, b(3,3) = 0
+     a = f(b)                          ! { dg-error "different shape" }
+     a = f(b(1:3, 1:2))                ! { dg-error "different shape" }
+     a = f(b(1:3:2, 1:3:2))            ! ok, same shape
+   END SUBROUTINE
+ END PROGRAM
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gfortran.dg/fmt_colon.f90 gcc-4.2.1/gcc/testsuite/gfortran.dg/fmt_colon.f90
*** gcc-4.2.0/gcc/testsuite/gfortran.dg/fmt_colon.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gfortran.dg/fmt_colon.f90	Mon May 21 00:06:46 2007
***************
*** 0 ****
--- 1,14 ----
+ ! { dg-do run }
+ ! PR31395 Colon edit descriptor is ignored.
+ ! Test case derived from PR. Prepared by Jerry DeLisle
+ ! <jvdelisle@gcc.gnu.org>
+ PROGRAM test
+     INTEGER :: i = 1
+     character(30) :: astring
+     WRITE(astring, 10) i
+  10 FORMAT('i =',I2:' this should not print')
+     if (astring.ne."i = 1") call abort
+     write(astring, 20) i, i
+  20 format('i =',I2:' this should print',I2)
+     if (astring.ne."i = 1 this should print 1") call abort
+ END PROGRAM test
\ No newline at end of file
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gfortran.dg/fmt_p_1.f90 gcc-4.2.1/gcc/testsuite/gfortran.dg/fmt_p_1.f90
*** gcc-4.2.0/gcc/testsuite/gfortran.dg/fmt_p_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gfortran.dg/fmt_p_1.f90	Sun Jul  8 02:24:37 2007
***************
*** 0 ****
--- 1,12 ----
+ ! { dg-do run }
+ ! PR32554 Bug in P formatting
+ ! Test case from the bug reporter
+ program gfcbug66
+   real(8) :: x = 1.0e-100_8
+   character(50) :: outstr
+   write (outstr,'(1X,2E12.3)')    x, 2 * x
+   if (outstr.ne."    0.100E-99   0.200E-99") call abort
+   write (outstr,'(1X,1P,2E12.3)') x, 2 * x   ! Second printed number is wrong
+   if (outstr.ne."    1.000-100   2.000-100") call abort
+ end program gfcbug66
+ 
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gfortran.dg/fmt_t_3.f90 gcc-4.2.1/gcc/testsuite/gfortran.dg/fmt_t_3.f90
*** gcc-4.2.0/gcc/testsuite/gfortran.dg/fmt_t_3.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gfortran.dg/fmt_t_3.f90	Wed May 23 03:14:35 2007
***************
*** 0 ****
--- 1,15 ----
+ ! { dg-do run }
+ ! PR31051 bug with x and t format descriptors.
+ ! Test case prepared by Jerry DeLisle  <jvdelisle@gcc.gnu.org> from PR.
+ program t
+    integer, parameter :: n = 9
+    character(len=40) :: fmt
+    character(len=2), dimension(n) :: y
+    open(unit=10, status="scratch")
+    y = 'a '
+    fmt = '(a,1x,(t7, 3a))'
+    write(10, fmt) 'xxxx', (y(i), i = 1,n)
+    rewind(10)
+    read(10, '(a)') fmt
+    if (fmt.ne."xxxx  a a a") call abort()
+ end program t
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gfortran.dg/func_assign.f90 gcc-4.2.1/gcc/testsuite/gfortran.dg/func_assign.f90
*** gcc-4.2.0/gcc/testsuite/gfortran.dg/func_assign.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gfortran.dg/func_assign.f90	Tue May 22 14:09:42 2007
***************
*** 0 ****
--- 1,33 ----
+ ! { dg-do compile }
+ !
+ ! PR fortran/31559
+ ! Do not allow assigning to external functions
+ !
+ ! Contributed by Steve Kargl <sgk@troutmask.apl.washington.edu>
+ !
+ module mod
+   implicit none
+ contains
+   integer function bar()
+     bar = 4
+   end function bar
+ 
+   subroutine a() 
+    implicit none
+    real :: fun
+    external fun
+    interface
+      function funget(a)
+        integer :: a
+      end function
+      subroutine sub()
+      end subroutine sub
+    end interface
+    sub = 'a'  ! { dg-error "Expected VARIABLE" }
+    fun = 4.4  ! { dg-error "Expected VARIABLE" }
+    funget = 4 ! { dg-error "is not a VALUE" }
+    bar = 5    ! { dg-error "is not a VALUE" }
+   end subroutine a
+ end module mod
+ 
+ end
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gfortran.dg/pr32533.f90 gcc-4.2.1/gcc/testsuite/gfortran.dg/pr32533.f90
*** gcc-4.2.0/gcc/testsuite/gfortran.dg/pr32533.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gfortran.dg/pr32533.f90	Wed Jul  4 05:40:58 2007
***************
*** 0 ****
--- 1,18 ----
+ ! { dg-do run }
+ ! { dg-options "-O2 -ftree-vectorize -ffast-math" }
+ !
+ ! Contributed by Joost VandeVondele <jv244@cam.ac.uk>
+ !
+ SUBROUTINE T(nsubcell,sab_max,subcells)
+   INTEGER, PARAMETER :: dp=KIND(0.0D0)
+   REAL(dp) :: sab_max(3), subcells,nsubcell(3)
+   nsubcell(:) = MIN(MAX(1,NINT(0.5_dp*subcells/sab_max(:))),20)
+ END SUBROUTINE T
+ 
+ INTEGER, PARAMETER :: dp=KIND(0.0D0)
+ REAL(dp) :: sab_max(3), subcells,nsubcell(3)
+ subcells=2.0_dp
+ sab_max=0.590060749244805_dp
+ CALL T(nsubcell,sab_max,subcells)
+ IF (ANY(nsubcell.NE.2.0_dp)) CALL ABORT()
+ END
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gfortran.dg/reshape_transpose_1.f90 gcc-4.2.1/gcc/testsuite/gfortran.dg/reshape_transpose_1.f90
*** gcc-4.2.0/gcc/testsuite/gfortran.dg/reshape_transpose_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gfortran.dg/reshape_transpose_1.f90	Sun May 20 12:28:29 2007
***************
*** 0 ****
--- 1,18 ----
+ ! { dg-do run }
+ ! PR 31196 - reshape of transposed derived types generated
+ !            wront results.
+ program main
+   implicit none
+   TYPE datatype
+      INTEGER :: I
+   END TYPE datatype
+   character (len=20) line1, line2
+   TYPE(datatype), dimension(2,2) :: data, result
+   data(1,1)%i = 1
+   data(2,1)%i = 2
+   data(1,2)%i = 3
+   data(2,2)%i = 4
+   write (unit=line1, fmt="(4I4)") reshape(transpose(data),shape(data))
+   write (unit=line2, fmt="(4I4)") (/ 1, 3, 2, 4 /)
+   if (line1 /= line2) call abort
+ END program main
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gfortran.dg/substr_4.f gcc-4.2.1/gcc/testsuite/gfortran.dg/substr_4.f
*** gcc-4.2.0/gcc/testsuite/gfortran.dg/substr_4.f	Thu Jan  1 00:00:00 1970
--- gcc-4.2.1/gcc/testsuite/gfortran.dg/substr_4.f	Wed May 16 13:36:03 2007
***************
*** 0 ****
--- 1,69 ----
+ ! { dg-do run }
+       subroutine test_lower
+       implicit none
+       character(3), dimension(3) :: zsymel,zsymelr
+       common /xx/ zsymel, zsymelr
+       integer :: znsymelr
+       zsymel = (/ 'X', 'Y', ' ' /)
+       zsymelr= (/ 'X', 'Y', ' ' /)
+       znsymelr=2
+       call check_zsymel(zsymel,zsymelr,znsymelr)
+ 
+       contains
+ 
+       subroutine check_zsymel(zsymel,zsymelr,znsymelr)
+         implicit none
+         integer znsymelr, isym
+         character(*) zsymel(*),zsymelr(*)
+         character(len=80) buf
+         zsymel(3)(lenstr(zsymel(3))+1:)='X'
+         write (buf,10) (trim(zsymelr(isym)),isym=1,znsymelr)
+ 10      format(3(a,:,','))
+         if (trim(buf) /= 'X,Y') call abort
+       end subroutine check_zsymel
+ 
+       function lenstr(s)
+         character(len=*),intent(in) :: s
+         integer :: lenstr
+         if (len_trim(s) /= 0) call abort
+         lenstr = len_trim(s)
+       end function lenstr
+ 
+       end subroutine test_lower
+ 
+       subroutine test_upper
+       implicit none
+       character(3), dimension(3) :: zsymel,zsymelr
+       common /xx/ zsymel, zsymelr
+       integer :: znsymelr
+       zsymel = (/ 'X', 'Y', ' ' /)
+       zsymelr= (/ 'X', 'Y', ' ' /)
+       znsymelr=2
+       call check_zsymel(zsymel,zsymelr,znsymelr)
+ 
+       contains
+ 
+       subroutine check_zsymel(zsymel,zsymelr,znsymelr)
+         implicit none
+         integer znsymelr, isym
+         character(*) zsymel(*),zsymelr(*)
+         character(len=80) buf
+         zsymel(3)(:lenstr(zsymel(3))+1)='X'
+         write (buf,20) (trim(zsymelr(isym)),isym=1,znsymelr)
+ 20      format(3(a,:,','))
+         if (trim(buf) /= 'X,Y') call abort
+       end subroutine check_zsymel
+ 
+       function lenstr(s)
+         character(len=*),intent(in) :: s
+         integer :: lenstr
+         if (len_trim(s) /= 0) call abort
+         lenstr = len_trim(s)
+       end function lenstr
+ 
+       end subroutine test_upper
+ 
+       program test
+         call test_lower
+         call test_upper
+       end program test
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gfortran.dg/unf_io_convert_3.f90 gcc-4.2.1/gcc/testsuite/gfortran.dg/unf_io_convert_3.f90
*** gcc-4.2.0/gcc/testsuite/gfortran.dg/unf_io_convert_3.f90	Sat Dec 10 20:01:56 2005
--- gcc-4.2.1/gcc/testsuite/gfortran.dg/unf_io_convert_3.f90	Tue May 22 14:27:53 2007
***************
*** 1,4 ****
! ! { dg-do run}
  ! { dg-require-effective-target fortran_large_real }
  program main
    integer,parameter :: k = selected_real_kind (precision (0.0_8) + 1)
--- 1,4 ----
! ! { dg-do run }
  ! { dg-require-effective-target fortran_large_real }
  program main
    integer,parameter :: k = selected_real_kind (precision (0.0_8) + 1)
diff -Nrcpad gcc-4.2.0/gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_bitops.f90 gcc-4.2.1/gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_bitops.f90
*** gcc-4.2.0/gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_bitops.f90	Thu May 13 06:41:07 2004
--- gcc-4.2.1/gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_bitops.f90	Thu May 24 05:50:46 2007
*************** program intrinsic_bitops
*** 8,14 ****
     i = 2
     j = 3
     k = 12
! 
     if (.not. btest (i, o+1)) call abort
     if (btest (i, o+2)) call abort
     if (iand (i, j) .ne. 2) call abort
--- 8,15 ----
     i = 2
     j = 3
     k = 12
!    a = 5
!    
     if (.not. btest (i, o+1)) call abort
     if (btest (i, o+2)) call abort
     if (iand (i, j) .ne. 2) call abort
*************** program intrinsic_bitops
*** 26,29 ****
--- 27,32 ----
     if (ishftc (k, o-30) .ne. 48) call abort
     if (ishftc (k, o+1, o+3) .ne. 9) call abort
     if (not (i) .ne. -3) call abort
+    if (ishftc (a, 1, bit_size(a)) .ne. 10) call abort
+    if (ishftc (1, 1, 32) .ne. 2) call abort
  end program
diff -Nrcpad gcc-4.2.0/gcc/testsuite/treelang/ChangeLog gcc-4.2.1/gcc/testsuite/treelang/ChangeLog
*** gcc-4.2.0/gcc/testsuite/treelang/ChangeLog	Mon May 14 03:12:51 2007
--- gcc-4.2.1/gcc/testsuite/treelang/ChangeLog	Thu Jul 19 14:29:14 2007
***************
*** 1,3 ****
--- 1,7 ----
+ 2007-07-19  Release Manager
+ 
+ 	* GCC 4.2.1 released.
+ 
  2007-05-13  Release Manager
  
  	* GCC 4.2.0 released.
