rpms/gcc/devel gcc41-java-jarsort.patch, NONE, 1.1 gcc41-java-src-filename.patch, NONE, 1.1 gcc41-pr24188.patch, NONE, 1.1 gcc41-pr24907.patch, NONE, 1.1 gcc41-pr25023.patch, NONE, 1.1 gcc41-pr25366.patch, NONE, 1.1 gcc41-test-generate-noliberty.patch, NONE, 1.1 gcc41-test-pr25331.patch, NONE, 1.1 .cvsignore, 1.119, 1.120 gcc41.spec, 1.5, 1.6 sources, 1.121, 1.122 gcc41-gomp-pr25246.patch, 1.1, NONE gcc41-gomp-tests1.patch, 1.1, NONE gcc41-gomp-tests2.patch, 1.1, NONE gcc41-pr14024.patch, 1.1, NONE gcc41-pr24975.patch, 1.1, NONE gcc41-pr25268.patch, 1.1, NONE gcc41-s390-atomic2.patch, 1.1, NONE gcc41-s390-atomic3.patch, 1.1, NONE gcc41-test-20050330-2.patch, 1.1, NONE gcc41-test-c++-struct_layout.patch, 1.1, NONE gcc41-test-pr17828.patch, 1.1, NONE gcc41-test-pr19005.patch, 1.1, NONE gcc41-test-pr19317.patch, 1.1, NONE

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Mon Dec 12 23:04:41 UTC 2005


Author: jakub

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

Modified Files:
	.cvsignore gcc41.spec sources 
Added Files:
	gcc41-java-jarsort.patch gcc41-java-src-filename.patch 
	gcc41-pr24188.patch gcc41-pr24907.patch gcc41-pr25023.patch 
	gcc41-pr25366.patch gcc41-test-generate-noliberty.patch 
	gcc41-test-pr25331.patch 
Removed Files:
	gcc41-gomp-pr25246.patch gcc41-gomp-tests1.patch 
	gcc41-gomp-tests2.patch gcc41-pr14024.patch 
	gcc41-pr24975.patch gcc41-pr25268.patch 
	gcc41-s390-atomic2.patch gcc41-s390-atomic3.patch 
	gcc41-test-20050330-2.patch gcc41-test-c++-struct_layout.patch 
	gcc41-test-pr17828.patch gcc41-test-pr19005.patch 
	gcc41-test-pr19317.patch 
Log Message:
4.1.0-0.7


gcc41-java-jarsort.patch:
 Makefile.am |   25 +++++++++++++++++++++++--
 Makefile.in |   25 +++++++++++++++++++++++--
 2 files changed, 46 insertions(+), 4 deletions(-)

--- NEW FILE gcc41-java-jarsort.patch ---
2005-12-12  Jakub Jelinek  <jakub at redhat.com>

	* Makefile.am (libgcj- at gcc_version@.jar): Set timestamp of all files
	and directories in the jar file to the youngest of gcc/ChangeLog,
	gcc/java/ChangeLog and libjava/ChangeLog.  Sort the file/directory
	list before passing it to fastjar.
	* Makefile.in: Rebuilt.

--- libjava/Makefile.am.jj	2005-11-28 20:38:22.000000000 +0100
+++ libjava/Makefile.am	2005-12-12 22:58:53.000000000 +0100
@@ -323,11 +323,32 @@ $(propertyo_files): %.lo: classpath/reso
 	$(LTGCJCOMPILE) -o $@ -c $< -Wc,--resource,$(@:.lo=)
 
 libgcj-$(gcc_version).jar:
+## The following is an attempt to have libgcj-*.jar files
+## from the same GCC version identical across the architectures.
 	jardir=`dirname $(ZIP)`; \
 	jardir=`cd $$jardir && pwd`; \
 	jarname=`basename $(ZIP)`; \
-	cd classpath/lib; $$jardir/$$jarname -cfM \
-	    ../../libgcj-$(gcc_version).jar gnu java javax org
+	javasrcdir=`cd $(srcdir) && pwd`; \
+	cd classpath/lib; \
+	JARDIR=`mktemp -d ../$@.XXXXXX` || exit 1; \
+	for d in `find gnu java javax org -type d | LC_ALL=C sort`; do \
+	    mkdir -p $$JARDIR/$$d; \
+	done; \
+	touch -r $$javasrcdir/../gcc/ChangeLog $$JARDIR.stamp; \
+	[ $$javasrcdir/../gcc/java/ChangeLog -nt $$JARDIR.stamp ] \
+	    && touch -r $$javasrcdir/../gcc/java/ChangeLog $$JARDIR.stamp; \
+	[ $$javasrcdir/ChangeLog -nt $$JARDIR.stamp ] \
+	    && touch -r $$javasrcdir/ChangeLog $$JARDIR.stamp; \
+	for f in `find gnu java javax org -type f | LC_ALL=C sort`; do \
+	    cp $$f $$JARDIR/$$f; \
+	    touch -r $$JARDIR.stamp $$JARDIR/$$f; \
+	done; \
+	touch -r $$JARDIR.stamp `find $$JARDIR -type d`; \
+	cd $$JARDIR; \
+	$$jardir/$$jarname -cfM \
+	    ../../libgcj-$(gcc_version).jar gnu java javax org || exit; \
+	cd -; \
+	rm -rf $$JARDIR $$JARDIR.stamp
 
 CLEANFILES = libgcj-$(gcc_version).jar \
 	$(all_java_deps_files) $(all_java_filelist_files)
--- libjava/Makefile.in.jj	2005-11-28 20:38:22.000000000 +0100
+++ libjava/Makefile.in	2005-12-12 22:59:28.000000000 +0100
@@ -7529,11 +7529,32 @@ $(propertyo_files): %.lo: classpath/reso
 	$(LTGCJCOMPILE) -o $@ -c $< -Wc,--resource,$(@:.lo=)
 
 libgcj-$(gcc_version).jar:
+## The following is an attempt to have libgcj-*.jar files
+## from the same GCC version identical across the architectures.
 	jardir=`dirname $(ZIP)`; \
 	jardir=`cd $$jardir && pwd`; \
 	jarname=`basename $(ZIP)`; \
