Index: trunk/src/gcc/INSTALL/specific.html
===================================================================
--- trunk/src/gcc/INSTALL/specific.html	(revision 1472)
+++ trunk/src/gcc/INSTALL/specific.html	(revision 1475)
@@ -1420,4 +1420,11 @@
 64-bit target libraries.
 
+   <p>GCC 3.3 triggers code generation bugs in earlier versions of the GNU
+compiler (especially GCC 3.0.x versions), which lead to the miscompilation
+of the stage1 compiler and the subsequent failure of the bootstrap process. 
+A workaround is to use GCC 3.2.3 as an intermediary stage, i.e. to bootstrap
+that compiler with the base compiler and then use it to bootstrap the final
+compiler.
+
    <hr />
 
Index: trunk/src/gcc/gcc/testsuite/g++.dg/expr/anew1.C
===================================================================
--- trunk/src/gcc/gcc/testsuite/g++.dg/expr/anew1.C	(revision 1472)
+++ trunk/src/gcc/gcc/testsuite/g++.dg/expr/anew1.C	(revision 1475)
@@ -1,3 +1,4 @@
-// { dg-do run }
+// { dg-do run { xfail *-*-* } }
+// XFAILed until PR2123 is fixed
 // PR 11228: array operator new, with zero-initialization and a variable sized array.
 // Regression test for PR 
@@ -5,7 +6,14 @@
 
 
+#include <new>
+#include <stdlib.h>
+#include <string.h>
+
 int* allocate(int n)
 {
-  return new int[n]();
+  void *p;
+  p = malloc(n * sizeof (int));
+  memset (p, 0xff, n * sizeof(int));
+  return new (p) int[n]();
 }
 
@@ -16,5 +24,5 @@
   for (int i = 0; i < n; ++i)
     if (p[i] != 0)
-      return 1;
-  return 0;
+      abort ();
+  exit (0);
 }
Index: trunk/src/gcc/gcc/testsuite/g++.dg/expr/anew2.C
===================================================================
--- trunk/src/gcc/gcc/testsuite/g++.dg/expr/anew2.C	(revision 1472)
+++ trunk/src/gcc/gcc/testsuite/g++.dg/expr/anew2.C	(revision 1475)
@@ -1,3 +1,4 @@
-// { dg-do run }
+// { dg-do run { xfail *-*-* } }
+// XFAILed until PR2123 is fixed
 // PR 11228: array operator new, with zero-initialization and a variable sized array.
 // Regression test for PR 
@@ -5,7 +6,14 @@
 
 
+#include <new>
+#include <stdlib.h>
+#include <string.h>
+
 double* allocate(int n)
 {
-  return new double[n]();
+  void *p;
+  p = malloc(n * sizeof (double));
+  memset (p, 0xff, n * sizeof(double));
+  return new (p) double[n]();
 }
 
@@ -16,5 +24,5 @@
   for (int i = 0; i < n; ++i)
     if (p[i] != 0.0)
-      return 1;
-  return 0;
+      abort ();
+  exit (0);
 }
Index: trunk/src/gcc/gcc/testsuite/g++.dg/expr/anew3.C
===================================================================
--- trunk/src/gcc/gcc/testsuite/g++.dg/expr/anew3.C	(revision 1472)
+++ trunk/src/gcc/gcc/testsuite/g++.dg/expr/anew3.C	(revision 1475)
@@ -1,6 +1,11 @@
-// { dg-do run }
+// { dg-do run { xfail *-*-* } }
+// XFAILed until PR2123 is fixed
 // PR 11228: array operator new, with zero-initialization and a variable sized array.
 // Regression test for PR 
 // Author: Matt Austern <austern@apple.com>
+
+#include <new>
+#include <stdlib.h>
+#include <string.h>
 
 struct X
@@ -12,5 +17,8 @@
 X* allocate(int n)
 {
-  return new X[n]();
+  void *p;
+  p = malloc(n * sizeof (X));
+  memset (p, 0xff, n * sizeof(X));
+  return new (p) X[n]();
 }
 
@@ -21,5 +29,5 @@
   for (int i = 0; i < n; ++i)
     if (p[i].a != 0 || p[i].b != 0.0)
-      return 1;
-  return 0;
+      abort ();
+  exit (0);
 }
