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