-	cd classpath/lib; $$jardir/$$jarname -cfM \
-	    ../../libgcj-$(gcc_version).jar gnu java javax org
+	javasrcdir=`cd $(srcdir) && pwd`; \
+	cd classpath/lib; \
+	JARDIR=`mktemp -d ../$@.XXXXXX` || exit 1; \
+	for d in `find gnu java javax org -type d | LC_ALL=C sort`; do \
+	    mkdir -p $$JARDIR/$$d; \
+	done; \
+	touch -r $$javasrcdir/../gcc/ChangeLog $$JARDIR.stamp; \
+	[ $$javasrcdir/../gcc/java/ChangeLog -nt $$JARDIR.stamp ] \
+	    && touch -r $$javasrcdir/../gcc/java/ChangeLog $$JARDIR.stamp; \
+	[ $$javasrcdir/ChangeLog -nt $$JARDIR.stamp ] \
+	    && touch -r $$javasrcdir/ChangeLog $$JARDIR.stamp; \
+	for f in `find gnu java javax org -type f | LC_ALL=C sort`; do \
+	    cp $$f $$JARDIR/$$f; \
+	    touch -r $$JARDIR.stamp $$JARDIR/$$f; \
+	done; \
+	touch -r $$JARDIR.stamp `find $$JARDIR -type d`; \
+	cd $$JARDIR; \
+	$$jardir/$$jarname -cfM \
+	    ../../libgcj-$(gcc_version).jar gnu java javax org || exit; \
+	cd -; \
+	rm -rf $$JARDIR $$JARDIR.stamp
 
 mostlyclean-local:
 	find . -name '*.lo' -print | xargs $(LIBTOOL) rm -f

gcc41-java-src-filename.patch:
 jcf-parse.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletion(-)

--- NEW FILE gcc41-java-src-filename.patch ---
2005-12-12  Alexandre Oliva  <aoliva at redhat.com>

	* jcf-parse.c (set_source_filename): Set the decl source location
	even when returning early.

--- gcc/java/jcf-parse.c.orig	2005-12-12 10:57:47.000000000 -0200
+++ gcc/java/jcf-parse.c	2005-12-12 10:59:11.000000000 -0200
@@ -142,7 +142,13 @@
 	  && strcmp (sfname, old_filename + old_len - new_len) == 0
 	  && (old_filename[old_len - new_len - 1] == '/'
 	      || old_filename[old_len - new_len - 1] == '\\'))