Index: trunk/src/gcc/gcc/testsuite/g++.dg/expr/anew4.C
===================================================================
--- trunk/src/gcc/gcc/testsuite/g++.dg/expr/anew4.C	(revision 1472)
+++ trunk/src/gcc/gcc/testsuite/g++.dg/expr/anew4.C	(revision 1475)
@@ -1,6 +1,11 @@
-// { dg-do run }
+// { dg-do run { xfail *-*-* } }
+// XFAILed until PR2123 is fixed
 // PR 11228: array operator new, with zero-initialization and a variable sized array.
 // Regression test for PR 
 // Author: Matt Austern <austern@apple.com>
+
+#include <new>
+#include <stdlib.h>
+#include <string.h>
 
 struct B
@@ -24,5 +29,8 @@
 D* allocate(int n)
 {
-  return new D[n]();
+  void *p;
+  p = malloc(n * sizeof (D));
+  memset (p, 0xff, n * sizeof(D));
+  return new (p) D[n]();
 }
 
@@ -33,5 +41,5 @@
   for (int i = 0; i < n; ++i)
     if (p[i].n != 137 || p[i].x != 0)
-      return 1;
-  return 0;
+      abort ();
+  exit (0);
 }
Index: trunk/src/gcc/gcc/testsuite/g++.dg/opt/inline4.C
===================================================================
--- trunk/src/gcc/gcc/testsuite/g++.dg/opt/inline4.C	(revision 1472)
+++ trunk/src/gcc/gcc/testsuite/g++.dg/opt/inline4.C	(revision 1475)
@@ -11,3 +11,3 @@
 }
 
-// { dg-final { scan-assembler-not "_Z1g"  } }
+// { dg-final { scan-assembler-not "\n_?_Z1gILi\[0-9\]+EEvv\[: \t\n\]"  } }
Index: trunk/src/gcc/gcc/testsuite/g++.dg/opt/inline6.C
===================================================================
--- trunk/src/gcc/gcc/testsuite/g++.dg/opt/inline6.C	(revision 1472)
+++ trunk/src/gcc/gcc/testsuite/g++.dg/opt/inline6.C	(revision 1475)
@@ -1,5 +1,5 @@
 // PR c++/13081
 // { dg-options "-O2" }
-// { dg-final { scan-assembler-not "foo" } }
+// { dg-final { scan-assembler-not "\n_?_Z3fooIlET_S0_\[: \t\n\]" } }
 
 template<typename T> T foo(T);
Index: trunk/src/gcc/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog
===================================================================
--- trunk/src/gcc/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog	(revision 1472)
+++ trunk/src/gcc/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog	(revision 1475)
@@ -1,2 +1,6 @@
+2004-05-31  Release Manager
+
+	* GCC 3.3.4 Released.
+
 2004-02-14  Release Manager
 
Index: trunk/src/gcc/gcc/testsuite/gcc.dg/20001013-1.c
===================================================================
--- trunk/src/gcc/gcc/testsuite/gcc.dg/20001013-1.c	(revision 1472)
+++ trunk/src/gcc/gcc/testsuite/gcc.dg/20001013-1.c	(revision 1475)
@@ -1,6 +1,4 @@
-/* ??? It'd be nice to run this for sparc32 as well, if we could know
-   for sure that we're on an ultrasparc, rather than an older cpu.  */
-/* { dg-do run { target sparcv9-*-* sparc64-*-* } } */
-/* { dg-options "-O2 -m32 -mcpu=ultrasparc -mvis" } */
+/* { dg-do run { target sparc*-*-* } } */
+/* { dg-options "-O2 -mcpu=ultrasparc -mvis" } */
 
 int l;
Index: trunk/src/gcc/gcc/testsuite/gcc.dg/20001101-1.c
===================================================================
--- trunk/src/gcc/gcc/testsuite/gcc.dg/20001101-1.c	(revision 1472)
+++ trunk/src/gcc/gcc/testsuite/gcc.dg/20001101-1.c	(revision 1475)
@@ -1,6 +1,4 @@
-/* ??? It'd be nice to run this for sparc32 as well, if we could know
-   for sure that we're on an ultrasparc, rather than an older cpu.  */
-/* { dg-do run { target sparcv9-*-* sparc64-*-* } } */
-/* { dg-options "-O2 -m32 -mcpu=ultrasparc -mvis" } */
+/* { dg-do run { target sparc*-*-* } } */
+/* { dg-options "-O2 -mcpu=ultrasparc -mvis" } */
 
 int foo(double a, int b, int c, double *d, int h)
