4.4.0-0.22
This commit is contained in:
parent
a404f5d9fb
commit
00052d5c3a
@ -1,3 +1,3 @@
|
|||||||
fastjar-0.97.tar.gz
|
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
|
cloog-ppl-0.15.tar.gz
|
||||||
|
39
gcc.spec
39
gcc.spec
@ -1,9 +1,9 @@
|
|||||||
%define DATE 20090219
|
%define DATE 20090304
|
||||||
%define SVNREV 144300
|
%define SVNREV 144601
|
||||||
%define gcc_version 4.4.0
|
%define gcc_version 4.4.0
|
||||||
# Note, gcc_release must be integer, if you want to add suffixes to
|
# Note, gcc_release must be integer, if you want to add suffixes to
|
||||||
# %{release}, append them after %{gcc_release} on Release: line.
|
# %{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 _unpackaged_files_terminate_build 0
|
||||||
%define multilib_64_archs sparc64 ppc64 s390x x86_64
|
%define multilib_64_archs sparc64 ppc64 s390x x86_64
|
||||||
%define include_gappletviewer 1
|
%define include_gappletviewer 1
|
||||||
@ -35,7 +35,7 @@
|
|||||||
Summary: Various compilers (C, C++, Objective-C, Java, ...)
|
Summary: Various compilers (C, C++, Objective-C, Java, ...)
|
||||||
Name: gcc
|
Name: gcc
|
||||||
Version: %{gcc_version}
|
Version: %{gcc_version}
|
||||||
Release: %{gcc_release}.1
|
Release: %{gcc_release}
|
||||||
# libgcc, libgfortran, libmudflap and crtstuff have an exception which allows
|
# libgcc, libgfortran, libmudflap and crtstuff have an exception which allows
|
||||||
# linking it into any kind of programs or shared libraries without
|
# linking it into any kind of programs or shared libraries without
|
||||||
# restrictions.
|
# restrictions.
|
||||||
@ -144,7 +144,9 @@ Patch20: gcc44-libtool-no-rpath.patch
|
|||||||
Patch21: gcc44-cloog-dl.patch
|
Patch21: gcc44-cloog-dl.patch
|
||||||
Patch22: gcc44-raw-string.patch
|
Patch22: gcc44-raw-string.patch
|
||||||
Patch23: gcc44-pr39175.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
|
Patch1000: fastjar-0.97-segfault.patch
|
||||||
|
|
||||||
@ -432,7 +434,9 @@ which are required to compile with the GNAT.
|
|||||||
%endif
|
%endif
|
||||||
%patch22 -p0 -b .raw-string~
|
%patch22 -p0 -b .raw-string~
|
||||||
%patch23 -p0 -b .pr39175~
|
%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.
|
# This testcase doesn't compile.
|
||||||
rm libjava/testsuite/libjava.lang/PR35020*
|
rm libjava/testsuite/libjava.lang/PR35020*
|
||||||
@ -1767,8 +1771,27 @@ fi
|
|||||||
%doc rpm.doc/changelogs/libmudflap/ChangeLog*
|
%doc rpm.doc/changelogs/libmudflap/ChangeLog*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Tue Feb 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.4.0-0.21.1
|
* Wed Mar 4 2009 Jakub Jelinek <jakub@redhat.com> 4.4.0-0.22
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
|
- 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
|
* Thu Feb 19 2009 Jakub Jelinek <jakub@redhat.com> 4.4.0-0.21
|
||||||
- update from trunk
|
- 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();
|
||||||
|
+}
|
||||||
|
+
|
2
sources
2
sources
@ -1,3 +1,3 @@
|
|||||||
2659f09c2e43ef8b7d4406321753f1b2 fastjar-0.97.tar.gz
|
2659f09c2e43ef8b7d4406321753f1b2 fastjar-0.97.tar.gz
|
||||||
67b7f59414d468df2d68a8b6dadd0153 gcc-4.4.0-20090219.tar.bz2
|
75f2e4ab9717342f13146245d58fa160 gcc-4.4.0-20090304.tar.bz2
|
||||||
716b7a0823f96c9d02c1703a9c47d387 cloog-ppl-0.15.tar.gz
|
716b7a0823f96c9d02c1703a9c47d387 cloog-ppl-0.15.tar.gz
|
||||||
|
Loading…
Reference in New Issue
Block a user