rpms/gcc/devel gcc41-ppc64-ldouble-stdarg.patch, NONE, 1.1 gcc41-pr25874.patch, NONE, 1.1 gcc41-pr25989.patch, NONE, 1.1 gcc41-pr25996.patch, NONE, 1.1 gcc41-pr26171.patch, NONE, 1.1 gcc41-pr26729.patch, NONE, 1.1 gcc41-pr26865.patch, NONE, 1.1 gcc41-pr26913.patch, NONE, 1.1 gcc41-rh188944.patch, NONE, 1.1 .cvsignore, 1.144, 1.145 gcc41.spec, 1.49, 1.50 sources, 1.146, 1.147 gcc41-pr26823.patch, 1.1, NONE

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Thu Apr 20 13:50:23 UTC 2006


Author: jakub

Update of /cvs/dist/rpms/gcc/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv29609

Modified Files:
	.cvsignore gcc41.spec sources 
Added Files:
	gcc41-ppc64-ldouble-stdarg.patch gcc41-pr25874.patch 
	gcc41-pr25989.patch gcc41-pr25996.patch gcc41-pr26171.patch 
	gcc41-pr26729.patch gcc41-pr26865.patch gcc41-pr26913.patch 
	gcc41-rh188944.patch 
Removed Files:
	gcc41-pr26823.patch 
Log Message:
4.1.0-9


gcc41-ppc64-ldouble-stdarg.patch:
 0 files changed

--- NEW FILE gcc41-ppc64-ldouble-stdarg.patch ---
2006-04-20  Alan Modra  <amodra at bigpond.net.au>

	* config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Consume all
	fp regs if the last fp arg doesn't fit in regs.

	* gcc.dg/compat/scalar-by-value-5.c: New.
	* gcc.dg/compat/scalar-by-value-5_main.c: New.
	* gcc.dg/compat/scalar-by-value-5_x.c: New.
	* gcc.dg/compat/scalar-by-value-5_y.c: New.
	* gcc.dg/compat/scalar-by-value-6.c: New.
	* gcc.dg/compat/scalar-by-value-6_main.c: New.
	* gcc.dg/compat/scalar-by-value-6_x.c: New.
	* gcc.dg/compat/scalar-by-value-6_y.c: New.
	* gcc.dg/compat/scalar-by-value-x.h: New.
	* gcc.dg/compat/scalar-by-value-y.h: New.