Index: trunk/src/gcc/gcc/testsuite/gcc.dg/20001102-1.c
===================================================================
--- trunk/src/gcc/gcc/testsuite/gcc.dg/20001102-1.c	(revision 1472)
+++ trunk/src/gcc/gcc/testsuite/gcc.dg/20001102-1.c	(revision 1475)
@@ -1,6 +1,4 @@
-/* ??? It'd be nice to run this for sparc32 as well, if we could know
-   for sure that we're on an ultrasparc, rather than an older cpu.  */
-/* { dg-do run { target sparcv9-*-* sparc64-*-* } } */
-/* { dg-options "-O2 -m32 -mcpu=ultrasparc -mvis" } */
+/* { dg-do run { target sparc*-*-* } } */
+/* { dg-options "-O2 -mcpu=ultrasparc -mvis" } */
 
 int foo(double a, int b, int c, double *d, int h)
Index: trunk/src/gcc/gcc/testsuite/gcc.dg/sparc-ret.c
===================================================================
--- trunk/src/gcc/gcc/testsuite/gcc.dg/sparc-ret.c	(revision 1472)
+++ trunk/src/gcc/gcc/testsuite/gcc.dg/sparc-ret.c	(revision 1475)
@@ -4,6 +4,6 @@
    below the stack.  */
 
-/* { dg-do compile { target sparc*-*-* } } */
-/* { dg-options "-mcpu=ultrasparc -O -m32" } */
+/* { dg-do compile { target sparc-*-* } } */
+/* { dg-options "-mcpu=ultrasparc -O" } */
 
 
@@ -15,5 +15,5 @@
   return h;
 }
-/* { dg-final { scan-assembler "return\[ \t\]*%i7\\+8\n\[^\n\]*ld\[ \t\]*\\\[%sp\\+96\\\]" } } */
+/* { dg-final { global compiler_flags; if ![string match "*-m64 *" $compiler_flags] { scan-assembler "return\[ \t\]*%i7\\+8\n\[^\n\]*ld\[ \t\]*\\\[%sp\\+96\\\]" } } } */
 
 int bar2 ()
@@ -24,4 +24,3 @@
   return res;
 }
-/* { dg-final { scan-assembler "return\[ \t\]*%i7\\+8\n\[^\n\]*nop" } } */
-
+/* { dg-final { global compiler_flags; if ![string match "*-m64 *" $compiler_flags] { scan-assembler "return\[ \t\]*%i7\\+8\n\[^\n\]*nop" } } } */
Index: trunk/src/gcc/gcc/testsuite/gcc.dg/ultrasp2.c
===================================================================
--- trunk/src/gcc/gcc/testsuite/gcc.dg/ultrasp2.c	(revision 1472)
+++ trunk/src/gcc/gcc/testsuite/gcc.dg/ultrasp2.c	(revision 1475)
@@ -5,8 +5,5 @@
 /* { dg-do compile } */
 /* { dg-options "" } */