-	return;
+	{
+#ifndef USE_MAPPED_LOCATION
+	  DECL_SOURCE_LOCATION (TYPE_NAME (current_class)) = input_location;
+	  file_start_location = input_location;
+#endif
+	  return;
+	}
     }
   if (strchr (sfname, '/') == NULL && strchr (sfname, '\\') == NULL)
     {

gcc41-pr24188.patch:
 0 files changed

--- NEW FILE gcc41-pr24188.patch ---
2005-11-03  Jan Hubicka  <jh at suse.cz>

	PR target/24188
	* i386.c (x86_64_elf_select_section): Handle STRING_CST without crash.

--- gcc/config/i386/i386.c	(revision 106422)
+++ gcc/config/i386/i386.c	(working copy)
@@ -1741,6 +1741,10 @@ x86_64_elf_select_section (tree decl, in
 	}
       if (sname)
 	{
+	  /* We might get called with string constants, but named_section
+	     don't like them as they are not DECLs.  */
+	  if (!DECL_P (decl))
+	    decl = NULL;
           named_section (decl, sname, reloc);
 	  return;
 	}

gcc41-pr24907.patch:
 0 files changed

--- NEW FILE gcc41-pr24907.patch ---
2005-11-23  Petr Machata  <machata at post.cz>

	PR c++/24907
	* parser.c (cp_parser_simple_declaration): Require comma at the
	beginning of processing second and later declarators, instead of
	allowing the comma at the end of each iteration.

--- gcc/gcc/cp/parser.c	(revision 107291)
+++ gcc/gcc/cp/parser.c	(working copy)
@@ -7142,7 +7142,16 @@
       bool function_definition_p;
       tree decl;
 
-      saw_declarator = true;
+      if (saw_declarator)
+	{
+	  /* If we are processing next declarator, coma is expected */
+	  token = cp_lexer_peek_token (parser->lexer);
+	  gcc_assert (token->type == CPP_COMMA);
+	  cp_lexer_consume_token (parser->lexer);
+	}
+      else
+	saw_declarator = true;
+
       /* Parse the init-declarator.  */
       decl = cp_parser_init_declarator (parser, &decl_specifiers,
 					function_definition_allowed_p,
@@ -7177,7 +7186,7 @@
       token = cp_lexer_peek_token (parser->lexer);
       /* If it's a `,', there are more declarators to come.  */
       if (token->type == CPP_COMMA)
-	cp_lexer_consume_token (parser->lexer);
+	/* will be consumed next time around */;
       /* If it's a `;', we are done.  */
       else if (token->type == CPP_SEMICOLON)
 	break;
--- gcc/gcc/testsuite/g++.dg/parse/comma2.C	(revision 0)
+++ gcc/gcc/testsuite/g++.dg/parse/comma2.C	(revision 0)
@@ -0,0 +1,19 @@
+// { dg-do compile }
+
+// Copyright (C) 2005 Free Software Foundation, Inc.
+
+// PR c++/24907 [3.4/4.0/4.1/4.2 Regression] "int x, ;" accepted
+
+int x;
+int y,; /* { dg-error "expected" } */
+
+int main()
+{
+  int a;
+  int b,;    /* { dg-error "expected" } */
+  int c,d;
+  int e,f,;  /* { dg-error "expected" } */
+  int g,h,i;
+  int j,k,l,;/* { dg-error "expected" } */
+  int m,,,n; /* { dg-error "expected" } */
+}

gcc41-pr25023.patch:
 config/i386/i386.h                  |    9 +++---
 config/i386/i386.md                 |   28 ++++++++-----------
 expr.c                              |   19 +++++++++++--
 testsuite/gcc.target/i386/pr25293.c |   51 ++++++++++++++++++++++++++++++++++++
 4 files changed, 84 insertions(+), 23 deletions(-)

--- NEW FILE gcc41-pr25023.patch ---
2005-12-12  Jakub Jelinek  <jakub at redhat.com>

	PR debug/25023
	PR target/25293
	* expr.c (emit_move_resolve_push): Handle PRE_MODIFY
	and POST_MODIFY with CONST_INT adjustment equal to PUSH_ROUNDING.
	Fix POST_INC/POST_DEC handling if PUSH_ROUNDING is not identity.
	* config/i386/i386.md (pushhi2, pushqi2): Use pushl instead of pushw.
	Set mode to SI, adjust constraints.
	(pushhi2_rex64, pushqi2_rex64): Set mode to DI.
	* config/i386/i386.h (PUSH_ROUNDING): Round up to 4 instead of 2 for
	32-bit code.

	* gcc.target/i386/pr25293.c: New test.

--- gcc/expr.c.jj	2005-12-08 22:33:38.000000000 +0100
+++ gcc/expr.c	2005-12-12 11:34:59.000000000 +0100
@@ -2852,6 +2852,19 @@ emit_move_resolve_push (enum machine_mod
 #endif
   if (code == PRE_DEC || code == POST_DEC)
     adjust = -adjust;
+  else if (code == PRE_MODIFY || code == POST_MODIFY)
+    {
+      rtx expr = XEXP (XEXP (x, 0), 1);
+      HOST_WIDE_INT val;
+
+      gcc_assert (GET_CODE (expr) == PLUS || GET_CODE (expr) == MINUS);
+      gcc_assert (GET_CODE (XEXP (expr, 1)) == CONST_INT);
+      val = INTVAL (XEXP (expr, 1));
+      if (GET_CODE (expr) == MINUS)
+	val = -val;
+      gcc_assert (adjust == val || adjust == -val);
+      adjust = val;
+    }
 
   /* Do not use anti_adjust_stack, since we don't want to update
      stack_pointer_delta.  */
@@ -2865,13 +2878,13 @@ emit_move_resolve_push (enum machine_mod
     {
     case PRE_INC:
     case PRE_DEC:
+    case PRE_MODIFY:
       temp = stack_pointer_rtx;
       break;
     case POST_INC:
-      temp = plus_constant (stack_pointer_rtx, -GET_MODE_SIZE (mode));
-      break;
     case POST_DEC:
-      temp = plus_constant (stack_pointer_rtx, GET_MODE_SIZE (mode));
+    case POST_MODIFY:
+      temp = plus_constant (stack_pointer_rtx, -adjust);
       break;
     default:
       gcc_unreachable ();
--- gcc/config/i386/i386.h.jj	2005-12-09 15:15:54.000000000 +0100
+++ gcc/config/i386/i386.h	2005-12-09 15:23:54.000000000 +0100
@@ -1374,9 +1374,10 @@ enum reg_class
 
 /* If we generate an insn to push BYTES bytes,
    this says how many the stack pointer really advances by.
-   On 386 pushw decrements by exactly 2 no matter what the position was.
-   On the 386 there is no pushb; we use pushw instead, and this
-   has the effect of rounding up to 2.
+   On 386, we have pushw instruction that decrements by exactly 2 no
+   matter what the position was, there is no pushb.
+   But as CIE data alignment factor on this arch is -4, we need to make
+   sure all stack pointer adjustments are in multiple of 4.
 
    For 64bit ABI we round up to 8 bytes.
  */
@@ -1384,7 +1385,7 @@ enum reg_class
 #define PUSH_ROUNDING(BYTES) \
   (TARGET_64BIT		     \
    ? (((BYTES) + 7) & (-8))  \
-   : (((BYTES) + 1) & (-2)))
+   : (((BYTES) + 3) & (-4)))
 
 /* If defined, the maximum amount of space required for outgoing arguments will
    be computed and placed into the variable
--- gcc/config/i386/i386.md.jj	2005-12-09 15:15:38.000000000 +0100
+++ gcc/config/i386/i386.md	2005-12-09 15:23:54.000000000 +0100
@@ -1274,14 +1274,12 @@
   "ix86_expand_move (HImode, operands); DONE;")
 
 (define_insn "*pushhi2"
-  [(set (match_operand:HI 0 "push_operand" "=<,<")
-	(match_operand:HI 1 "general_no_elim_operand" "n,r*m"))]
+  [(set (match_operand:HI 0 "push_operand" "=X")
+	(match_operand:HI 1 "nonmemory_no_elim_operand" "rn"))]
   "!TARGET_64BIT"
-  "@
-   push{w}\t{|WORD PTR }%1
-   push{w}\t%1"
+  "push{l}\t%k1"
   [(set_attr "type" "push")
-   (set_attr "mode" "HI")])
+   (set_attr "mode" "SI")])
 
 ;; For 64BIT abi we always round up to 8 bytes.
 (define_insn "*pushhi2_rex64"
@@ -1290,7 +1288,7 @@
   "TARGET_64BIT"
   "push{q}\t%q1"
   [(set_attr "type" "push")
-   (set_attr "mode" "QI")])
+   (set_attr "mode" "DI")])
 
 (define_insn "*movhi_1"
   [(set (match_operand:HI 0 "nonimmediate_operand" "=r,r,r,m")
@@ -1435,18 +1433,16 @@
   "ix86_expand_move (QImode, operands); DONE;")
 
 ;; emit_push_insn when it calls move_by_pieces requires an insn to
-;; "push a byte".  But actually we use pushw, which has the effect
-;; of rounding the amount pushed up to a halfword.
+;; "push a byte".  But actually we use pushl, which has the effect
+;; of rounding the amount pushed up to a word.
 
 (define_insn "*pushqi2"
-  [(set (match_operand:QI 0 "push_operand" "=X,X")
-	(match_operand:QI 1 "nonmemory_no_elim_operand" "n,r"))]
+  [(set (match_operand:QI 0 "push_operand" "=X")
+	(match_operand:QI 1 "nonmemory_no_elim_operand" "rn"))]
   "!TARGET_64BIT"
-  "@
-   push{w}\t{|word ptr }%1
-   push{w}\t%w1"
+  "push{l}\t%k1"
   [(set_attr "type" "push")
-   (set_attr "mode" "HI")])
+   (set_attr "mode" "SI")])
 
 ;; For 64BIT abi we always round up to 8 bytes.
 (define_insn "*pushqi2_rex64"
@@ -1455,7 +1451,7 @@
   "TARGET_64BIT"
   "push{q}\t%q1"
   [(set_attr "type" "push")
-   (set_attr "mode" "QI")])
+   (set_attr "mode" "DI")])
 
 ;; Situation is quite tricky about when to choose full sized (SImode) move
 ;; over QImode moves.  For Q_REG -> Q_REG move we use full size only for
--- gcc/testsuite/gcc.target/i386/pr25293.c.jj	2005-12-09 15:11:03.000000000 +0100
+++ gcc/testsuite/gcc.target/i386/pr25293.c	2005-12-09 15:13:07.000000000 +0100
@@ -0,0 +1,51 @@
+/* PR target/25293 */
+/* { dg-do compile } */
+/* { dg-options "-mpreferred-stack-boundary=2 -mtune=i586 -O2 -fomit-frame-pointer -g" } */
+/* { dg-require-effective-target ilp32 } */
+
+struct T { unsigned short t1, t2, t3, t4, t5, t6, t7; };
+struct S { struct T s1; unsigned short s2, s3; };
+unsigned short v1;
+int f1 (void);
+int f2 (struct T);
+int f3 (const char *);
+
+int
+foo (struct S *x, struct T y)
+{
+  unsigned short a, b, c;
+  unsigned long d, e;
+  int f = 0;
+  y.t6 = 6;
+  a = y.t7;
+  b = y.t6;
+  c = y.t7;
+  switch (a)
+    {
+    case 8:
+    case 7:
+      c = 9;
+      break;
+    case 1:
+    case 6:
+    case 3:
+      b = 16;
+      c = 9;
+      break;
+    }
+  if ((f = f1 ()))
+    goto error;
+  if ((f = f2 (y)))
+    goto error;
+  d = (long) &y;
+  e = (long) &x->s1;
+  __asm __volatile ("" : "+D" (e), "+S" (d) :: "memory");
+  x->s2 = b;
+  x->s3 = c;
+  f3 ("foo");
+  return 0;
+error:
+  if (v1 >= 1)
+    f3 ("bar");
+  return f;
+}

gcc41-pr25366.patch:
 class.c |    3 +++
 1 files changed, 3 insertions(+)

--- NEW FILE gcc41-pr25366.patch ---
2005-12-12  Andrew Haley  <aph at redhat.com>

	PR java/25366
	PR java/25368
	* class.c (maybe_layout_super_class): Update current_class before
	calling do_resolve_class.

--- gcc/java/class.c.jj	2005-12-08 22:33:05.000000000 +0100
+++ gcc/java/class.c	2005-12-12 17:08:48.000000000 +0100
@@ -2085,6 +2085,9 @@ maybe_layout_super_class (tree super_cla
 	     we give it one.  */
 	  tree this_wrap = NULL_TREE;
 
+	  /* Set the correct context for class resolution.  */
+	  current_class = this_class;
+
 	  if (this_class)
 	    {
 	      tree this_decl = TYPE_NAME (this_class);

gcc41-test-generate-noliberty.patch:
 struct-layout-1.exp        |    5 
 struct-layout-1_generate.c |  234 +++++++++++++++++++++++++++++++++++++--------
 2 files changed, 197 insertions(+), 42 deletions(-)

--- NEW FILE gcc41-test-generate-noliberty.patch ---
2005-12-09  Mark Mitchell  <mark at codesourcery.com>
	    Jakub Jelinek  <jakub at redhat.com>

	* g++.dg/compat/struct-layout-1.exp: Do not link with libiberty.
	* g++.dg/compat/struct-layout-1_generate.c (config.h): Do not include.
	(limits.h): Include unconditionally.
	(stdlib.h): Likewise.
	(hashtab.h): Do not include.
	(getopt.h): Likewise.
	(stddef.h): Include.
	(hashval_t): Define.
	(struct entry): Add "next" field.
	(HASH_SIZE): New macro.
	(hash_table): New variable.
	(switchfiles): Do not use xmalloc.
	(mix): New macro.
	(iterative_hash): New function.
	(hasht): Remove.
	(e_exists): New function.
	(e_insert): Likewise.
	(output): Use, instead of libiberty hashtable functions.
	(main): Do not use getopt.  Do not call htab_create.

--- gcc/testsuite/g++.dg/compat/struct-layout-1.exp.jj	2005-12-08 22:44:43.000000000 +0100
+++ gcc/testsuite/g++.dg/compat/struct-layout-1.exp	2005-12-09 19:29:10.000000000 +0100
@@ -127,10 +127,7 @@ set generator "$tmpdir/g++.dg-struct-lay
 set generator_src "$srcdir/$subdir/struct-layout-1_generate.c"
 set generator_src "$generator_src $srcdir/$subdir/../../gcc.dg/compat/generate-random.c"
 set generator_src "$generator_src $srcdir/$subdir/../../gcc.dg/compat/generate-random_r.c"
-set generator_inc "-I$srcdir/$subdir -I$srcdir/../../include"
-set generator_inc "$generator_inc -I$rootme/../libiberty"
-set generator_lib "-L$rootme/../libiberty -liberty"
-set generator_cmd "-o $generator $generator_src $generator_inc $generator_lib"
+set generator_cmd "-o $generator $generator_src"
 
 set status [remote_exec host "$HOSTCC $HOSTCFLAGS $generator_cmd"]
 set status [lindex $status 0]
--- gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c.jj	2005-12-08 22:44:43.000000000 +0100
+++ gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c	2005-12-09 21:16:16.000000000 +0100
@@ -19,23 +19,15 @@ along with GCC; see the file COPYING.  I
 Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
 02110-1301, USA.  */
 
-/* Compile with gcc -I$(srcdir)/../include -{I,L}$(objdir)/../libiberty/ \
-   -o struct-layout-1_generate{,.c} generate_random{,_r}.c -liberty */
+/* Compile with gcc -o struct-layout-1_generate{,.c} generate_random{,_r}.c */
 
-#include "config.h"
-#ifdef HAVE_LIMITS_H
+/* N.B. -- This program cannot use libiberty as that will not work
+   when testing an installed compiler.  */
 #include <limits.h>
-#endif
-#include "libiberty.h"
 #include <stdio.h>
-#ifdef HAVE_STDLIB_H
 #include <stdlib.h>
-#endif
-#ifdef HAVE_STRING_H
 #include <string.h>
-#endif
-#include "hashtab.h"
-#include "getopt.h"
+#include <stddef.h>
 /* We use our own pseudo-random number generator, so that it gives the same
    values on all hosts.  */
 #include "../../gcc.dg/compat/generate-random.h"
@@ -44,6 +36,8 @@ Software Foundation, 51 Franklin Street,
 # error Need 64-bit long long
 #endif
 
+typedef unsigned int hashval_t;
+
 enum TYPE
 {
   TYPE_INT,
@@ -390,6 +384,8 @@ struct entry
   unsigned char arr_len;
   struct types *type;
   const char *attrib;
+  /* Used to chain together entries in the hash table.  */
+  struct entry *next;
 };
 struct types attrib_array_types[] = {
 { "Talx1char", TYPE_UINT, 127, 'C' },
@@ -478,6 +474,10 @@ struct types attrib_array_types[] = {
 #define NAATYPES2 (sizeof (attrib_array_types) / sizeof (attrib_array_types[0]))
 };
 
+/* A prime number giving the number of slots in the hash table.  */
+#define HASH_SIZE 32749
+static struct entry *hash_table[HASH_SIZE];
+
 static int idx, limidx, output_one;
 static const char *destdir;
 static const char *srcdir;
@@ -499,7 +499,9 @@ switchfiles (int fields)
   if (destbuf == NULL)
     {
       size_t len = strlen (destdir);
-      destbuf = xmalloc (len + 20);
+      destbuf = malloc (len + 20);
+      if (!destbuf)
+	abort ();
       memcpy (destbuf, destdir, len);
       if (!len || destbuf[len - 1] != '/')
 	destbuf[len++] = '/';
@@ -895,6 +897,130 @@ subvalues (struct entry *e, char *p, cha
     }
 }
 
+/* DERIVED FROM:
+--------------------------------------------------------------------
+lookup2.c, by Bob Jenkins, December 1996, Public Domain.
+hash(), hash2(), hash3, and mix() are externally useful functions.
+Routines to test the hash are included if SELF_TEST is defined.
+You can use this free for any purpose.  It has no warranty.
+--------------------------------------------------------------------
+*/
+
+/*
+--------------------------------------------------------------------
+mix -- mix 3 32-bit values reversibly.
+For every delta with one or two bit set, and the deltas of all three
+  high bits or all three low bits, whether the original value of a,b,c
+  is almost all zero or is uniformly distributed,
+* If mix() is run forward or backward, at least 32 bits in a,b,c
+  have at least 1/4 probability of changing.
+* If mix() is run forward, every bit of c will change between 1/3 and
+  2/3 of the time.  (Well, 22/100 and 78/100 for some 2-bit deltas.)
+mix() was built out of 36 single-cycle latency instructions in a 
+  structure that could supported 2x parallelism, like so:
+      a -= b; 
+      a -= c; x = (c>>13);
+      b -= c; a ^= x;
+      b -= a; x = (a<<8);
+      c -= a; b ^= x;
+      c -= b; x = (b>>13);
+      ...
+  Unfortunately, superscalar Pentiums and Sparcs can't take advantage 
+  of that parallelism.  They've also turned some of those single-cycle
+  latency instructions into multi-cycle latency instructions.  Still,
+  this is the fastest good hash I could find.  There were about 2^^68
+  to choose from.  I only looked at a billion or so.
+--------------------------------------------------------------------
+*/
+/* same, but slower, works on systems that might have 8 byte hashval_t's */
+#define mix(a,b,c) \
+{ \
+  a -= b; a -= c; a ^= (c>>13); \
+  b -= c; b -= a; b ^= (a<< 8); \
+  c -= a; c -= b; c ^= ((b&0xffffffff)>>13); \
+  a -= b; a -= c; a ^= ((c&0xffffffff)>>12); \
+  b -= c; b -= a; b = (b ^ (a<<16)) & 0xffffffff; \
+  c -= a; c -= b; c = (c ^ (b>> 5)) & 0xffffffff; \
+  a -= b; a -= c; a = (a ^ (c>> 3)) & 0xffffffff; \
+  b -= c; b -= a; b = (b ^ (a<<10)) & 0xffffffff; \
+  c -= a; c -= b; c = (c ^ (b>>15)) & 0xffffffff; \
+}
+
+/*
+--------------------------------------------------------------------
+hash() -- hash a variable-length key into a 32-bit value
+  k     : the key (the unaligned variable-length array of bytes)
+  len   : the length of the key, counting by bytes
+  level : can be any 4-byte value
+Returns a 32-bit value.  Every bit of the key affects every bit of
+the return value.  Every 1-bit and 2-bit delta achieves avalanche.
+About 36+6len instructions.
+
+The best hash table sizes are powers of 2.  There is no need to do
+mod a prime (mod is sooo slow!).  If you need less than 32 bits,
+use a bitmask.  For example, if you need only 10 bits, do
+  h = (h & hashmask(10));
+In which case, the hash table should have hashsize(10) elements.
+
+If you are hashing n strings (ub1 **)k, do it like this:
+  for (i=0, h=0; i<n; ++i) h = hash( k[i], len[i], h);
+
+By Bob Jenkins, 1996.  bob_jenkins at burtleburtle.net.  You may use this
+code any way you wish, private, educational, or commercial.  It's free.
+
+See http://burtleburtle.net/bob/hash/evahash.html
+Use for hash table lookup, or anything where one collision in 2^32 is
+acceptable.  Do NOT use for cryptographic purposes.
+--------------------------------------------------------------------
+*/
+
+static hashval_t
+iterative_hash (const void *k_in /* the key */,
+		register size_t  length /* the length of the key */,
+		register hashval_t initval /* the previous hash, or
+					      an arbitrary value */)
+{
+  register const unsigned char *k = (const unsigned char *)k_in;
+  register hashval_t a,b,c,len;
+
+  /* Set up the internal state */
+  len = length;
+  a = b = 0x9e3779b9;  /* the golden ratio; an arbitrary value */
+  c = initval;	   /* the previous hash value */
+
+  /*---------------------------------------- handle most of the key */
+    while (len >= 12)
+      {
+	a += (k[0] +((hashval_t)k[1]<<8) +((hashval_t)k[2]<<16) +((hashval_t)k[3]<<24));
+	b += (k[4] +((hashval_t)k[5]<<8) +((hashval_t)k[6]<<16) +((hashval_t)k[7]<<24));
+	c += (k[8] +((hashval_t)k[9]<<8) +((hashval_t)k[10]<<16)+((hashval_t)k[11]<<24));
+	mix(a,b,c);
+	k += 12; len -= 12;
+      }
+
+  /*------------------------------------- handle the last 11 bytes */
+  c += length;
+  switch(len)	      /* all the case statements fall through */
+    {
+    case 11: c+=((hashval_t)k[10]<<24);
+    case 10: c+=((hashval_t)k[9]<<16);
+    case 9 : c+=((hashval_t)k[8]<<8);
+      /* the first byte of c is reserved for the length */
+    case 8 : b+=((hashval_t)k[7]<<24);
+    case 7 : b+=((hashval_t)k[6]<<16);
+    case 6 : b+=((hashval_t)k[5]<<8);
+    case 5 : b+=k[4];
+    case 4 : a+=((hashval_t)k[3]<<24);
+    case 3 : a+=((hashval_t)k[2]<<16);
+    case 2 : a+=((hashval_t)k[1]<<8);
+    case 1 : a+=k[0];
+      /* case 0: nothing left to add */
+    }
+  mix(a,b,c);
+  /*-------------------------------------------- report the result */
+  return c;
+}
+
 hashval_t
 e_hash (const void *a)
 {
@@ -940,24 +1066,45 @@ e_eq (const void *a, const void *b)
   return 1;
 }
 
-htab_t hasht;
+static int 
+e_exists (const struct entry *e) 
+{
+  struct entry *h;
+  hashval_t hval;
+
+  hval = e_hash (e);
+  for (h = hash_table[hval % HASH_SIZE]; h; h = h->next)
+    if (e_eq (e, h))
+      return 1;
+  return 0;
+}
+
+static void
+e_insert (struct entry *e)
+{
+  hashval_t hval;
+
+  hval = e_hash (e);
+  e->next = hash_table[hval % HASH_SIZE];
+  hash_table[hval % HASH_SIZE] = e;
+}
 
 void
 output (struct entry *e)
 {
   int i;
   char c;
-  void **p;
+  struct entry *n;
 
   if (e[0].etype != ETYPE_STRUCT && e[0].etype != ETYPE_UNION)
     abort ();
 
-  p = htab_find_slot (hasht, e, INSERT);
-  if (*p != NULL)
+  if (e_exists (e))
     return;
 
-  *p = malloc ((e[0].len + 1) * sizeof (struct entry));
-  memcpy (*p, e, (e[0].len + 1) * sizeof (struct entry));
+  n = (struct entry *) malloc ((e[0].len + 1) * sizeof (struct entry));
+  memcpy (n, e, (e[0].len + 1) * sizeof (struct entry));
+  e_insert (n);
 
   if (idx == limidx)
     switchfiles (e[0].len);
@@ -1345,29 +1492,41 @@ int
 main (int argc, char **argv)
 {
   int i, j, count, c, n = 3000;
+  char *optarg;
 
   if (sizeof (int) != 4 || sizeof (long long) != 8)
     return 1;
-
-  while ((c = getopt (argc, argv, "d:i:n:s:")) != -1)
-    switch (c)
-      {
-      case 'n':
-	n = atoi (optarg);
-	break;
-      case 'd':
-	destdir = optarg;
-	break;
-      case 's':
-	srcdir = optarg;
-	break;
-      case 'i':
-	output_one = 1;
-	limidx = atoi (optarg);
-	break;
-      default:
+  
+  i = 1;
+  while (i < argc) 
+    {
+      c = '\0';
+      if (argv[i][0] == '-' && argv[i][2] == '\0')
+	c = argv[i][1];
+      optarg = argv[i + 1];
+      if (!optarg)
 	goto usage;
+      switch (c)
+	{
+	case 'n':
+	  n = atoi (optarg);
+	  break;
+	case 'd':
+	  destdir = optarg;
+	  break;
+	case 's':
+	  srcdir = optarg;
+	  break;
+	case 'i':
+	  output_one = 1;
+	  limidx = atoi (optarg);
+	  break;
+	default:
+	  fprintf (stderr, "unrecognized option %s\n", argv[i]);
+	  goto usage;
       }
+      i += 2;
+    }
 
   if (output_one)
     {
@@ -1392,7 +1551,6 @@ Either -s srcdir -d destdir or -i idx mu
   if (srcdir == NULL && !output_one)
     goto usage;
 
-  hasht = htab_create (40000, e_hash, e_eq, NULL);
   for (i = 0; i < NTYPES2; ++i)
     if (base_types[i].bitfld)
       bitfld_types[n_bitfld_types++] = base_types[i];

gcc41-test-pr25331.patch:
 g++.dg/compat/struct-layout-1_generate.c |   54 ++++++++++++++++++-------------
 gcc.dg/compat/struct-layout-1_generate.c |   54 ++++++++++++++++++-------------
 2 files changed, 66 insertions(+), 42 deletions(-)

--- NEW FILE gcc41-test-pr25331.patch ---
2005-12-12  Jakub Jelinek  <jakub at redhat.com>

	PR c++/25331
	* gcc.dg/compat/struct-layout-1_generate.c (subfield): Don't
	put atal* and atpaal* attributes on array elements.
	(generate_fields): Revert 2005-10-07 and 2005-10-11 changes.
	* g++.dg/compat/struct-layout-1_generate.c (subfield): Don't
	put atal* and atpaal* attributes on array elements.
	(generate_fields): Don't prevent atal* attribute on ETYPE_ARRAY.

--- gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c.jj	2005-11-28 20:44:55.000000000 +0100
+++ gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c	2005-12-12 16:26:51.000000000 +0100
@@ -789,6 +789,13 @@ subfield (struct entry *e, char *letter)
 	    snprintf (buf, 20, "%c[]", *letter);
 	  else
 	    snprintf (buf, 20, "%c[%d]", *letter, e[0].arr_len);
+	  /* If this is an array type, do not put aligned attributes on
+	     elements.  Aligning elements to a value greater than their
+	     size will result in a compiler error.  */
+	  if (type == 1
+	      && ((strncmp (e[0].attrib, "atal", 4) == 0)
+		   || strncmp (e[0].attrib, "atpaal", 6) == 0))
+	    type = 2;
 	}
       else
         {
@@ -845,18 +852,32 @@ subfield (struct entry *e, char *letter)
         }
       ++*letter;
       if (e[0].attrib)
-	switch (generate_random () % 3)
-          {
-          case 0:
-            fprintf (outfile, "%s %s %s;", e[0].attrib, e[0].type->name, buf);
-            break;
-          case 1:
-            fprintf (outfile, "%s %s %s;", e[0].type->name, e[0].attrib, buf);
-            break;
-          case 2:
-            fprintf (outfile, "%s %s %s;", e[0].type->name, buf, e[0].attrib);
-            break;
-          }
+	{
+	  /* If this is an array type, do not put aligned attributes on
+	     elements.  Aligning elements to a value greater than their
+	     size will result in a compiler error.  */
+	  if (e[0].etype == ETYPE_ARRAY
+              && ((strncmp (e[0].attrib, "atal", 4) == 0)
+                   || strncmp (e[0].attrib, "atpaal", 6) == 0))
+	    type = 2;
+	  else
+            type = generate_random () % 3;
+	  switch (type)
+	    {
+	    case 0:
+	      fprintf (outfile, "%s %s %s;", e[0].attrib, e[0].type->name,
+		       buf);
+	      break;
+	    case 1:
+	      fprintf (outfile, "%s %s %s;", e[0].type->name, e[0].attrib,
+		       buf);
+	      break;
+	    case 2:
+	      fprintf (outfile, "%s %s %s;", e[0].type->name, buf,
+		       e[0].attrib);
+	      break;
+	    }
+	}
       else
 	fprintf (outfile, "%s %s;", e[0].type->name, buf);
       return 1;
@@ -1746,15 +1767,6 @@ generate_fields (enum FEATURE features, 
 		  || (e[n].type >= &aligned_bitfld_types[0]
 		      && e[n].type < &aligned_bitfld_types[n_aligned_bitfld_types])))
 	    e[n].attrib = NULL;
-
-	  /* If this is an array type, do not put aligned attributes on
-	     elements.  Aligning elements to a value greater than their
-	     size will result in a compiler error.  */
-
-	  if ((e[n].etype == ETYPE_ARRAY)
-	      && e[n].attrib != NULL
-	      && (strncmp (e[n].attrib, "atal", 4) == 0))
-            e[n].attrib = NULL;
 	}
     }
 }
--- gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c.jj	2005-12-09 22:03:25.000000000 +0100
+++ gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c	2005-12-12 16:27:28.000000000 +0100
@@ -611,6 +611,13 @@ subfield (struct entry *e, char *letter)
 	    snprintf (buf, 20, "%c[]", *letter);
 	  else
 	    snprintf (buf, 20, "%c[%d]", *letter, e[0].arr_len);
+	  /* If this is an array type, do not put aligned attributes on
+	     elements.  Aligning elements to a value greater than their
+	     size will result in a compiler error.  */
+	  if (type == 1
+	      && ((strncmp (e[0].attrib, "atal", 4) == 0)
+		   || strncmp (e[0].attrib, "atpaal", 6) == 0))
+	    type = 2;
 	}
       else
 	{
@@ -667,18 +674,32 @@ subfield (struct entry *e, char *letter)
 	}
       ++*letter;
       if (e[0].attrib)
-	switch (generate_random () % 3)
-	  {
-	  case 0:
-	    fprintf (outfile, "%s %s %s;", e[0].attrib, e[0].type->name, buf);
-	    break;
-	  case 1:
-	    fprintf (outfile, "%s %s %s;", e[0].type->name, e[0].attrib, buf);
-	    break;
-	  case 2:
-	    fprintf (outfile, "%s %s %s;", e[0].type->name, buf, e[0].attrib);
-	    break;
-	  }
+	{
+	  /* If this is an array type, do not put aligned attributes on
+	     elements.  Aligning elements to a value greater than their
+	     size will result in a compiler error.  */
+	  if (e[0].etype == ETYPE_ARRAY
+	      && ((strncmp (e[0].attrib, "atal", 4) == 0)
+		   || strncmp (e[0].attrib, "atpaal", 6) == 0))
+	    type = 2;
+	  else
+	    type = generate_random () % 3;
+	  switch (type)
+	    {
+	    case 0:
+	      fprintf (outfile, "%s %s %s;", e[0].attrib, e[0].type->name,
+		       buf);
+	      break;
+	    case 1:
+	      fprintf (outfile, "%s %s %s;", e[0].type->name, e[0].attrib,
+		       buf);
+	      break;
+	    case 2:
+	      fprintf (outfile, "%s %s %s;", e[0].type->name, buf,
+		       e[0].attrib);
+	      break;
+	    }
+	}
       else
 	fprintf (outfile, "%s %s;", e[0].type->name, buf);
       return 1;
@@ -1444,15 +1465,6 @@ generate_fields (enum FEATURE features, 
 		  || (e[n].type >= &aligned_bitfld_types[0]
 		      && e[n].type < &aligned_bitfld_types[n_aligned_bitfld_types])))
 	    e[n].attrib = NULL;
-
-	  /* If this is an array type, do not put aligned attributes on
-	     elements.  Aligning elements to a value greater than their
-	     size will result in a compiler error.  */
-
-	  if ((e[n].etype == ETYPE_ARRAY)
-	      && e[n].attrib != NULL
-	      && (strncmp (e[n].attrib, "atal", 4) == 0))
-	     e[n].attrib = NULL;
 	}
     }
 }


Index: .cvsignore
===================================================================
RCS file: /cvs/dist/rpms/gcc/devel/.cvsignore,v
retrieving revision 1.119
retrieving revision 1.120
diff -u -r1.119 -r1.120
--- .cvsignore	7 Dec 2005 18:06:53 -0000	1.119
+++ .cvsignore	12 Dec 2005 23:03:55 -0000	1.120
@@ -1 +1 @@
-gcc-4.1.0-20051207.tar.bz2
+gcc-4.1.0-20051212.tar.bz2


Index: gcc41.spec
===================================================================
RCS file: /cvs/dist/rpms/gcc/devel/gcc41.spec,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- gcc41.spec	10 Dec 2005 14:00:54 -0000	1.5
+++ gcc41.spec	12 Dec 2005 23:04:12 -0000	1.6
@@ -1,6 +1,6 @@
-%define DATE 20051207
+%define DATE 20051212
 %define gcc_version 4.1.0
-%define gcc_release 0.6
+%define gcc_release 0.7
 %define _unpackaged_files_terminate_build 0
 %define multilib_64_archs sparc64 ppc64 s390x x86_64
 %ifarch %{ix86} x86_64 ia64
@@ -91,27 +91,22 @@
 Patch10: gcc41-java-rmic.patch
 Patch11: gcc41-java-slow_pthread_self.patch
 Patch12: gcc41-libjava-libltdl.patch
-Patch13: gcc41-test-20050330-2.patch
-Patch14: gcc41-test-c++-struct_layout.patch
-Patch15: gcc41-test-pr17828.patch
-Patch16: gcc41-test-pr19005.patch
-Patch17: gcc41-test-pr19317.patch
-Patch18: gcc41-fortran-finclude.patch
-Patch19: gcc41-ppc64-sync.patch
-Patch20: gcc41-ppc32-retaddr.patch
-Patch21: gcc41-libgfortran-host_subdir.patch
-Patch22: gcc41-pr14024.patch
-Patch23: gcc41-pr24823.patch
-Patch24: gcc41-pr24975.patch
-Patch25: gcc41-pr24982.patch
-Patch26: gcc41-pr25180.patch
-Patch27: gcc41-pr25268.patch
-Patch28: gcc41-s390-atomic1.patch
-Patch29: gcc41-s390-atomic2.patch
-Patch30: gcc41-s390-atomic3.patch
-Patch31: gcc41-gomp-tests1.patch
-Patch32: gcc41-gomp-tests2.patch
-Patch33: gcc41-gomp-pr25246.patch
+Patch13: gcc41-fortran-finclude.patch
+Patch14: gcc41-ppc64-sync.patch
+Patch15: gcc41-ppc32-retaddr.patch
+Patch16: gcc41-libgfortran-host_subdir.patch
+Patch17: gcc41-pr24823.patch
+Patch18: gcc41-pr24982.patch
+Patch19: gcc41-pr25180.patch
+Patch20: gcc41-s390-atomic1.patch
+Patch21: gcc41-java-jarsort.patch
+Patch22: gcc41-java-src-filename.patch
+Patch23: gcc41-pr24188.patch
+Patch24: gcc41-pr24907.patch
+Patch25: gcc41-pr25023.patch
+Patch26: gcc41-pr25366.patch
+Patch27: gcc41-test-pr25331.patch
+Patch28: gcc41-test-generate-noliberty.patch
 
 %define _gnu %{nil}
 %ifarch sparc
@@ -453,27 +448,22 @@
 %patch10 -p0 -b .java-rmic~
 %patch11 -p0 -b .java-slow_pthread_self~
 %patch12 -p0 -b .libjava-libltdl~
-%patch13 -p0 -b .test-20050330-2~
-%patch14 -p0 -b .test-c++-struct_layout~
-%patch15 -p0 -b .test-pr17828~
-%patch16 -p0 -b .test-pr19005~
-%patch17 -p0 -b .test-pr19317~
-%patch18 -p0 -b .fortran-finclude~
-%patch19 -p0 -b .ppc64-sync~
-%patch20 -p0 -b .ppc32-retaddr~
-%patch21 -p0 -b .libgfortran-host_subdir~
-%patch22 -p0 -b .pr14024~
-%patch23 -p0 -b .pr24823~
-%patch24 -p0 -b .pr24975~
-%patch25 -p0 -b .pr24982~
-%patch26 -p0 -b .pr25180~
-%patch27 -p0 -b .pr25268~
-%patch28 -p0 -b .s390-atomic1~
-%patch29 -p0 -b .s390-atomic2~
-%patch30 -p0 -b .s390-atomic3~
-%patch31 -p0 -b .gomp-tests1~
-%patch32 -p0 -b .gomp-tests2~
-%patch33 -p0 -b .gomp-pr25246~
+%patch13 -p0 -b .fortran-finclude~
+%patch14 -p0 -b .ppc64-sync~
+%patch15 -p0 -b .ppc32-retaddr~
+%patch16 -p0 -b .libgfortran-host_subdir~
+%patch17 -p0 -b .pr24823~
+%patch18 -p0 -b .pr24982~
+%patch19 -p0 -b .pr25180~
+%patch20 -p0 -b .s390-atomic1~
+%patch21 -p0 -b .java-jarsort~
+%patch22 -p0 -b .java-src-filename~
+%patch23 -p0 -b .pr24188~
+%patch24 -p0 -b .pr24907~
+%patch25 -p0 -b .pr25023~
+%patch26 -p0 -b .pr25366~
+%patch27 -p0 -b .test-pr25331~
+%patch28 -p0 -b .test-generate-noliberty~
 
 sed -i -e 's/4\.1\.0/4.1.0/' gcc/BASE-VER gcc/version.c
 sed -i -e 's/" (Red Hat[^)]*)"/" (Red Hat %{version}-%{gcc_release})"/' gcc/version.c
@@ -1553,7 +1543,30 @@
 %endif
 
 %changelog
+* Mon Dec 12 2005 Jakub Jelinek <jakub at redhat.com> 4.1.0-0.7
+- update from gcc-4_1-branch (-r108157:108414)
+  - PRs c++/19317, c++/19397, c++/19762, c++/19764, c++/25010, c++/25300,
+	c++/25337, debug/24908, fortran/25292, libfortran/25116,
+	libgcj/25265, target/17828, target/19005, target/23424,
+	target/25212, target/25258, target/25311, testsuite/20772,
+	testsuite/24478, testsuite/25167, tree-optimization/25248
+- update from gomp-20050608-branch (up to -r108424)
 - add BuildReq for alsa-lib-devel and configure with --disable-dssi
+- sort files in libgcj-*.jar and touch them to latest ChangeLog
+  timestamp, so that libgcj-*.jar is identical across multilib arches
+- don't use pushw instruction on i?86, as that leads to ICEs
+  in def_cfa_1, because negative CFA offsets not multiple of 4
+  aren't representable in the unwind and debug info (PR debug/25023,
+  PR target/25293)
+- fix ICEs with x86_64 -mlarge-data-threshold=N and STRING_CSTs
+  (Jan Hubicka, PR target/24188)
+- fix Java ICE with input_filename being unset (Alexandre Oliva, #174912)
+- don't accept invalid int x,; in C++ (Petr Machata, PR c++/24907)
+- fix Java ICE in do_resolve_class (Andrew Haley, PR java/25366,
+  PR java/25368)
+- make sure g*.dg/compat/struct-layout-1.exp generated tests
+  don't use arrays with entries aligned more than their size (PR c++/25331)
+- don't use -liberty in g++.dg/compat/struct-layout-1.exp tests
 
 * Wed Dec  7 2005 Jakub Jelinek <jakub at redhat.com> 4.1.0-0.6
 - allow #pragmas at C struct scope as well as ObjC class scope


Index: sources
===================================================================
RCS file: /cvs/dist/rpms/gcc/devel/sources,v
retrieving revision 1.121
retrieving revision 1.122
diff -u -r1.121 -r1.122
--- sources	7 Dec 2005 18:06:53 -0000	1.121
+++ sources	12 Dec 2005 23:04:12 -0000	1.122
@@ -1 +1 @@
-34a34dd7995a147527dd921382dc020b  gcc-4.1.0-20051207.tar.bz2
+53325e127f307dd3e8baaf3920adf6e2  gcc-4.1.0-20051212.tar.bz2


--- gcc41-gomp-pr25246.patch DELETED ---


--- gcc41-gomp-tests1.patch DELETED ---


--- gcc41-gomp-tests2.patch DELETED ---


--- gcc41-pr14024.patch DELETED ---


--- gcc41-pr24975.patch DELETED ---


--- gcc41-pr25268.patch DELETED ---


--- gcc41-s390-atomic2.patch DELETED ---


--- gcc41-s390-atomic3.patch DELETED ---


--- gcc41-test-20050330-2.patch DELETED ---


--- gcc41-test-c++-struct_layout.patch DELETED ---


--- gcc41-test-pr17828.patch DELETED ---


--- gcc41-test-pr19005.patch DELETED ---


--- gcc41-test-pr19317.patch DELETED ---




More information about the fedora-cvs-commits mailing list