4.4.0-0.22
This commit is contained in:
parent
a404f5d9fb
commit
00052d5c3a
@ -1,3 +1,3 @@
|
||||
fastjar-0.97.tar.gz
|
||||
gcc-4.4.0-20090219.tar.bz2
|
||||
gcc-4.4.0-20090304.tar.bz2
|
||||
cloog-ppl-0.15.tar.gz
|
||||
|
39
gcc.spec
39
gcc.spec
@ -1,9 +1,9 @@
|
||||
%define DATE 20090219
|
||||
%define SVNREV 144300
|
||||
%define DATE 20090304
|
||||
%define SVNREV 144601
|
||||
%define gcc_version 4.4.0
|
||||
# Note, gcc_release must be integer, if you want to add suffixes to
|
||||
# %{release}, append them after %{gcc_release} on Release: line.
|
||||
%define gcc_release 0.21
|
||||
%define gcc_release 0.22
|
||||
%define _unpackaged_files_terminate_build 0
|
||||
%define multilib_64_archs sparc64 ppc64 s390x x86_64
|
||||
%define include_gappletviewer 1
|
||||
@ -35,7 +35,7 @@
|
||||
Summary: Various compilers (C, C++, Objective-C, Java, ...)
|
||||
Name: gcc
|
||||
Version: %{gcc_version}
|
||||
Release: %{gcc_release}.1
|
||||
Release: %{gcc_release}
|
||||
# libgcc, libgfortran, libmudflap and crtstuff have an exception which allows
|
||||
# linking it into any kind of programs or shared libraries without
|
||||
# restrictions.
|
||||
@ -144,7 +144,9 @@ Patch20: gcc44-libtool-no-rpath.patch
|
||||
Patch21: gcc44-cloog-dl.patch
|
||||
Patch22: gcc44-raw-string.patch
|
||||
Patch23: gcc44-pr39175.patch
|
||||
Patch24: gcc44-pr39240.patch
|
||||
Patch24: gcc44-atom.patch
|
||||
Patch25: gcc44-pr39226.patch
|
||||
Patch26: gcc44-pr39358.patch
|
||||
|
||||
Patch1000: fastjar-0.97-segfault.patch
|
||||
|
||||
@ -432,7 +434,9 @@ which are required to compile with the GNAT.
|
||||
%endif
|
||||
%patch22 -p0 -b .raw-string~
|
||||
%patch23 -p0 -b .pr39175~
|
||||
%patch24 -p0 -b .pr39240~
|
||||
%patch24 -p0 -b .atom~
|
||||
%patch25 -p0 -b .pr39226~
|
||||
%patch26 -p0 -b .pr39358~
|
||||
|
||||
# This testcase doesn't compile.
|
||||
rm libjava/testsuite/libjava.lang/PR35020*
|
||||
@ -1767,8 +1771,27 @@ fi
|
||||
%doc rpm.doc/changelogs/libmudflap/ChangeLog*
|
||||
|
||||
%changelog
|
||||
* Tue Feb 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.4.0-0.21.1
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
|
||||
* Wed Mar 4 2009 Jakub Jelinek <jakub@redhat.com> 4.4.0-0.22
|
||||
- update from trunk
|
||||
- PRs ada/39172, ada/39264, bootstrap/39257, c++/36411, c++/37789,
|
||||
c++/38880, c++/39225, c++/39242, c/12245, classpath/38417,
|
||||
classpath/38912, debug/39267, debug/39285, fortran/38914,
|
||||
fortran/39292, fortran/39295, fortran/39309, fortran/39354,
|
||||
libgcj/38861, middle-end/10109, middle-end/34443,
|
||||
middle-end/39157, middle-end/39272, middle-end/39308,
|
||||
middle-end/39335, middle-end/39345, rtl-optimization/39241,
|
||||
target/33785, target/35965, target/39256, target/39261,
|
||||
target/39327, testsuite/38164, tree-optimization/37709,
|
||||
tree-optimization/39248, tree-optimization/39259,
|
||||
tree-optimization/39260, tree-optimization/39318,
|
||||
tree-optimization/39331, tree-optimizations/39259,
|
||||
tree-optimization/39358
|
||||
- fix ivopts (#486088, PR tree-optimization/39233)
|
||||
- fix SRA (#487795, PR tree-optimization/39339)
|
||||
- fix __builtin_object_size with unions (#487702,
|
||||
PR tree-optimization/39343)
|
||||
- fix ppc -m64 -O2 -mtune=cell and patterns (#485067, PR target/39226)
|
||||
- -march=atom/-mtune=atom support from ix86/atom branch
|
||||
|
||||
* Thu Feb 19 2009 Jakub Jelinek <jakub@redhat.com> 4.4.0-0.21
|
||||
- update from trunk
|
||||
|
2832
gcc44-atom.patch
Normal file
2832
gcc44-atom.patch
Normal file
File diff suppressed because it is too large
Load Diff
108
gcc44-pr39226.patch
Normal file
108
gcc44-pr39226.patch
Normal file
@ -0,0 +1,108 @@
|
||||
2009-03-03 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR target/39226
|
||||
* config/rs6000/rs6000.md (andsi3_internal5_nomc,
|
||||
anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
|
||||
(booldi3_internal3): Use boolean_or_operator instead of
|
||||
boolean_operator.
|
||||
|
||||
* gcc.dg/pr39226.c: New test.
|
||||
|
||||
--- gcc/config/rs6000/rs6000.md.jj 2009-03-02 18:09:02.000000000 +0100
|
||||
+++ gcc/config/rs6000/rs6000.md 2009-03-03 10:02:37.771461086 +0100
|
||||
@@ -2999,20 +2999,6 @@
|
||||
[(set_attr "type" "compare,compare,compare,delayed_compare,compare,compare,compare,compare")
|
||||
(set_attr "length" "8,4,4,4,8,8,8,8")])
|
||||
|
||||
-(define_insn "*andsi3_internal5_nomc"
|
||||
- [(set (match_operand:CC 3 "cc_reg_operand" "=x,?y,??y,??y,?y")
|
||||
- (compare:CC (and:SI (match_operand:SI 1 "gpc_reg_operand" "%r,r,r,r,r")
|
||||
- (match_operand:SI 2 "and_operand" "r,r,K,L,T"))
|
||||
- (const_int 0)))
|
||||
- (set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r,r,r")
|
||||
- (and:SI (match_dup 1)
|
||||
- (match_dup 2)))
|
||||
- (clobber (match_scratch:CC 4 "=X,X,x,x,X"))]
|
||||
- "TARGET_64BIT && !rs6000_gen_cell_microcode"
|
||||
- "#"
|
||||
- [(set_attr "type" "compare")
|
||||
- (set_attr "length" "8,8,8,8,8")])
|
||||
-
|
||||
(define_split
|
||||
[(set (match_operand:CC 3 "cc_reg_not_micro_cr0_operand" "")
|
||||
(compare:CC (and:SI (match_operand:SI 1 "gpc_reg_operand" "")
|
||||
@@ -7684,18 +7670,6 @@
|
||||
[(set_attr "type" "compare,compare,delayed_compare,compare,compare,compare,compare,compare,compare,compare,compare,compare")
|
||||
(set_attr "length" "4,4,4,4,4,8,8,8,8,8,8,12")])
|
||||
|
||||
-(define_insn "*anddi3_internal2_nomc"
|
||||
- [(set (match_operand:CC 0 "cc_reg_operand" "=x,?y,?y,??y,??y,?y")
|
||||
- (compare:CC (and:DI (match_operand:DI 1 "gpc_reg_operand" "%r,r,r,r,r,r")
|
||||
- (match_operand:DI 2 "and64_2_operand" "t,r,S,K,J,t"))
|
||||
- (const_int 0)))
|
||||
- (clobber (match_scratch:DI 3 "=r,r,r,r,r,r"))
|
||||
- (clobber (match_scratch:CC 4 "=X,X,X,x,x,X"))]
|
||||
- "TARGET_64BIT && !rs6000_gen_cell_microcode"
|
||||
- "#"
|
||||
- [(set_attr "type" "delayed_compare,compare,compare,compare,compare,compare")
|
||||
- (set_attr "length" "8,8,8,8,8,12")])
|
||||
-
|
||||
(define_split
|
||||
[(set (match_operand:CC 0 "cc_reg_operand" "")
|
||||
(compare:CC (and:DI (match_operand:DI 1 "gpc_reg_operand" "")
|
||||
@@ -7747,18 +7721,6 @@
|
||||
[(set_attr "type" "compare,compare,delayed_compare,compare,compare,compare,compare,compare,compare,compare,compare,compare")
|
||||
(set_attr "length" "4,4,4,4,4,8,8,8,8,8,8,12")])
|
||||
|
||||
-(define_insn "*anddi3_internal3_nomc"
|
||||
- [(set (match_operand:CC 3 "cc_reg_operand" "=x,?y,?y,??y,??y,?y")
|
||||
- (compare:CC (and:DI (match_operand:DI 1 "gpc_reg_operand" "%r,r,r,r,r,r")
|
||||
- (match_operand:DI 2 "and64_2_operand" "t,r,S,K,J,t"))
|
||||
- (const_int 0)))
|
||||
- (set (match_operand:DI 0 "gpc_reg_operand" "=r,r,r,r,r,r")
|
||||
- (and:DI (match_dup 1) (match_dup 2)))
|
||||
- (clobber (match_scratch:CC 4 "=X,X,X,x,x,X"))]
|
||||
- "TARGET_64BIT && !rs6000_gen_cell_microcode"
|
||||
- "#"
|
||||
- [(set_attr "type" "delayed_compare,compare,compare,compare,compare,compare")
|
||||
- (set_attr "length" "8,8,8,8,8,12")])
|
||||
(define_split
|
||||
[(set (match_operand:CC 3 "cc_reg_not_micro_cr0_operand" "")
|
||||
(compare:CC (and:DI (match_operand:DI 1 "gpc_reg_operand" "")
|
||||
@@ -7915,7 +7877,7 @@
|
||||
|
||||
(define_insn "*booldi3_internal3"
|
||||
[(set (match_operand:CC 3 "cc_reg_operand" "=x,?y")
|
||||
- (compare:CC (match_operator:DI 4 "boolean_operator"
|
||||
+ (compare:CC (match_operator:DI 4 "boolean_or_operator"
|
||||
[(match_operand:DI 1 "gpc_reg_operand" "%r,r")
|
||||
(match_operand:DI 2 "gpc_reg_operand" "r,r")])
|
||||
(const_int 0)))
|
||||
--- gcc/testsuite/gcc.dg/pr39226.c.jj 2009-03-02 23:27:03.398459808 +0100
|
||||
+++ gcc/testsuite/gcc.dg/pr39226.c 2009-03-02 23:26:19.696462209 +0100
|
||||
@@ -0,0 +1,25 @@
|
||||
+/* PR target/39226 */
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-O2" } */
|
||||
+/* { dg-options "-O2 -mtune=cell -mminimal-toc" { target { powerpc*-*-* && lp64 } } } */
|
||||
+
|
||||
+struct A
|
||||
+{
|
||||
+ char *a;
|
||||
+ unsigned int b : 1;
|
||||
+ unsigned int c : 31;
|
||||
+};
|
||||
+
|
||||
+struct B
|
||||
+{
|
||||
+ struct A *d;
|
||||
+};
|
||||
+
|
||||
+void
|
||||
+foo (struct B *x, unsigned long y)
|
||||
+{
|
||||
+ if (x->d[y].c)
|
||||
+ return;
|
||||
+ if (x->d[y].b)
|
||||
+ x->d[y].a = 0;
|
||||
+}
|
@ -1,156 +0,0 @@
|
||||
2009-02-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR target/39240
|
||||
* calls.c (expand_call): Clear try_tail_call if caller and callee
|
||||
disagree in promotion of function return value.
|
||||
|
||||
* gcc.c-torture/execute/pr39240.c: New test.
|
||||
|
||||
--- gcc/calls.c.jj 2009-02-06 11:17:16.000000000 +0100
|
||||
+++ gcc/calls.c 2009-02-19 13:36:41.000000000 +0100
|
||||
@@ -2333,6 +2333,37 @@ expand_call (tree exp, rtx target, int i
|
||||
|| !lang_hooks.decls.ok_for_sibcall (fndecl))
|
||||
try_tail_call = 0;
|
||||
|
||||
+ /* Check if caller and callee disagree in promotion of function
|
||||
+ return value. */
|
||||
+ if (try_tail_call)
|
||||
+ {
|
||||
+ enum machine_mode caller_mode, caller_promoted_mode;
|
||||
+ enum machine_mode callee_mode, callee_promoted_mode;
|
||||
+ int caller_unsignedp, callee_unsignedp;
|
||||
+ tree caller_res = DECL_RESULT (current_function_decl);
|
||||
+
|
||||
+ caller_unsignedp = TYPE_UNSIGNED (TREE_TYPE (caller_res));
|
||||
+ caller_mode = caller_promoted_mode = DECL_MODE (caller_res);
|
||||
+ callee_unsignedp = TYPE_UNSIGNED (TREE_TYPE (funtype));
|
||||
+ callee_mode = callee_promoted_mode = TYPE_MODE (TREE_TYPE (funtype));
|
||||
+ if (targetm.calls.promote_function_return (TREE_TYPE (current_function_decl)))
|
||||
+ caller_promoted_mode
|
||||
+ = promote_mode (TREE_TYPE (caller_res), caller_mode,
|
||||
+ &caller_unsignedp, 1);
|
||||
+ if (targetm.calls.promote_function_return (funtype))
|
||||
+ callee_promoted_mode
|
||||
+ = promote_mode (TREE_TYPE (funtype), callee_mode,
|
||||
+ &callee_unsignedp, 1);
|
||||
+ if (caller_mode != VOIDmode
|
||||
+ && (caller_promoted_mode != callee_promoted_mode
|
||||
+ || ((caller_mode != caller_promoted_mode
|
||||
+ || callee_mode != callee_promoted_mode)
|
||||
+ && (caller_unsignedp != callee_unsignedp
|
||||
+ || GET_MODE_BITSIZE (caller_mode)
|
||||
+ < GET_MODE_BITSIZE (callee_mode)))))
|
||||
+ try_tail_call = 0;
|
||||
+ }
|
||||
+
|
||||
/* Ensure current function's preferred stack boundary is at least
|
||||
what we need. Stack alignment may also increase preferred stack
|
||||
boundary. */
|
||||
--- gcc/testsuite/gcc.c-torture/execute/pr39240.c.jj 2009-02-19 13:38:23.000000000 +0100
|
||||
+++ gcc/testsuite/gcc.c-torture/execute/pr39240.c 2009-02-19 13:39:14.000000000 +0100
|
||||
@@ -0,0 +1,105 @@
|
||||
+/* PR target/39240 */
|
||||
+
|
||||
+extern void abort (void);
|
||||
+
|
||||
+__attribute__ ((noinline))
|
||||
+static int foo1 (int x)
|
||||
+{
|
||||
+ return x;
|
||||
+}
|
||||
+
|
||||
+__attribute__ ((noinline))
|
||||
+unsigned int bar1 (int x)
|
||||
+{
|
||||
+ return foo1 (x + 6);
|
||||
+}
|
||||
+
|
||||
+volatile unsigned long l1 = (unsigned int) -4;
|
||||
+
|
||||
+__attribute__ ((noinline))
|
||||
+static short int foo2 (int x)
|
||||
+{
|
||||
+ return x;
|
||||
+}
|
||||
+
|
||||
+__attribute__ ((noinline))
|
||||
+unsigned short int bar2 (int x)
|
||||
+{
|
||||
+ return foo2 (x + 6);
|
||||
+}
|
||||
+
|
||||
+volatile unsigned long l2 = (unsigned short int) -4;
|
||||
+
|
||||
+__attribute__ ((noinline))
|
||||
+static signed char foo3 (int x)
|
||||
+{
|
||||
+ return x;
|
||||
+}
|
||||
+
|
||||
+__attribute__ ((noinline))
|
||||
+unsigned char bar3 (int x)
|
||||
+{
|
||||
+ return foo3 (x + 6);
|
||||
+}
|
||||
+
|
||||
+volatile unsigned long l3 = (unsigned char) -4;
|
||||
+
|
||||
+__attribute__ ((noinline))
|
||||
+static unsigned int foo4 (int x)
|
||||
+{
|
||||
+ return x;
|
||||
+}
|
||||
+
|
||||
+__attribute__ ((noinline))
|
||||
+int bar4 (int x)
|
||||
+{
|
||||
+ return foo4 (x + 6);
|
||||
+}
|
||||
+
|
||||
+volatile unsigned long l4 = (int) -4;
|
||||
+
|
||||
+__attribute__ ((noinline))
|
||||
+static unsigned short int foo5 (int x)
|
||||
+{
|
||||
+ return x;
|
||||
+}
|
||||
+
|
||||
+__attribute__ ((noinline))
|
||||
+short int bar5 (int x)
|
||||
+{
|
||||
+ return foo5 (x + 6);
|
||||
+}
|
||||
+
|
||||
+volatile unsigned long l5 = (short int) -4;
|
||||
+
|
||||
+__attribute__ ((noinline))
|
||||
+static unsigned char foo6 (int x)
|
||||
+{
|
||||
+ return x;
|
||||
+}
|
||||
+
|
||||
+__attribute__ ((noinline))
|
||||
+signed char bar6 (int x)
|
||||
+{
|
||||
+ return foo6 (x + 6);
|
||||
+}
|
||||
+
|
||||
+volatile unsigned long l6 = (signed char) -4;
|
||||
+
|
||||
+int
|
||||
+main (void)
|
||||
+{
|
||||
+ if (bar1 (-10) != l1)
|
||||
+ abort ();
|
||||
+ if (bar2 (-10) != l2)
|
||||
+ abort ();
|
||||
+ if (bar3 (-10) != l3)
|
||||
+ abort ();
|
||||
+ if (bar4 (-10) != l4)
|
||||
+ abort ();
|
||||
+ if (bar5 (-10) != l5)
|
||||
+ abort ();
|
||||
+ if (bar6 (-10) != l6)
|
||||
+ abort ();
|
||||
+ return 0;
|
||||
+}
|
108
gcc44-pr39358.patch
Normal file
108
gcc44-pr39358.patch
Normal file
@ -0,0 +1,108 @@
|
||||
2009-03-04 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/39358
|
||||
* tree-ssa-structalias.c (do_sd_constraint): Fix check for
|
||||
escaped_id and callused_id.
|
||||
(solve_graph): Likewise.
|
||||
|
||||
* g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C: New testcase.
|
||||
* g++.dg/warn/Wstrict-aliasing-bogus-escape-3.C: Likewise.
|
||||
|
||||
--- gcc/tree-ssa-structalias.c (revision 144601)
|
||||
+++ gcc/tree-ssa-structalias.c (revision 144602)
|
||||
@@ -1524,8 +1524,8 @@ do_sd_constraint (constraint_graph_t gra
|
||||
of a variable can also reach all other fields of the variable
|
||||
we simply have to expand the solution to contain all sub-fields
|
||||
if one sub-field is contained. */
|
||||
- if (c->rhs.var == escaped_id
|
||||
- || c->rhs.var == callused_id)
|
||||
+ if (c->rhs.var == find (escaped_id)
|
||||
+ || c->rhs.var == find (callused_id))
|
||||
{
|
||||
bitmap vars = NULL;
|
||||
/* In a first pass record all variables we need to add all
|
||||
@@ -1594,9 +1594,10 @@ do_sd_constraint (constraint_graph_t gra
|
||||
/* Merging the solution from ESCAPED needlessly increases
|
||||
the set. Use ESCAPED as representative instead.
|
||||
Same for CALLUSED. */
|
||||
- else if (get_varinfo (t)->id == escaped_id
|
||||
- || get_varinfo (t)->id == callused_id)
|
||||
- flag |= bitmap_set_bit (sol, get_varinfo (t)->id);
|
||||
+ else if (get_varinfo (t)->id == find (escaped_id))
|
||||
+ flag |= bitmap_set_bit (sol, escaped_id);
|
||||
+ else if (get_varinfo (t)->id == find (callused_id))
|
||||
+ flag |= bitmap_set_bit (sol, callused_id);
|
||||
else if (add_graph_edge (graph, lhs, t))
|
||||
flag |= bitmap_ior_into (sol, get_varinfo (t)->solution);
|
||||
}
|
||||
@@ -2516,8 +2517,8 @@ solve_graph (constraint_graph_t graph)
|
||||
|
||||
if (!solution_empty
|
||||
/* Do not propagate the ESCAPED/CALLUSED solutions. */
|
||||
- && i != escaped_id
|
||||
- && i != callused_id)
|
||||
+ && i != find (escaped_id)
|
||||
+ && i != find (callused_id))
|
||||
{
|
||||
bitmap_iterator bi;
|
||||
|
||||
--- gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C (revision 0)
|
||||
+++ gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C (revision 144602)
|
||||
@@ -0,0 +1,19 @@
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-O2 -Wstrict-aliasing" } */
|
||||
+
|
||||
+#include<list>
|
||||
+
|
||||
+struct A
|
||||
+{
|
||||
+ virtual ~A();
|
||||
+};
|
||||
+
|
||||
+A* foo();
|
||||
+
|
||||
+void bar(std::list<int> x)
|
||||
+{
|
||||
+ std::list<int> y = x;
|
||||
+ if (*y.rbegin())
|
||||
+ delete foo();
|
||||
+}
|
||||
+
|
||||
--- gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-3.C (revision 0)
|
||||
+++ gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-3.C (revision 144602)
|
||||
@@ -0,0 +1,35 @@
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-O2 -Wstrict-aliasing" } */
|
||||
+
|
||||
+struct Node_base {};
|
||||
+
|
||||
+struct Node : Node_base
|
||||
+{
|
||||
+ int data;
|
||||
+};
|
||||
+
|
||||
+struct List
|
||||
+{
|
||||
+ Node_base node, *prev;
|
||||
+
|
||||
+ List() : prev(&node) { xyz(); }
|
||||
+
|
||||
+ void xyz();
|
||||
+
|
||||
+ int back() { return static_cast<Node*>(prev)->data; }
|
||||
+};
|
||||
+
|
||||
+struct A
|
||||
+{
|
||||
+ virtual ~A();
|
||||
+};
|
||||
+
|
||||
+A* foo();
|
||||
+
|
||||
+void bar()
|
||||
+{
|
||||
+ List y;
|
||||
+ if (y.back())
|
||||
+ delete foo();
|
||||
+}
|
||||
+
|
Loading…
Reference in New Issue
Block a user