-/* { dg-options "-O0 -m64" { target sparc64-*-* } } */
-/* { dg-options "-O0 -m64" { target sparcv9-*-* } } */
-/* { dg-options "" { target sparc-*-solaris2.[0-6] } } */
-/* { dg-options "" { target sparc-*-solaris2.[0-6].* } } */
+/* { dg-options "-O0" { target sparc64-*-* sparcv9-*-* } } */
 
 short foo() {
Index: trunk/src/gcc/gcc/testsuite/gcc.dg/ultrasp4.c
===================================================================
--- trunk/src/gcc/gcc/testsuite/gcc.dg/ultrasp4.c	(revision 1472)
+++ trunk/src/gcc/gcc/testsuite/gcc.dg/ultrasp4.c	(revision 1475)
@@ -2,8 +2,5 @@
 /* { dg-do compile } */
 /* { dg-options "-O2" } */
-/* { dg-options "-O2 -m64 -mcpu=ultrasparc" { target sparc64-*-* } } */
-/* { dg-options "-O2 -m64 -mcpu=ultrasparc" { target sparcv9-*-* } } */
-/* { dg-options "-O2" { target sparc-*-solaris2.[0-6] } } */
-/* { dg-options "-O2" { target sparc-*-solaris2.[0-6].* } } */
+/* { dg-options "-O2 -mcpu=ultrasparc" { target sparc64-*-* sparcv9-*-* } } */
 
 long bar (unsigned int);
Index: trunk/src/gcc/gcc/testsuite/gcc.dg/ultrasp8.c
===================================================================
--- trunk/src/gcc/gcc/testsuite/gcc.dg/ultrasp8.c	(revision 1472)
+++ trunk/src/gcc/gcc/testsuite/gcc.dg/ultrasp8.c	(revision 1475)
@@ -2,5 +2,5 @@
 /* Originator: <dat94ali@ludat.lth.se> */
 /* { dg-do compile { target sparc*-*-* } } */
-/* { dg-options "-O2 -m64 -mtune=supersparc" { target sparc64-*-* } } */
+/* { dg-options "-O2 -mtune=supersparc" { target sparc64-*-* sparcv9-*-* } } */
 
 struct _reent;
Index: trunk/src/gcc/gcc/testsuite/treelang/ChangeLog
===================================================================
--- trunk/src/gcc/gcc/testsuite/treelang/ChangeLog	(revision 1472)
+++ trunk/src/gcc/gcc/testsuite/treelang/ChangeLog	(revision 1475)
@@ -1,2 +1,6 @@
+2004-05-31  Release Manager
+
+	* GCC 3.3.4 Released.
+
 2004-02-14  Release Manager
 
Index: trunk/src/gcc/gcc/treelang/ChangeLog
===================================================================
--- trunk/src/gcc/gcc/treelang/ChangeLog	(revision 1472)
+++ trunk/src/gcc/gcc/treelang/ChangeLog	(revision 1475)
@@ -1,2 +1,6 @@
+2004-05-31  Release Manager
+
+	* GCC 3.3.4 Released.
+
 2004-02-14  Release Manager
 
Index: trunk/src/gcc/include/ChangeLog
===================================================================
--- trunk/src/gcc/include/ChangeLog	(revision 1472)
+++ trunk/src/gcc/include/ChangeLog	(revision 1475)
@@ -1,2 +1,25 @@
+2004-05-31  Release Manager
+
+	* GCC 3.3.4 Released.
+
+2004-03-02  Gabriel Dos Reis  <gdr@integrable-solutions.net>
+
+	PR bootstrap/14348
+	Backport
+	2003-10-22  Joseph S. Myers  <jsm@polyomino.org.uk>
+	* obstack.h: Merge the following change from gnulib:
+	2003-10-21  Paul Eggert  <eggert@twinsun.com>
+	* obstack.h (obstack_1grow_fast): Properly parenthesize arg.
+	(obstack_ptr_grow_fast, obstack_int_grow_fast):
+	Don't use lvalue casts, as GCC plans to remove support for them
+	in GCC 3.5.  Reported by Joseph S. Myers.  This bug
+	was also present in the non-GCC version, indicating that this
+	code had always been buggy and had never been widely used.
+	(obstack_1grow, obstack_ptr_grow, obstack_int_grow,
+	obstack_blank):
+	Use the fast variant of each macro, rather than copying the
+	definiens of the fast variant; that way, we'll be more likely to
+	catch future bugs in the fast variants.
+
 2004-02-14  Release Manager
 
Index: trunk/src/gcc/include/obstack.h
===================================================================
--- trunk/src/gcc/include/obstack.h	(revision 1472)
+++ trunk/src/gcc/include/obstack.h	(revision 1475)
@@ -347,5 +347,5 @@
 #endif
 
-#define obstack_1grow_fast(h,achar) (*((h)->next_free)++ = achar)
+#define obstack_1grow_fast(h,achar) (*((h)->next_free)++ = (achar))
 
 #define obstack_blank_fast(h,n) ((h)->next_free += (n))
@@ -416,5 +416,5 @@
    if (__o->next_free + 1 > __o->chunk_limit)				\
      _obstack_newchunk (__o, 1);					\
-   *(__o->next_free)++ = (datum);					\
+   obstack_1grow_fast (__o, datum);					\
    (void) 0; })
 
@@ -428,6 +428,5 @@
    if (__o->next_free + sizeof (void *) > __o->chunk_limit)		\
      _obstack_newchunk (__o, sizeof (void *));				\
-   *((void **)__o->next_free)++ = ((void *)datum);			\
-   (void) 0; })
+   obstack_ptr_grow_fast (__o, datum); })
 
 # define obstack_int_grow(OBSTACK,datum)				\
@@ -436,9 +435,19 @@
    if (__o->next_free + sizeof (int) > __o->chunk_limit)		\
      _obstack_newchunk (__o, sizeof (int));				\
-   *((int *)__o->next_free)++ = ((int)datum);				\
+   obstack_int_grow_fast (__o, datum); })
+
+# define obstack_ptr_grow_fast(OBSTACK,aptr)				\
+__extension__								\
+({ struct obstack *__o1 = (OBSTACK);					\
+   *(const void **) __o1->next_free = (aptr);				\
+   __o1->next_free += sizeof (const void *);				\
    (void) 0; })
 