--- gcc/config/rs6000/rs6000.c	(revision 113079)
+++ gcc/config/rs6000/rs6000.c	(working copy)
@@ -5960,7 +5973,7 @@ rs6000_gimplify_va_arg (tree valist, tre
       t = build1 (LABEL_EXPR, void_type_node, lab_false);
       append_to_statement_list (t, pre_p);
 
-      if (n_reg > 2)
+      if ((n_reg == 2 && reg != gpr) || n_reg > 2)
 	{
 	  /* Ensure that we don't find any more args in regs.
 	     Alignment has taken care of the n_reg == 2 case.  */
--- gcc/testsuite/gcc.dg/compat/scalar-by-value-5.c	(revision 0)
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-5.c	(revision 0)
@@ -0,0 +1,16 @@
+TEST_FUNCS (longlong_i, long long, int,
+	    1234LL, -987)
+TEST_FUNCS (longlong_d, long long, double,
+	    1234LL, -987.0)
+TEST_FUNCS (complexint_i, _Complex int, int,
+	    1234 + 567i, -987)
+TEST_FUNCS (complexint_d, _Complex int, double,
+	    1234 + 567i, -987.0)
+TEST_FUNCS (complexdouble_i, _Complex double, int,
+	    1234.0 + 567.0i, -987)
+TEST_FUNCS (complexdouble_d, _Complex double, double,
+	    1234.0 + 567.0i, -987.0)
+TEST_FUNCS (complexlonglong_i, _Complex long long, int,
+	    1234LL + 567LLi, -987)
+TEST_FUNCS (complexlonglong_d, _Complex long long, double,
+	    1234LL + 567LLi, -987.0)
--- gcc/testsuite/gcc.dg/compat/scalar-by-value-5_main.c	(revision 0)
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-5_main.c	(revision 0)
@@ -0,0 +1,30 @@
+/* Test that function args can be passed in various positions to both fixed
+   and variable arg functions.  */
+/* { dg-options "-O" } */
+
+extern void exit (int);
+extern void longlong_i_doit (void);
+extern void longlong_d_doit (void);
+extern void complexint_i_doit (void);
+extern void complexint_d_doit (void);
+extern void complexdouble_i_doit (void);
+extern void complexdouble_d_doit (void);
+extern void complexlonglong_i_doit (void);
+extern void complexlonglong_d_doit (void);
+
+int main (void)
+{
+  longlong_i_doit ();
+  longlong_d_doit ();
+#ifndef SKIP_COMPLEX_INT
+  complexint_i_doit ();
+  complexint_d_doit ();
+#endif
+  complexdouble_i_doit ();
+  complexdouble_d_doit ();
+#ifndef SKIP_COMPLEX_INT
+  complexlonglong_i_doit ();
+  complexlonglong_d_doit ();
+#endif
+  exit (0);
+}
--- gcc/testsuite/gcc.dg/compat/scalar-by-value-5_x.c	(revision 0)
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-5_x.c	(revision 0)
@@ -0,0 +1,2 @@
+#include "scalar-by-value-x.h"
+#include "scalar-by-value-5.c"
--- gcc/testsuite/gcc.dg/compat/scalar-by-value-5_y.c	(revision 0)
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-5_y.c	(revision 0)
@@ -0,0 +1,2 @@
+#include "scalar-by-value-y.h"
+#include "scalar-by-value-5.c"
--- gcc/testsuite/gcc.dg/compat/scalar-by-value-6.c	(revision 0)
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-6.c	(revision 0)
@@ -0,0 +1,4 @@
+TEST_FUNCS (longdouble_i, long double, int, d, -987)
+TEST_FUNCS (longdouble_d, long double, double, d, -987.0)
+TEST_FUNCS (complexlongdouble_i, _Complex long double, int, cd, -987)
+TEST_FUNCS (complexlongdouble_d, _Complex long double, double, cd, -987.0)
--- gcc/testsuite/gcc.dg/compat/scalar-by-value-6_main.c	(revision 0)
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-6_main.c	(revision 0)
@@ -0,0 +1,19 @@
+/* Test that function args can be passed in various positions to both fixed
+   and variable arg functions.  */
+/* { dg-options "-O" } */
+/* { dg-options "-O -mlong-double-128" { target powerpc*-*-* } } */
+
+extern void exit (int);
+extern void longdouble_i_doit (void);
+extern void longdouble_d_doit (void);
+extern void complexlongdouble_i_doit (void);
+extern void complexlongdouble_d_doit (void);
+
+int main (void)
+{
+  longdouble_i_doit ();
+  longdouble_d_doit ();
+  complexlongdouble_i_doit ();
+  complexlongdouble_d_doit ();
+  exit (0);
+}
--- gcc/testsuite/gcc.dg/compat/scalar-by-value-6_x.c	(revision 0)
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-6_x.c	(revision 0)
@@ -0,0 +1,6 @@
+#include "scalar-by-value-x.h"
+
+extern long double d;
+extern _Complex long double cd;
+
+#include "scalar-by-value-6.c"
--- gcc/testsuite/gcc.dg/compat/scalar-by-value-6_y.c	(revision 0)
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-6_y.c	(revision 0)
@@ -0,0 +1,7 @@
+#define USE_MEMCMP 1
+#include "scalar-by-value-y.h"
+
+long double d = 1234.0L + 0x0.abcdp-70L;
+_Complex long double cd = 234.0L + 0x0.abcp-70L + 567.0Li +0x0defp-70Li;
+
+#include "scalar-by-value-6.c"
--- gcc/testsuite/gcc.dg/compat/scalar-by-value-x.h	(revision 0)
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-x.h	(revision 0)
@@ -0,0 +1,77 @@
+#if DEBUG
+#include <stdio.h>
+#define DBG(x) fputs (x, stdout); fflush (stdout);
+#else
+#define DBG(x)
+#endif
+
+#define TEST_FUNCS(NAME, TYPE, PADT, VAL, VAL2) \
+extern void NAME##_f0 (TYPE a, PADT b);					\
+extern void NAME##_f1 (PADT z0, TYPE a, PADT b);			\
+extern void NAME##_f2 (PADT z0, PADT z1, TYPE a, PADT b);		\
+extern void NAME##_f3 (PADT z0, PADT z1, PADT z2, TYPE a, PADT b);	\
+extern void NAME##_f4 (PADT z0, PADT z1, PADT z2, PADT z3, TYPE a,	\
+		       PADT b);						\
+extern void NAME##_f5 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4,	\
+		       TYPE a, PADT b);					\
+extern void NAME##_f6 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4,	\
+		       PADT z5, TYPE a, PADT b);			\
+extern void NAME##_f7 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4,	\
+		       PADT z5, PADT z6, TYPE a, PADT b);		\
+extern void NAME##_f8 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4,	\
+		       PADT z5, PADT z6, PADT z7, TYPE a, PADT b);	\
+extern void NAME##_f9 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4,	\
+		       PADT z5, PADT z6, PADT z7, PADT z8, TYPE a,	\
+		       PADT b);						\
+extern void NAME##_fv (int n, ...);					\
+									\
+void NAME##_doit (void)							\
+{									\
+  NAME##_f0 (VAL, VAL2);						\
+  DBG (".");								\
+  NAME##_f1 ((PADT) 0, VAL, VAL2);					\
+  DBG (".");								\
+  NAME##_f2 ((PADT) 0, (PADT) 0, VAL, VAL2);				\
+  DBG (".");								\
+  NAME##_f3 ((PADT) 0, (PADT) 0, (PADT) 0, VAL, VAL2);			\
+  DBG (".");								\
+  NAME##_f4 ((PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0, VAL, VAL2);	\
+  DBG (".");								\
+  NAME##_f5 ((PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0,		\
+	     VAL, VAL2);						\
+  DBG (".");								\
+  NAME##_f6 ((PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0,		\
+	     (PADT) 0, VAL, VAL2);					\
+  DBG (".");								\
+  NAME##_f7 ((PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0,		\
+	     (PADT) 0, (PADT) 0, VAL, VAL2);				\
+  DBG (".");								\
+  NAME##_f8 ((PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0,		\
+	     (PADT) 0, (PADT) 0, (PADT) 0, VAL, VAL2);			\
+  DBG (".");								\
+  NAME##_f9 ((PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0,		\
+	     (PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0, VAL, VAL2);	\
+  DBG (".");								\
+  NAME##_fv (0, VAL, VAL2);						\
+  DBG (".");								\
+  NAME##_fv (1, (PADT) 0, VAL, VAL2);					\
+  DBG (".");								\
+  NAME##_fv (2, (PADT) 0, (PADT) 0, VAL, VAL2);				\
+  DBG (".");								\
+  NAME##_fv (3, (PADT) 0, (PADT) 0, (PADT) 0, VAL, VAL2);		\
+  DBG (".");								\
+  NAME##_fv (4, (PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0, VAL, VAL2);	\
+  DBG (".");								\
+  NAME##_fv (5, (PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0,	\
+	     VAL, VAL2);						\
+  DBG (".");								\
+  NAME##_fv (6, (PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0,	\
+	     (PADT) 0, VAL, VAL2);					\
+  DBG (".");								\
+  NAME##_fv (7, (PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0,	\
+	     (PADT) 0, (PADT) 0, VAL, VAL2);				\
+  DBG (".");								\
+  NAME##_fv (8, (PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0, (PADT) 0,	\
+	     (PADT) 0, (PADT) 0, (PADT) 0, VAL, VAL2);			\
+  DBG ("\n");								\
+}
--- gcc/testsuite/gcc.dg/compat/scalar-by-value-y.h	(revision 0)
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-y.h	(revision 0)
@@ -0,0 +1,267 @@
+extern void abort (void);
+
+#if USE_MEMCMP
+#define TEST_FUNCS(NAME, TYPE, PADT, VAL, VAL2) \
+void NAME##_f0 (TYPE a, PADT b)						\
+{									\
+  if (memcmp (&a, &VAL, sizeof (a)) != 0 || b != VAL2)			\
+    abort ();								\
+}									\
+									\
+void NAME##_f1 (PADT z0, TYPE a, PADT b)				\
+{									\
+  if (z0 != (PADT) 0							\
+      || memcmp (&a, &VAL, sizeof (a)) != 0 || b != VAL2)		\
+    abort ();								\
+}									\
+									\
+void NAME##_f2 (PADT z0, PADT z1, TYPE a, PADT b)			\
+{									\
+  if (z0 != (PADT) 0							\
+      || z1 != (PADT) 0							\
+      || memcmp (&a, &VAL, sizeof (a)) != 0 || b != VAL2)		\
+    abort ();								\
+}									\
+									\
+void NAME##_f3 (PADT z0, PADT z1, PADT z2, TYPE a, PADT b)		\
+{									\
+  if (z0 != (PADT) 0							\
+      || z1 != (PADT) 0							\
+      || z2 != (PADT) 0							\
+      || memcmp (&a, &VAL, sizeof (a)) != 0 || b != VAL2)		\
+    abort ();								\
+}									\
+									\
+void NAME##_f4 (PADT z0, PADT z1, PADT z2, PADT z3, TYPE a, PADT b)	\
+{									\
+  if (z0 != (PADT) 0							\
+      || z1 != (PADT) 0							\
+      || z2 != (PADT) 0							\
+      || z3 != (PADT) 0							\
+      || memcmp (&a, &VAL, sizeof (a)) != 0 || b != VAL2)		\
+    abort ();								\
+}									\
+									\
+void NAME##_f5 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4, TYPE a,	\
+		PADT b)							\
+{									\
+  if (z0 != (PADT) 0							\
+      || z1 != (PADT) 0							\
+      || z2 != (PADT) 0							\
+      || z3 != (PADT) 0							\
+      || z4 != (PADT) 0							\
+      || memcmp (&a, &VAL, sizeof (a)) != 0 || b != VAL2)		\
+    abort ();								\
+}									\
+									\
+void NAME##_f6 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4, PADT z5,	\
+		TYPE a, PADT b)						\
+{									\
+  if (z0 != (PADT) 0							\
+      || z1 != (PADT) 0							\
+      || z2 != (PADT) 0							\
+      || z3 != (PADT) 0							\
+      || z4 != (PADT) 0							\
+      || z5 != (PADT) 0							\
+      || memcmp (&a, &VAL, sizeof (a)) != 0 || b != VAL2)		\
+    abort ();								\
+}									\
+									\
+void NAME##_f7 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4, PADT z5,	\
+		PADT z6, TYPE a, PADT b)				\
+{									\
+  if (z0 != (PADT) 0							\
+      || z1 != (PADT) 0							\
+      || z2 != (PADT) 0							\
+      || z3 != (PADT) 0							\
+      || z4 != (PADT) 0							\
+      || z5 != (PADT) 0							\
+      || z6 != (PADT) 0							\
+      || memcmp (&a, &VAL, sizeof (a)) != 0 || b != VAL2)		\
+    abort ();								\
+}									\
+									\
+void NAME##_f8 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4, PADT z5,	\
+		PADT z6, PADT z7, TYPE a, PADT b)			\
+{									\
+  if (z0 != (PADT) 0							\
+      || z1 != (PADT) 0							\
+      || z2 != (PADT) 0							\
+      || z3 != (PADT) 0							\
+      || z4 != (PADT) 0							\
+      || z5 != (PADT) 0							\
+      || z6 != (PADT) 0							\
+      || z7 != (PADT) 0							\
+      || memcmp (&a, &VAL, sizeof (a)) != 0 || b != VAL2)		\
+    abort ();								\
+}									\
+									\
+void NAME##_f9 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4, PADT z5,	\
+		PADT z6, PADT z7, PADT z8, TYPE a, PADT b)		\
+{									\
+  if (z0 != (PADT) 0							\
+      || z1 != (PADT) 0							\
+      || z2 != (PADT) 0							\
+      || z3 != (PADT) 0							\
+      || z4 != (PADT) 0							\
+      || z5 != (PADT) 0							\
+      || z6 != (PADT) 0							\
+      || z7 != (PADT) 0							\
+      || z8 != (PADT) 0							\
+      || memcmp (&a, &VAL, sizeof (a)) != 0 || b != VAL2)		\
+    abort ();								\
+}									\
+									\
+void NAME##_fv (int n, ...)						\
+{									\
+  __builtin_va_list ap;							\
+  TYPE x;								\
+  __builtin_va_start (ap, n);						\
+									\
+  while (n-- != 0)							\
+    if (__builtin_va_arg (ap, PADT) != (PADT) 0)			\
+      abort ();								\
+									\
+  x = __builtin_va_arg (ap, TYPE);					\
+  if (memcmp (&x, &VAL, sizeof (x)) != 0 )				\
+    abort ();								\
+									\
+  if (__builtin_va_arg (ap, PADT) != VAL2)				\
+    abort ();								\
+									\
+  __builtin_va_end (ap);						\
+}
+
+#else
+
+#define TEST_FUNCS(NAME, TYPE, PADT, VAL, VAL2) \
+void NAME##_f0 (TYPE a, PADT b)						\
+{									\
+  if (a != VAL || b != VAL2)						\
+    abort ();								\
+}									\
+									\
+void NAME##_f1 (PADT z0, TYPE a, PADT b)				\
+{									\
+  if (z0 != (PADT) 0							\
+      || a != VAL || b != VAL2)						\
+    abort ();								\
+}									\
+									\
+void NAME##_f2 (PADT z0, PADT z1, TYPE a, PADT b)			\
+{									\
+  if (z0 != (PADT) 0							\
+      || z1 != (PADT) 0							\
+      || a != VAL || b != VAL2)						\
+    abort ();								\
+}									\
+									\
+void NAME##_f3 (PADT z0, PADT z1, PADT z2, TYPE a, PADT b)		\
+{									\
+  if (z0 != (PADT) 0							\
+      || z1 != (PADT) 0							\
+      || z2 != (PADT) 0							\
+      || a != VAL || b != VAL2)						\
+    abort ();								\
+}									\
+									\
+void NAME##_f4 (PADT z0, PADT z1, PADT z2, PADT z3, TYPE a, PADT b)	\
+{									\
+  if (z0 != (PADT) 0							\
+      || z1 != (PADT) 0							\
+      || z2 != (PADT) 0							\
+      || z3 != (PADT) 0							\
+      || a != VAL || b != VAL2)						\
+    abort ();								\
+}									\
+									\
+void NAME##_f5 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4, TYPE a,	\
+		PADT b)							\
+{									\
+  if (z0 != (PADT) 0							\
+      || z1 != (PADT) 0							\
+      || z2 != (PADT) 0							\
+      || z3 != (PADT) 0							\
+      || z4 != (PADT) 0							\
+      || a != VAL || b != VAL2)						\
+    abort ();								\
+}									\
+									\
+void NAME##_f6 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4, PADT z5,	\
+		TYPE a, PADT b)						\
+{									\
+  if (z0 != (PADT) 0							\
+      || z1 != (PADT) 0							\
+      || z2 != (PADT) 0							\
+      || z3 != (PADT) 0							\
+      || z4 != (PADT) 0							\
+      || z5 != (PADT) 0							\
+      || a != VAL || b != VAL2)						\
+    abort ();								\
+}									\
+									\
+void NAME##_f7 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4, PADT z5,	\
+		PADT z6, TYPE a, PADT b)				\
+{									\
+  if (z0 != (PADT) 0							\
+      || z1 != (PADT) 0							\
+      || z2 != (PADT) 0							\
+      || z3 != (PADT) 0							\
+      || z4 != (PADT) 0							\
+      || z5 != (PADT) 0							\
+      || z6 != (PADT) 0							\
+      || a != VAL || b != VAL2)						\
+    abort ();								\
+}									\
+									\
+void NAME##_f8 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4, PADT z5,	\
+		PADT z6, PADT z7, TYPE a, PADT b)			\
+{									\
+  if (z0 != (PADT) 0							\
+      || z1 != (PADT) 0							\
+      || z2 != (PADT) 0							\
+      || z3 != (PADT) 0							\
+      || z4 != (PADT) 0							\
+      || z5 != (PADT) 0							\
+      || z6 != (PADT) 0							\
+      || z7 != (PADT) 0							\
+      || a != VAL || b != VAL2)						\
+    abort ();								\
+}									\
+									\
+void NAME##_f9 (PADT z0, PADT z1, PADT z2, PADT z3, PADT z4, PADT z5,	\
+		PADT z6, PADT z7, PADT z8, TYPE a, PADT b)		\
+{									\
+  if (z0 != (PADT) 0							\
+      || z1 != (PADT) 0							\
+      || z2 != (PADT) 0							\
+      || z3 != (PADT) 0							\
+      || z4 != (PADT) 0							\
+      || z5 != (PADT) 0							\
+      || z6 != (PADT) 0							\
+      || z7 != (PADT) 0							\
+      || z8 != (PADT) 0							\
+      || a != VAL || b != VAL2)						\
+    abort ();								\
+}									\
+									\
+void NAME##_fv (int n, ...)						\
+{									\
+  __builtin_va_list ap;							\
+									\
+  __builtin_va_start (ap, n);						\
+									\
+  while (n-- != 0)							\
+    if (__builtin_va_arg (ap, PADT) != (PADT) 0)			\
+      abort ();								\
+									\
+  if (__builtin_va_arg (ap, TYPE) != VAL)				\
+    abort ();								\
+									\
+  if (__builtin_va_arg (ap, PADT) != VAL2)				\
+    abort ();								\
+									\
+  __builtin_va_end (ap);						\
+}
+
+#endif

gcc41-pr25874.patch:
 omp-low.c                       |   10 ++++++++++
 testsuite/g++.dg/gomp/pr25874.C |    2 ++
 testsuite/gcc.dg/gomp/pr25874.c |    2 ++
 3 files changed, 14 insertions(+)

--- NEW FILE gcc41-pr25874.patch ---
2006-04-18  Jakub Jelinek  <jakub at redhat.com>

	PR c++/25874
	* omp-low.c (expand_omp_parallel): If child_cfun->cfg, free dominators,
	post dominators and cleanup cfg before returning.

	* gcc.dg/gomp/pr25874.c: Add dg-options.
	* g++.dg/gomp/pr25874.C: Add dg-options.

--- gcc/omp-low.c.jj	2006-04-18 13:31:18.000000000 +0200
+++ gcc/omp-low.c	2006-04-18 13:57:03.000000000 +0200
@@ -2278,6 +2278,7 @@ expand_omp_parallel (struct omp_region *
   block_stmt_iterator si;
   tree entry_stmt;
   edge e;
+  bool do_cleanup_cfg = false;
 
   entry_stmt = last_stmt (region->entry);
   child_fn = OMP_PARALLEL_FN (entry_stmt);
@@ -2310,6 +2311,7 @@ expand_omp_parallel (struct omp_region *
       new_bb = entry_bb;
       remove_edge (entry_succ_e);
       make_edge (new_bb, exit_succ_e->dest, EDGE_FALLTHRU);
+      do_cleanup_cfg = true;
     }
   else
     {
@@ -2385,6 +2387,14 @@ expand_omp_parallel (struct omp_region *
 
   /* Emit a library call to launch the children threads.  */
   expand_parallel_call (region, new_bb, entry_stmt, ws_args);
+
+  if (do_cleanup_cfg)
+    {
+      /* Clean up the unreachable sub-graph we created above.  */
+      free_dominance_info (CDI_DOMINATORS);
+      free_dominance_info (CDI_POST_DOMINATORS);
+      cleanup_tree_cfg ();
+    }
 }
 
 
--- gcc/testsuite/gcc.dg/gomp/pr25874.c.jj	2006-01-30 09:01:58.000000000 +0100
+++ gcc/testsuite/gcc.dg/gomp/pr25874.c	2006-04-18 13:28:44.000000000 +0200
@@ -1,3 +1,5 @@
+/* { dg-options "-O -fopenmp" } */
+
 void foo();
 
 inline void bar()
--- gcc/testsuite/g++.dg/gomp/pr25874.C.jj	2006-03-12 09:51:23.000000000 +0100
+++ gcc/testsuite/g++.dg/gomp/pr25874.C	2006-04-18 13:29:11.000000000 +0200
@@ -1,3 +1,5 @@
+// { dg-options "-O -fopenmp" }
+
 int foo();
 
 struct wigner_d

gcc41-pr25989.patch:
 omp-low.c   |   10 +++-------
 tree-flow.h |    3 +++
 2 files changed, 6 insertions(+), 7 deletions(-)

--- NEW FILE gcc41-pr25989.patch ---
2006-04-18  Jakub Jelinek  <jakub at redhat.com>

	PR middle-end/25989
	* tree-flow.h (struct omp_region): Add sched_kind.
	* omp-low.c (expand_parallel_call): Use region->inner->sched_kind
	instead of extracting omp for data.
	(expand_omp_for): Save extracted sched_kind.

--- gcc/tree-flow.h.jj	2006-04-15 00:14:39.000000000 +0200
+++ gcc/tree-flow.h	2006-04-15 00:14:39.000000000 +0200
@@ -505,6 +505,9 @@ struct omp_region
   /* The code for the omp directive of this region.  */
   enum tree_code type;
 
+  /* Schedule kind, only used for OMP_FOR type regions.  */
+  enum omp_clause_schedule_kind sched_kind;
+
   /* True if this is a combined parallel+workshare region.  */
   bool is_combined_parallel;
 };
--- gcc/omp-low.c.jj	2006-04-14 10:23:07.000000000 +0200
+++ gcc/omp-low.c	2006-04-18 12:26:23.000000000 +0200
@@ -2032,13 +2032,8 @@ expand_parallel_call (struct omp_region 
       switch (region->inner->type)
 	{
 	case OMP_FOR:
-	  {
-	    tree stmt = last_stmt (region->inner->entry);
-	    struct omp_for_data fd;
-	    extract_omp_for_data (stmt, &fd);
-	    start_ix = BUILT_IN_GOMP_PARALLEL_LOOP_STATIC_START
-	      + fd.sched_kind;
-	  }
+	  start_ix = BUILT_IN_GOMP_PARALLEL_LOOP_STATIC_START
+		     + region->inner->sched_kind;
 	  break;
 	case OMP_SECTIONS:
 	  start_ix = BUILT_IN_GOMP_PARALLEL_SECTIONS_START;
@@ -2944,6 +2939,7 @@ expand_omp_for (struct omp_region *regio
   push_gimplify_context ();
 
   extract_omp_for_data (last_stmt (region->entry), &fd);
+  region->sched_kind = fd.sched_kind;
 
   if (fd.sched_kind == OMP_CLAUSE_SCHEDULE_STATIC && !fd.have_ordered)
     {

gcc41-pr25996.patch:
 c-parser.c                      |    2 +-
 testsuite/g++.dg/gomp/pr25996.C |   32 ++++++++++++++++++++++++++++++++
 testsuite/gcc.dg/gomp/pr25996.c |   32 ++++++++++++++++++++++++++++++++
 3 files changed, 65 insertions(+), 1 deletion(-)

--- NEW FILE gcc41-pr25996.patch ---
2006-04-19  Jakub Jelinek  <jakub at redhat.com>

	PR c/25996
	* c-parser.c (c_parser_omp_for_loop): Don't call c_finish_omp_for if
	either decl or init is error_mark_node.

	* gcc.dg/gomp/pr25996.c: New test.
	* g++.dg/gomp/pr25996.C: New test.

--- gcc/c-parser.c.jj	2006-04-11 09:09:50.000000000 +0200
+++ gcc/c-parser.c	2006-04-19 11:44:30.000000000 +0200
@@ -7379,7 +7379,7 @@ c_parser_omp_for_loop (c_parser *parser)
 
   /* Only bother calling c_finish_omp_for if we havn't already generated
      an error from the initialization parsing.  */
-  if (decl != NULL)
+  if (decl != NULL && decl != error_mark_node && init != error_mark_node)
     return c_finish_omp_for (loc, decl, init, cond, incr, body, NULL);
   return NULL;
 
--- gcc/testsuite/gcc.dg/gomp/pr25996.c.jj	2006-04-19 11:46:59.000000000 +0200
+++ gcc/testsuite/gcc.dg/gomp/pr25996.c	2006-04-19 11:49:26.000000000 +0200
@@ -0,0 +1,32 @@
+/* PR c/25996 */
+
+void
+test1 (void)
+{
+#pragma omp for
+  for (i = 0; i < 1; ++i); /* { dg-error "undeclared|for each function" } */
+}
+
+void
+test2 (void)
+{
+  int i;
+#pragma omp for
+  for (i = j; i < 1; ++i); /* { dg-error "undeclared" } */
+}
+
+void
+test3 (void)
+{
+  int i;
+#pragma omp for
+  for (i = 0; i < j; ++i); /* { dg-error "undeclared|invalid controlling predicate" } */
+}
+
+void
+test4 (void)
+{
+  int i;
+#pragma omp for
+  for (i = 0; i < 10; i += j); /* { dg-error "undeclared|invalid increment expression" } */
+}
--- gcc/testsuite/g++.dg/gomp/pr25996.C.jj	2006-04-19 11:50:51.000000000 +0200
+++ gcc/testsuite/g++.dg/gomp/pr25996.C	2006-04-19 11:53:41.000000000 +0200
@@ -0,0 +1,32 @@
+// PR c/25996
+
+void
+test1 (void)
+{
+#pragma omp for
+  for (i = 0; i < 1; ++i); // { dg-error "not declared|expected iteration decl" }
+}
+
+void
+test2 (void)
+{
+  int i;
+#pragma omp for
+  for (i = j; i < 1; ++i); // { dg-error "not declared|expected iteration decl" }
+}
+
+void
+test3 (void)
+{
+  int i;
+#pragma omp for
+  for (i = 0; i < j; ++i); // { dg-error "not declared|invalid controlling predicate" }
+}
+
+void
+test4 (void)
+{
+  int i;
+#pragma omp for
+  for (i = 0; i < 10; i += j); // { dg-error "not declared|invalid increment expression" }
+}

gcc41-pr26171.patch:
 gcc/cgraph.c                          |    4 ++--
 libgomp/testsuite/libgomp.c/pr26171.c |   14 ++++++++++++++
 2 files changed, 16 insertions(+), 2 deletions(-)

--- NEW FILE gcc41-pr26171.patch ---
2006-04-18  Jakub Jelinek  <jakub at redhat.com>

	PR c/26171
	* cgraph.c (cgraph_varpool_finalize_decl): Don't call
	cgraph_varpool_assemble_pending_decls if -fopenmp, unless
	cgraph_global_info_ready.

--- gcc/cgraph.c.jj	2006-03-12 09:51:31.000000000 +0100
+++ gcc/cgraph.c	2006-04-18 16:15:52.000000000 +0200
@@ -886,7 +886,7 @@ cgraph_varpool_finalize_decl (tree decl)
      if this function has already run.  */
   if (node->finalized)
     {
-      if (cgraph_global_info_ready || !flag_unit_at_a_time)
+      if (cgraph_global_info_ready || (!flag_unit_at_a_time && !flag_openmp))
 	cgraph_varpool_assemble_pending_decls ();
       return;
     }
@@ -901,7 +901,7 @@ cgraph_varpool_finalize_decl (tree decl)
      there.  */
   else if (TREE_PUBLIC (decl) && !DECL_COMDAT (decl) && !DECL_EXTERNAL (decl))
     cgraph_varpool_mark_needed_node (node);
-  if (cgraph_global_info_ready || !flag_unit_at_a_time)
+  if (cgraph_global_info_ready || (!flag_unit_at_a_time && !flag_openmp))
     cgraph_varpool_assemble_pending_decls ();
 }
 
--- libgomp/testsuite/libgomp.c/pr26171.c.jj	2006-04-18 23:03:39.000000000 +0200
+++ libgomp/testsuite/libgomp.c/pr26171.c	2006-04-18 23:06:41.000000000 +0200
@@ -0,0 +1,14 @@
+/* PR c/26171 */
+/* { dg-do run } */
+/* { dg-options "-fopenmp" } */
+/* { dg-require-effective-target tls_runtime } */
+
+int thrv = 0;
+#pragma omp threadprivate (thrv)
+
+int
+main ()
+{
+  thrv = 1;
+  return 0;
+}

gcc41-pr26729.patch:
 convert.c                                    |   28 +++++++++++++++++++++++----
 testsuite/gcc.c-torture/execute/20060419-1.c |   17 ++++++++++++++++
 2 files changed, 41 insertions(+), 4 deletions(-)

--- NEW FILE gcc41-pr26729.patch ---
2006-04-19  Jakub Jelinek  <jakub at redhat.com>

	PR middle-end/26729
	* convert.c (convert_to_integer): Ignore integer overflows when
	truncating.

	* gcc.c-torture/execute/20060419-1.c: New test.

--- gcc/convert.c.jj	2006-04-19 16:23:13.000000000 +0200
+++ gcc/convert.c	2006-04-19 17:11:43.000000000 +0200
@@ -616,6 +616,7 @@ convert_to_integer (tree type, tree expr
 		   (Otherwise would recurse infinitely in convert.  */
 		if (TYPE_PRECISION (typex) != inprec)
 		  {
+		    tree carg0, carg1;
 		    /* Don't do unsigned arithmetic where signed was wanted,
 		       or vice versa.
 		       Exception: if both of the original operands were
@@ -648,10 +649,29 @@ convert_to_integer (tree type, tree expr
 		      typex = lang_hooks.types.unsigned_type (typex);
 		    else
 		      typex = lang_hooks.types.signed_type (typex);
-		    return convert (type,
-				    fold_build2 (ex_form, typex,
-						 convert (typex, arg0),
-						 convert (typex, arg1)));
+		    carg0 = convert (typex, arg0);
+		    carg1 = convert (typex, arg1);
+		    /* Ignore integer overflows caused by the downcasts.  */
+		    if (TREE_CODE (carg0) == INTEGER_CST
+			&& (TREE_OVERFLOW (carg0)
+			    || TREE_CONSTANT_OVERFLOW (carg0))
+			&& (!CONSTANT_CLASS_P (arg0)
+			    || (!TREE_OVERFLOW (arg0)
+				&& !TREE_CONSTANT_OVERFLOW (arg0))))
+		      carg0 = build_int_cst_wide (typex,
+						  TREE_INT_CST_LOW (carg0),
+						  TREE_INT_CST_HIGH (carg0));
+		    if (TREE_CODE (carg1) == INTEGER_CST
+			&& (TREE_OVERFLOW (carg1)
+			    || TREE_CONSTANT_OVERFLOW (carg1))
+			&& (!CONSTANT_CLASS_P (arg1)
+			    || (!TREE_OVERFLOW (arg1)
+				&& !TREE_CONSTANT_OVERFLOW (arg1))))
+		      carg1 = build_int_cst_wide (typex,
+						  TREE_INT_CST_LOW (carg1),
+						  TREE_INT_CST_HIGH (carg1));
+		    return convert (type, fold_build2 (ex_form, typex,
+						       carg0, carg1));
 		  }
 	      }
 	  }
--- gcc/testsuite/gcc.c-torture/execute/20060419-1.c.jj	2006-04-19 17:15:12.000000000 +0200
+++ gcc/testsuite/gcc.c-torture/execute/20060419-1.c	2006-04-19 17:16:13.000000000 +0200
@@ -0,0 +1,17 @@
+/* PR middle-end/26729 */
+
+void abort (void);
+
+int
+foo (unsigned short x)
+{
+  return (x & 0x1) && (((unsigned short) (x & 0x8000)) == 0x8000);
+}
+
+int
+main (void)
+{
+  if (! foo (0x8001))
+    abort ();
+  return 0;
+}

gcc41-pr26865.patch:
 testsuite/gcc.dg/pr26865.c |    8 ++++++++
 tree-ssa-structalias.c     |    3 +++
 2 files changed, 11 insertions(+)

--- NEW FILE gcc41-pr26865.patch ---
2006-04-20  Jakub Jelinek  <jakub at redhat.com>

	PR tree-optimization/26865
	* tree-ssa-structalias.c (find_func_aliases): Check that anyoffsetrhs
	type is pointer or array type.

	* gcc.dg/pr26865.c: New test.

--- gcc/tree-ssa-structalias.c.jj	2006-03-27 14:33:14.000000000 +0200
+++ gcc/tree-ssa-structalias.c	2006-04-19 18:09:10.000000000 +0200
@@ -2950,6 +2950,9 @@ find_func_aliases (tree t, struct alias_
 			   of the RHS.  */
 			if (need_anyoffset || (rhs.type == ADDRESSOF
 			    && !(get_varinfo (rhs.var)->is_special_var)
+			    && (POINTER_TYPE_P (TREE_TYPE (anyoffsetrhs))
+				|| TREE_CODE (TREE_TYPE (anyoffsetrhs))
+				   == ARRAY_TYPE)
 			    && AGGREGATE_TYPE_P (TREE_TYPE (TREE_TYPE (anyoffsetrhs)))))
 			  {
 			    rhs.var = anyoffset_id;
--- gcc/testsuite/gcc.dg/pr26865.c.jj	2006-04-19 18:11:07.000000000 +0200
+++ gcc/testsuite/gcc.dg/pr26865.c	2006-04-19 18:12:47.000000000 +0200
@@ -0,0 +1,8 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -std=c99" } */
+
+void
+foo (void)
+{
+  char *e = alloca (100); /* { dg-warning "implicit declaration|initialization makes" } */
+}

gcc41-pr26913.patch:
 testsuite/g++.dg/gomp/pr26913.C |   19 +++++++++++++++++++
 tree-cfg.c                      |    5 ++++-
 2 files changed, 23 insertions(+), 1 deletion(-)

--- NEW FILE gcc41-pr26913.patch ---
2006-04-18  Jakub Jelinek  <jakub at redhat.com>

	PR middle-end/26913
	* tree-cfg.c (find_outermost_region_in_block): Handle RESX_EXPR.

	* g++.dg/gomp/pr26913.C: New test.

--- gcc/tree-cfg.c.jj	2006-04-15 08:53:08.000000000 +0200
+++ gcc/tree-cfg.c	2006-04-18 15:33:42.000000000 +0200
@@ -4744,7 +4744,10 @@ find_outermost_region_in_block (struct f
       tree stmt = bsi_stmt (si);
       int stmt_region;
 
-      stmt_region = lookup_stmt_eh_region_fn (src_cfun, stmt);
+      if (TREE_CODE (stmt) == RESX_EXPR)
+	stmt_region = TREE_INT_CST_LOW (TREE_OPERAND (stmt, 0));
+      else
+	stmt_region = lookup_stmt_eh_region_fn (src_cfun, stmt);
       if (stmt_region > 0)
 	{
 	  if (region < 0)
--- gcc/testsuite/g++.dg/gomp/pr26913.C.jj	2006-04-18 15:35:58.000000000 +0200
+++ gcc/testsuite/g++.dg/gomp/pr26913.C	2006-04-18 15:36:38.000000000 +0200
@@ -0,0 +1,19 @@
+// PR middle-end/26913
+
+struct A
+{
+  ~A () throw ();
+};
+
+void foo (A);
+
+A bar () throw ();
+
+void baz ()
+{
+#pragma omp parallel
+  {
+    A a;
+    foo (bar ());
+  }
+}

gcc41-rh188944.patch:
 c-pretty-print.c              |   11 ++++++++++-
 testsuite/gcc.dg/20060419-1.c |    4 ++++
 2 files changed, 14 insertions(+), 1 deletion(-)

--- NEW FILE gcc41-rh188944.patch ---
2006-04-19  Jakub Jelinek  <jakub at redhat.com>

	* c-pretty-print.c (pp_c_direct_abstract_declarator): Print
	TYPE_MAX_VALUE (TYPE_DOMAIN (t)) + 1 for ARRAY_TYPE rather
	than plain TYPE_MAX_VALUE (TYPE_DOMAIN (t)).

--- gcc/c-pretty-print.c.jj	2006-02-16 08:22:59.000000000 +0100
+++ gcc/c-pretty-print.c	2006-04-19 19:01:06.000000000 +0200
@@ -521,7 +521,16 @@ pp_c_direct_abstract_declarator (c_prett
     case ARRAY_TYPE:
       pp_c_left_bracket (pp);
       if (TYPE_DOMAIN (t) && TYPE_MAX_VALUE (TYPE_DOMAIN (t)))
-        pp_expression (pp, TYPE_MAX_VALUE (TYPE_DOMAIN (t)));
+	{
+	  tree maxval = TYPE_MAX_VALUE (TYPE_DOMAIN (t));
+	  tree type = TREE_TYPE (maxval);
+
+	  if (host_integerp (maxval, 0))
+	    pp_wide_integer (pp, tree_low_cst (maxval, 0) + 1);
+	  else
+	    pp_expression (pp, fold_build2 (PLUS_EXPR, type, maxval,
+					    build_int_cst (type, 1)));
+	}
       pp_c_right_bracket (pp);
       pp_direct_abstract_declarator (pp, TREE_TYPE (t));
       break;
--- gcc/testsuite/gcc.dg/20060419-1.c.jj	2006-04-19 19:04:58.000000000 +0200
+++ gcc/testsuite/gcc.dg/20060419-1.c	2006-04-19 19:05:50.000000000 +0200
@@ -0,0 +1,4 @@
+struct T {
+  unsigned char f[1] __attribute__((packed)); /* { dg-warning "ignored for field of type.*unsigned char\\\[1\\\]" } */
+  unsigned char g[14] __attribute__((packed)); /* { dg-warning "ignored for field of type.*unsigned char\\\[14\\\]" } */
+};


Index: .cvsignore
===================================================================
RCS file: /cvs/dist/rpms/gcc/devel/.cvsignore,v
retrieving revision 1.144
retrieving revision 1.145
diff -u -r1.144 -r1.145
--- .cvsignore	14 Apr 2006 09:40:18 -0000	1.144
+++ .cvsignore	20 Apr 2006 13:50:21 -0000	1.145
@@ -1 +1 @@
-gcc-4.1.0-20060414.tar.bz2
+gcc-4.1.0-20060420.tar.bz2


Index: gcc41.spec
===================================================================
RCS file: /cvs/dist/rpms/gcc/devel/gcc41.spec,v
retrieving revision 1.49
retrieving revision 1.50
diff -u -r1.49 -r1.50
--- gcc41.spec	14 Apr 2006 09:40:18 -0000	1.49
+++ gcc41.spec	20 Apr 2006 13:50:21 -0000	1.50
@@ -1,6 +1,6 @@
-%define DATE 20060414
+%define DATE 20060420
 %define gcc_version 4.1.0
-%define gcc_release 8
+%define gcc_release 9
 %define _unpackaged_files_terminate_build 0
 %define multilib_64_archs sparc64 ppc64 s390x x86_64
 %ifarch %{ix86} x86_64 ia64
@@ -113,10 +113,18 @@
 Patch16: gcc41-pr20297-test.patch
 Patch17: gcc41-java-pr13212.patch
 Patch18: gcc41-objc-rh185398.patch
-Patch19: gcc41-pr26823.patch
-Patch20: gcc41-pr22375.patch
-Patch21: gcc41-pr24685.patch
-Patch22: gcc41-rh188649-test.patch
+Patch19: gcc41-pr22375.patch
+Patch20: gcc41-pr24685.patch
+Patch21: gcc41-rh188649-test.patch
+Patch22: gcc41-ppc64-ldouble-stdarg.patch
+Patch23: gcc41-pr25874.patch
+Patch24: gcc41-pr25989.patch
+Patch25: gcc41-pr25996.patch
+Patch26: gcc41-pr26171.patch
+Patch27: gcc41-pr26729.patch
+Patch28: gcc41-pr26865.patch
+Patch29: gcc41-pr26913.patch
+Patch30: gcc41-rh188944.patch
 
 %define _gnu %{nil}
 %ifarch sparc
@@ -414,10 +422,18 @@
 %patch16 -p0 -E -b .pr20297-test~
 %patch17 -p0 -b .java-pr13212~
 %patch18 -p0 -b .objc-rh185398~
-%patch19 -p0 -b .pr26823~
-%patch20 -p0 -b .pr22375~
-%patch21 -p0 -b .pr24685~
-%patch22 -p0 -b .rh188649-test~
+%patch19 -p0 -b .pr22375~
+%patch20 -p0 -b .pr24685~
+%patch21 -p0 -b .rh188649-test~
+%patch22 -p0 -b .ppc64-ldouble-stdarg~
+%patch23 -p0 -b .pr25874~
+%patch24 -p0 -b .pr25989~
+%patch25 -p0 -b .pr25996~
+%patch26 -p0 -b .pr26171~
+%patch27 -p0 -b .pr26729~
+%patch28 -p0 -b .pr26865~
+%patch29 -p0 -b .pr26913~
+%patch30 -p0 -b .rh188944~
 
 sed -i -e 's/4\.1\.1/4.1.0/' gcc/BASE-VER gcc/version.c
 sed -i -e 's/" (Red Hat[^)]*)"/" (Red Hat %{version}-%{gcc_release})"/' gcc/version.c
@@ -1435,6 +1451,20 @@
 %doc rpm.doc/changelogs/libmudflap/ChangeLog*
 
 %changelog
+* Thu Apr 20 2006 Jakub Jelinek <jakub at redhat.com> 4.1.0-9
+- update from gcc-4_1-branch (-r)
+  - PRs c++/10385, c++/26036, c++/26365, c++/26558, classpath/27163,
+	fortran/26769, libgcj/27171, libgfortran/26766, libstdc++/27162,
+	middle-end/27095, middle-end/27134, target/27182,
+	tree-optimization/26643, tree-optimization/26821,
+	tree-optimization/26854, tree-optimization/27087
+- fix ppc32 va_arg bug (Alan Modra)
+- assorted gomp fixes (PRs c++/25874, middle-end/25989, c/25996, c/26171,
+  middle-end/26913)
+- fix pretty printing C array types (#188944)
+- fix ICE on unprototyped alloca (PR tree-optimization/26865)
+- fix truncation optimization overflow handling (PR middle-end/26729)
+
 * Fri Apr 14 2006 Jakub Jelinek <jakub at redhat.com> 4.1.0-8
 - update from gcc-4_1-branch (-r112825:112951)
   - PRs c++/26122, c++/26295, fortran/23634, fortran/25619, fortran/26257,


Index: sources
===================================================================
RCS file: /cvs/dist/rpms/gcc/devel/sources,v
retrieving revision 1.146
retrieving revision 1.147
diff -u -r1.146 -r1.147
--- sources	14 Apr 2006 09:40:18 -0000	1.146
+++ sources	20 Apr 2006 13:50:21 -0000	1.147
@@ -1 +1 @@
-3d39e406b849c2225ebb203a84013838  gcc-4.1.0-20060414.tar.bz2
+70ceb184a4d5a40a2eb8fb903aff3894  gcc-4.1.0-20060420.tar.bz2


--- gcc41-pr26823.patch DELETED ---




More information about the fedora-cvs-commits mailing list