-# define obstack_ptr_grow_fast(h,aptr) (*((void **) (h)->next_free)++ = (void *)aptr)
-# define obstack_int_grow_fast(h,aint) (*((int *) (h)->next_free)++ = (int) aint)
+# define obstack_int_grow_fast(OBSTACK,aint)				\
+__extension__								\
+({ struct obstack *__o1 = (OBSTACK);					\
+   *(int *) __o1->next_free = (aint);					\
+   __o1->next_free += sizeof (int);					\
+   (void) 0; })
 
 # define obstack_blank(OBSTACK,length)					\
@@ -448,5 +457,5 @@
    if (__o->chunk_limit - __o->next_free < __len)			\
      _obstack_newchunk (__o, __len);					\
-   __o->next_free += __len;						\
+   obstack_blank_fast (__o, __len);					\
    (void) 0; })
 
@@ -536,18 +545,21 @@
 ( (((h)->next_free + 1 > (h)->chunk_limit)				\
    ? (_obstack_newchunk ((h), 1), 0) : 0),				\
-  (*((h)->next_free)++ = (datum)))
+  obstack_1grow_fast (h, datum))
 
 # define obstack_ptr_grow(h,datum)					\
 ( (((h)->next_free + sizeof (char *) > (h)->chunk_limit)		\
    ? (_obstack_newchunk ((h), sizeof (char *)), 0) : 0),		\
-  (*((char **) (((h)->next_free+=sizeof(char *))-sizeof(char *))) = ((char *) datum)))
+  obstack_ptr_grow_fast (h, datum))
 
 # define obstack_int_grow(h,datum)					\
 ( (((h)->next_free + sizeof (int) > (h)->chunk_limit)			\
    ? (_obstack_newchunk ((h), sizeof (int)), 0) : 0),			\
-  (*((int *) (((h)->next_free+=sizeof(int))-sizeof(int))) = ((int) datum)))
-
-# define obstack_ptr_grow_fast(h,aptr) (*((char **) (h)->next_free)++ = (char *) aptr)
-# define obstack_int_grow_fast(h,aint) (*((int *) (h)->next_free)++ = (int) aint)
+  obstack_int_grow_fast (h, datum))
+
+# define obstack_ptr_grow_fast(h,aptr)					\
+  (((const void **) ((h)->next_free += sizeof (void *)))[-1] = (aptr))
+
+# define obstack_int_grow_fast(h,aint)					\
+  (((int *) ((h)->next_free += sizeof (int)))[-1] = (aptr))
 
 # define obstack_blank(h,length)					\
@@ -555,5 +567,5 @@
   (((h)->chunk_limit - (h)->next_free < (h)->temp)			\
    ? (_obstack_newchunk ((h), (h)->temp), 0) : 0),			\
-  ((h)->next_free += (h)->temp))
+  obstack_blank_fast (h, (h)->temp))
 
 # define obstack_alloc(h,length)					\
Index: trunk/src/gcc/libf2c/ChangeLog
===================================================================
--- trunk/src/gcc/libf2c/ChangeLog	(revision 1472)
+++ trunk/src/gcc/libf2c/ChangeLog	(revision 1475)
@@ -1,2 +1,6 @@
+2004-05-31  Release Manager
+
+	* GCC 3.3.4 Released.
+
 2004-02-14  Release Manager
 
Index: trunk/src/gcc/libffi/ChangeLog
===================================================================
--- trunk/src/gcc/libffi/ChangeLog	(revision 1472)
+++ trunk/src/gcc/libffi/ChangeLog	(revision 1475)
@@ -1,2 +1,6 @@
+2004-05-31  Release Manager
+
+	* GCC 3.3.4 Released.
+
 2004-02-14  Release Manager
 
Index: trunk/src/gcc/libiberty/ChangeLog
===================================================================
--- trunk/src/gcc/libiberty/ChangeLog	(revision 1472)
+++ trunk/src/gcc/libiberty/ChangeLog	(revision 1475)
@@ -1,2 +1,6 @@
+2004-05-31  Release Manager
+
+	* GCC 3.3.4 Released.
+
 2004-02-14  Release Manager
 
Index: trunk/src/gcc/libjava/ChangeLog
===================================================================
--- trunk/src/gcc/libjava/ChangeLog	(revision 1472)
+++ trunk/src/gcc/libjava/ChangeLog	(revision 1475)
@@ -1,2 +1,12 @@
+2004-05-31  Release Manager
+
+	* GCC 3.3.4 Released.
+
+2004-05-03  Michael Koch  <konqueror@gmx.de>
+
+	Fixes PR libgcj/14695:
+	* java/net/NetworkInterface.java
+	(getByName): Return null when no interface was found.
+
 2004-02-14  Release Manager
 
