[gcc: 1/2] 4.8.0-0.14
Jakub Jelinek
jakub at fedoraproject.org
Wed Feb 20 16:13:34 UTC 2013
commit 7c033670819a0c6c50a3edd7a8dade0649d847f2
Author: Jakub Jelinek <jakub at redhat.com>
Date: Wed Feb 20 17:12:51 2013 +0100
4.8.0-0.14
.gitignore | 1 +
gcc.spec | 38 +++++--
gcc48-asan-fix.patch | 196 -----------------------------
gcc48-pr54117.patch | 198 ------------------------------
gcc48-pr56258.patch | 30 +++++
gcc48-pr56265.patch | 132 ++++++++++++++++++++
gcc48-pr56405.patch | 36 ++++++
gcc48-unused-locals.patch | 297 +++++++++++++++++++++++++++++++++++++++++++++
sources | 2 +-
9 files changed, 525 insertions(+), 405 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 57f0aa9..7f5d205 100644
--- a/.gitignore
+++ b/.gitignore
@@ -62,3 +62,4 @@
/gcc-4.8.0-20130211.tar.bz2
/gcc-4.8.0-20130213.tar.bz2
/gcc-4.8.0-20130215.tar.bz2
+/gcc-4.8.0-20130220.tar.bz2
diff --git a/gcc.spec b/gcc.spec
index bfab4b8..8861297 100644
--- a/gcc.spec
+++ b/gcc.spec
@@ -1,9 +1,9 @@
-%global DATE 20130215
-%global SVNREV 196084
+%global DATE 20130220
+%global SVNREV 196173
%global gcc_version 4.8.0
# Note, gcc_release must be integer, if you want to add suffixes to
# %{release}, append them after %{gcc_release} on Release: line.
-%global gcc_release 0.13
+%global gcc_release 0.14
%global _unpackaged_files_terminate_build 0
%global multilib_64_archs sparc64 ppc64 s390x x86_64
%ifarch %{ix86} x86_64 ia64 ppc ppc64 alpha
@@ -102,7 +102,7 @@ BuildRequires: binutils >= 2.20.51.0.2-12
# -static is used several times.
BuildRequires: glibc-static
BuildRequires: zlib-devel, gettext, dejagnu, bison, flex, sharutils
-BuildRequires: texinfo, texinfo-tex
+BuildRequires: texinfo, texinfo-tex, /usr/bin/pod2man
BuildRequires: systemtap-sdt-devel >= 1.3
%if %{build_go}
BuildRequires: hostname
@@ -194,9 +194,11 @@ Patch10: gcc48-pr38757.patch
Patch11: gcc48-libstdc++-docs.patch
Patch12: gcc48-no-add-needed.patch
Patch13: gcc48-pr55608.patch
-Patch14: gcc48-asan-fix.patch
-Patch15: gcc48-pr54117.patch
-Patch16: gcc48-asan-speedup.patch
+Patch14: gcc48-asan-speedup.patch
+Patch15: gcc48-pr56258.patch
+Patch16: gcc48-pr56405.patch
+Patch17: gcc48-unused-locals.patch
+Patch18: gcc48-pr56265.patch
Patch1000: fastjar-0.97-segfault.patch
Patch1001: fastjar-0.97-len1.patch
@@ -749,9 +751,11 @@ package or when debugging this package.
%endif
%patch12 -p0 -b .no-add-needed~
%patch13 -p0 -b .pr55608~
-%patch14 -p0 -b .asan-fix~
-%patch15 -p0 -b .pr54117~
-%patch16 -p0 -b .asan-speedup~
+%patch14 -p0 -b .asan-speedup~
+%patch15 -p0 -b .pr56258~
+%patch16 -p0 -b .pr56405~
+%patch17 -p0 -b .unused-locals~
+%patch18 -p0 -b .pr56265~
%if 0%{?_enable_debug_packages}
cat > split-debuginfo.sh <<\EOF
@@ -2975,6 +2979,20 @@ fi
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/plugin
%changelog
+* Wed Feb 20 2013 Jakub Jelinek <jakub at redhat.com> 4.8.0-0.14
+- updated from trunk
+ - PRs asan/56330, c++/51242, c++/54276, c++/56373, libquadmath/56379,
+ middle-end/55889, middle-end/56349, pch/54117,
+ rtl-optimization/56348, target/52555, target/54685, target/56214,
+ target/56347, tree-optimization/55334, tree-optimization/56321,
+ tree-optimization/56350, tree-optimization/56366,
+ tree-optimization/56381, tree-optimization/56384,
+ tree-optimization/56396, tree-optimization/56398
+- add BuildRequires: /usr/bin/pod2man to fix man pages generation
+- don't ICE on bogus inline asm in kernel (#912857, PR inline-asm/56405)
+- fix up info page building with texinfo 5.0 (PR bootstrap/56258)
+- devirtualization ICE fix (PR tree-optimization/56265)
+
* Fri Feb 15 2013 Jakub Jelinek <jakub at redhat.com> 4.8.0-0.13
- updated from trunk
- PRs bootstrap/56327, c++/52026, c++/54922, c++/55003, c++/55220,
diff --git a/gcc48-pr56258.patch b/gcc48-pr56258.patch
new file mode 100644
index 0000000..f8af4c0
--- /dev/null
+++ b/gcc48-pr56258.patch
@@ -0,0 +1,30 @@
+2013-02-20 Jakub Jelinek <jakub at redhat.com>
+
+ PR bootstrap/56258
+ * doc/invoke.texi (-fdump-rtl-pro_and_epilogue): Use @item
+ instead of @itemx.
+
+ * gnat-style.texi (@title): Remove @hfill.
+
+--- gcc/ada/gnat-style.texi.jj 2012-08-10 12:57:33.000000000 +0200
++++ gcc/ada/gnat-style.texi 2013-02-20 13:06:03.042667300 +0100
+@@ -42,7 +42,7 @@ Texts. A copy of the license is include
+ @titlepage
+ @titlefont{GNAT Coding Style:}
+ @sp 1
+- at title @hfill A Guide for GNAT Developers
++ at title A Guide for GNAT Developers
+ @subtitle GNAT, The GNU Ada Compiler
+ @versionsubtitle
+ @author Ada Core Technologies, Inc.
+--- gcc/doc/invoke.texi.jj 2013-01-31 22:57:22.000000000 +0100
++++ gcc/doc/invoke.texi 2013-02-20 13:06:47.516405739 +0100
+@@ -5612,7 +5612,7 @@ Dump after the peephole pass.
+ @opindex fdump-rtl-postreload
+ Dump after post-reload optimizations.
+
+- at itemx -fdump-rtl-pro_and_epilogue
++ at item -fdump-rtl-pro_and_epilogue
+ @opindex fdump-rtl-pro_and_epilogue
+ Dump after generating the function prologues and epilogues.
+
diff --git a/gcc48-pr56265.patch b/gcc48-pr56265.patch
new file mode 100644
index 0000000..d651da6
--- /dev/null
+++ b/gcc48-pr56265.patch
@@ -0,0 +1,132 @@
+2013-02-20 Jan Hubicka <jh at suse.cz>
+
+ PR tree-optimization/56265
+ * ipa-prop.c (ipa_make_edge_direct_to_target): Fixup callgraph when target is
+ referenced for firs ttime.
+
+ * testsuite/g++.dg/ipa/devirt-11.C: New testcase.
+
+--- gcc/ipa-prop.c (revision 196176)
++++ gcc/ipa-prop.c (revision 196177)
+@@ -2100,10 +2100,65 @@ ipa_make_edge_direct_to_target (struct c
+ if (TREE_CODE (target) == ADDR_EXPR)
+ target = TREE_OPERAND (target, 0);
+ if (TREE_CODE (target) != FUNCTION_DECL)
+- return NULL;
++ {
++ target = canonicalize_constructor_val (target, NULL);
++ if (!target || TREE_CODE (target) != FUNCTION_DECL)
++ {
++ if (dump_file)
++ fprintf (dump_file, "ipa-prop: Discovered direct call to non-function"
++ " in (%s/%i).\n",
++ cgraph_node_name (ie->caller), ie->caller->uid);
++ return NULL;
++ }
++ }
+ callee = cgraph_get_node (target);
+- if (!callee)
+- return NULL;
++
++ /* Because may-edges are not explicitely represented and vtable may be external,
++ we may create the first reference to the object in the unit. */
++ if (!callee || callee->global.inlined_to)
++ {
++ struct cgraph_node *first_clone = callee;
++
++ /* We are better to ensure we can refer to it.
++ In the case of static functions we are out of luck, since we already
++ removed its body. In the case of public functions we may or may
++ not introduce the reference. */
++ if (!canonicalize_constructor_val (target, NULL)
++ || !TREE_PUBLIC (target))
++ {
++ if (dump_file)
++ fprintf (dump_file, "ipa-prop: Discovered call to a known target "
++ "(%s/%i -> %s/%i) but can not refer to it. Giving up.\n",
++ xstrdup (cgraph_node_name (ie->caller)), ie->caller->uid,
++ xstrdup (cgraph_node_name (ie->callee)), ie->callee->uid);
++ return NULL;
++ }
++
++ /* Create symbol table node. Even if inline clone exists, we can not take
++ it as a target of non-inlined call. */
++ callee = cgraph_create_node (target);
++
++ /* OK, we previously inlined the function, then removed the offline copy and
++ now we want it back for external call. This can happen when devirtualizing
++ while inlining function called once that happens after extern inlined and
++ virtuals are already removed. In this case introduce the external node
++ and make it available for call. */
++ if (first_clone)
++ {
++ first_clone->clone_of = callee;
++ callee->clones = first_clone;
++ symtab_prevail_in_asm_name_hash ((symtab_node)callee);
++ symtab_insert_node_to_hashtable ((symtab_node)callee);
++ if (dump_file)
++ fprintf (dump_file, "ipa-prop: Introduced new external node "
++ "(%s/%i) and turned into root of the clone tree.\n",
++ xstrdup (cgraph_node_name (callee)), callee->uid);
++ }
++ else if (dump_file)
++ fprintf (dump_file, "ipa-prop: Introduced new external node "
++ "(%s/%i).\n",
++ xstrdup (cgraph_node_name (callee)), callee->uid);
++ }
+ ipa_check_create_node_params ();
+
+ /* We can not make edges to inline clones. It is bug that someone removed
+--- gcc/testsuite/g++.dg/ipa/devirt-11.C (revision 0)
++++ gcc/testsuite/g++.dg/ipa/devirt-11.C (revision 196177)
+@@ -0,0 +1,50 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -fdump-ipa-inline" } */
++int baz ();
++struct A
++{
++ virtual int fn2 () = 0;
++ virtual int *fn3 ();
++ double *fn4 ();
++ int fn5 (int);
++ template <class T>
++ void fn1 (A &, T) { fn3 (); fn4 (); fn2 (); }
++};
++struct B : A
++{
++ int fn2 () { return 6; }
++ void fn3 (int, double);
++ B (bool = true);
++ B (int, int);
++};
++template <typename T>
++void
++foo (B &x, A &y, A &z)
++{
++ y.fn2 ();
++ z.fn2 ();
++ int i = baz ();
++ int j = (y.fn3 ())[i];
++ x.fn3 (j, (y.fn4 ())[i] + (z.fn4 ())[z.fn5 (j)]);
++}
++inline B
++operator+ (A &y, A &z)
++{
++ B x;
++ foo<int> (x, y, z);
++ return x;
++}
++void
++bar ()
++{
++ B a, b, c (4, 0), d;
++ a.fn1 (b, .6);
++ baz ();
++ c + d;
++}
++/* While inlining function called once we should devirtualize a new call to fn2
++ and two to fn3. While doing so the new symbol for fn2 needs to be
++ introduced. */
++/* { dg-final { scan-ipa-dump-times "Discovered a virtual call to a known target" 3 "inline" } } */
++/* { dg-final { scan-ipa-dump-times "and turned into root of the clone tree" 1 "inline" } } */
++/* { dg-final { cleanup-ipa-dump "inline" } } */
diff --git a/gcc48-pr56405.patch b/gcc48-pr56405.patch
new file mode 100644
index 0000000..d1cddb1
--- /dev/null
+++ b/gcc48-pr56405.patch
@@ -0,0 +1,36 @@
+2013-02-20 Jakub Jelinek <jakub at redhat.com>
+
+ PR inline-asm/56405
+ * expr.c (expand_expr_real_1) <case TARGET_MEM_REF, MEM_REF>: Don't
+ use movmisalign or extract_bit_field for EXPAND_MEMORY modifier.
+
+ * gcc.c-torture/compile/pr56405.c: New test.
+
+--- gcc/expr.c.jj 2013-01-18 18:09:40.000000000 +0100
++++ gcc/expr.c 2013-02-20 10:29:34.513143634 +0100
+@@ -9551,6 +9551,7 @@ expand_expr_real_1 (tree exp, rtx target
+ set_mem_addr_space (temp, as);
+ align = get_object_alignment (exp);
+ if (modifier != EXPAND_WRITE
++ && modifier != EXPAND_MEMORY
+ && mode != BLKmode
+ && align < GET_MODE_ALIGNMENT (mode)
+ /* If the target does not have special handling for unaligned
+@@ -9639,6 +9640,7 @@ expand_expr_real_1 (tree exp, rtx target
+ if (TREE_THIS_VOLATILE (exp))
+ MEM_VOLATILE_P (temp) = 1;
+ if (modifier != EXPAND_WRITE
++ && modifier != EXPAND_MEMORY
+ && mode != BLKmode
+ && align < GET_MODE_ALIGNMENT (mode))
+ {
+--- gcc/testsuite/gcc.c-torture/compile/pr56405.c.jj 2013-02-20 10:32:17.807250979 +0100
++++ gcc/testsuite/gcc.c-torture/compile/pr56405.c 2013-02-20 10:32:46.963090873 +0100
+@@ -0,0 +1,7 @@
++/* PR inline-asm/56405 */
++
++void
++foo (void)
++{
++ asm volatile ("" : "+m" (*(volatile unsigned short *) 0x1001UL));
++}
diff --git a/gcc48-unused-locals.patch b/gcc48-unused-locals.patch
new file mode 100644
index 0000000..dff16de
--- /dev/null
+++ b/gcc48-unused-locals.patch
@@ -0,0 +1,297 @@
+2013-02-20 Richard Biener <rguenther at suse.de>
+
+ * tree-call-cdce.c (tree_call_cdce): Do not remove unused locals.
+ * tree-ssa-forwprop.c (ssa_forward_propagate_and_combine): Likewise.
+ * tree-ssa-dce.c (perform_tree_ssa_dce): Likewise.
+ * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Do
+ not return anything.
+ (rename_ssa_copies): Do not remove unused locals.
+ * tree-ssa-ccp.c (do_ssa_ccp): Likewise.
+ * tree-ssanames.c (pass_release_ssa_names): Remove unused
+ locals first.
+ * passes.c (execute_function_todo): Do not schedule unused locals
+ removal if cleanup_tree_cfg did something.
+ * tree-ssa-live.c (remove_unused_locals): Dump statistics
+ about the number of removed locals.
+
+ * gcc.dg/tree-ssa/forwprop-8.c: Adjust.
+
+--- gcc/tree-ssa-copyrename.c (revision 196173)
++++ gcc/tree-ssa-copyrename.c (revision 196174)
+@@ -113,7 +113,7 @@ static struct
+ /* Coalesce the partitions in MAP representing VAR1 and VAR2 if it is valid.
+ Choose a representative for the partition, and send debug info to DEBUG. */
+
+-static bool
++static void
+ copy_rename_partition_coalesce (var_map map, tree var1, tree var2, FILE *debug)
+ {
+ int p1, p2, p3;
+@@ -146,7 +146,7 @@ copy_rename_partition_coalesce (var_map
+ {
+ if (debug)
+ fprintf (debug, " : Already coalesced.\n");
+- return false;
++ return;
+ }
+
+ rep1 = partition_to_var (map, p1);
+@@ -154,7 +154,7 @@ copy_rename_partition_coalesce (var_map
+ root1 = SSA_NAME_VAR (rep1);
+ root2 = SSA_NAME_VAR (rep2);
+ if (!root1 && !root2)
+- return false;
++ return;
+
+ /* Don't coalesce if one of the variables occurs in an abnormal PHI. */
+ abnorm = (SSA_NAME_OCCURS_IN_ABNORMAL_PHI (rep1)
+@@ -163,7 +163,7 @@ copy_rename_partition_coalesce (var_map
+ {
+ if (debug)
+ fprintf (debug, " : Abnormal PHI barrier. No coalesce.\n");
+- return false;
++ return;
+ }
+
+ /* Partitions already have the same root, simply merge them. */
+@@ -172,7 +172,7 @@ copy_rename_partition_coalesce (var_map
+ p1 = partition_union (map->var_partition, p1, p2);
+ if (debug)
+ fprintf (debug, " : Same root, coalesced --> P%d.\n", p1);
+- return false;
++ return;
+ }
+
+ /* Never attempt to coalesce 2 different parameters. */
+@@ -181,7 +181,7 @@ copy_rename_partition_coalesce (var_map
+ {
+ if (debug)
+ fprintf (debug, " : 2 different PARM_DECLS. No coalesce.\n");
+- return false;
++ return;
+ }
+
+ if ((root1 && TREE_CODE (root1) == RESULT_DECL)
+@@ -189,7 +189,7 @@ copy_rename_partition_coalesce (var_map
+ {
+ if (debug)
+ fprintf (debug, " : One root a RESULT_DECL. No coalesce.\n");
+- return false;
++ return;
+ }
+
+ ign1 = !root1 || (TREE_CODE (root1) == VAR_DECL && DECL_IGNORED_P (root1));
+@@ -206,7 +206,7 @@ copy_rename_partition_coalesce (var_map
+ {
+ if (debug)
+ fprintf (debug, " : 2 different USER vars. No coalesce.\n");
+- return false;
++ return;
+ }
+ else
+ ign2 = true;
+@@ -220,7 +220,7 @@ copy_rename_partition_coalesce (var_map
+ {
+ if (debug)
+ fprintf (debug, " : 2 default defs. No coalesce.\n");
+- return false;
++ return;
+ }
+ else
+ {
+@@ -240,7 +240,7 @@ copy_rename_partition_coalesce (var_map
+ {
+ if (debug)
+ fprintf (debug, " : Choosen variable has no root. No coalesce.\n");
+- return false;
++ return;
+ }
+
+ /* Don't coalesce if the new chosen root variable would be read-only.
+@@ -253,7 +253,7 @@ copy_rename_partition_coalesce (var_map
+ {
+ if (debug)
+ fprintf (debug, " : Readonly variable. No coalesce.\n");
+- return false;
++ return;
+ }
+
+ /* Don't coalesce if the two variables aren't type compatible . */
+@@ -266,7 +266,7 @@ copy_rename_partition_coalesce (var_map
+ {
+ if (debug)
+ fprintf (debug, " : Incompatible types. No coalesce.\n");
+- return false;
++ return;
+ }
+
+ /* Merge the two partitions. */
+@@ -288,7 +288,6 @@ copy_rename_partition_coalesce (var_map
+ TDF_SLIM);
+ fprintf (debug, "\n");
+ }
+- return true;
+ }
+
+
+@@ -308,7 +307,6 @@ rename_ssa_copies (void)
+ gimple stmt, phi;
+ unsigned x;
+ FILE *debug;
+- bool updated = false;
+
+ memset (&stats, 0, sizeof (stats));
+
+@@ -330,7 +328,7 @@ rename_ssa_copies (void)
+ tree lhs = gimple_assign_lhs (stmt);
+ tree rhs = gimple_assign_rhs1 (stmt);
+
+- updated |= copy_rename_partition_coalesce (map, lhs, rhs, debug);
++ copy_rename_partition_coalesce (map, lhs, rhs, debug);
+ }
+ }
+ }
+@@ -358,8 +356,8 @@ rename_ssa_copies (void)
+ {
+ tree arg = PHI_ARG_DEF (phi, i);
+ if (TREE_CODE (arg) == SSA_NAME)
+- updated |= copy_rename_partition_coalesce (map, res, arg,
+- debug);
++ copy_rename_partition_coalesce (map, res, arg,
++ debug);
+ }
+ /* Else if all arguments are in the same partition try to merge
+ it with the result. */
+@@ -390,9 +388,9 @@ rename_ssa_copies (void)
+ }
+ }
+ if (all_p_same == 1)
+- updated |= copy_rename_partition_coalesce (map, res,
+- PHI_ARG_DEF (phi, 0),
+- debug);
++ copy_rename_partition_coalesce (map, res,
++ PHI_ARG_DEF (phi, 0),
++ debug);
+ }
+ }
+ }
+@@ -426,7 +424,7 @@ rename_ssa_copies (void)
+ statistics_counter_event (cfun, "copies coalesced",
+ stats.coalesced);
+ delete_var_map (map);
+- return updated ? TODO_remove_unused_locals : 0;
++ return 0;
+ }
+
+ /* Return true if copy rename is to be performed. */
+--- gcc/tree-ssa-ccp.c (revision 196173)
++++ gcc/tree-ssa-ccp.c (revision 196174)
+@@ -2108,7 +2108,7 @@ do_ssa_ccp (void)
+ ccp_initialize ();
+ ssa_propagate (ccp_visit_stmt, ccp_visit_phi_node);
+ if (ccp_finalize ())
+- todo = (TODO_cleanup_cfg | TODO_update_ssa | TODO_remove_unused_locals);
++ todo = (TODO_cleanup_cfg | TODO_update_ssa);
+ free_dominance_info (CDI_DOMINATORS);
+ return todo;
+ }
+--- gcc/tree-call-cdce.c (revision 196173)
++++ gcc/tree-call-cdce.c (revision 196174)
+@@ -898,11 +898,10 @@ tree_call_cdce (void)
+ /* As we introduced new control-flow we need to insert PHI-nodes
+ for the call-clobbers of the remaining call. */
+ mark_virtual_operands_for_renaming (cfun);
+- return (TODO_update_ssa | TODO_cleanup_cfg | TODO_ggc_collect
+- | TODO_remove_unused_locals);
++ return TODO_update_ssa;
+ }
+- else
+- return 0;
++
++ return 0;
+ }
+
+ static bool
+--- gcc/tree-ssa-live.c (revision 196173)
++++ gcc/tree-ssa-live.c (revision 196174)
+@@ -889,7 +889,10 @@ remove_unused_locals (void)
+ dstidx++;
+ }
+ if (dstidx != num)
+- cfun->local_decls->truncate (dstidx);
++ {
++ statistics_counter_event (cfun, "unused VAR_DECLs removed", num - dstidx);
++ cfun->local_decls->truncate (dstidx);
++ }
+
+ remove_unused_scope_block_p (DECL_INITIAL (current_function_decl));
+ clear_unused_block_pointer ();
+--- gcc/tree-ssa-forwprop.c (revision 196173)
++++ gcc/tree-ssa-forwprop.c (revision 196174)
+@@ -2936,7 +2936,6 @@ ssa_forward_propagate_and_combine (void)
+ && forward_propagate_addr_expr (lhs, rhs))
+ {
+ release_defs (stmt);
+- todoflags |= TODO_remove_unused_locals;
+ gsi_remove (&gsi, true);
+ }
+ else
+@@ -2961,7 +2960,6 @@ ssa_forward_propagate_and_combine (void)
+ off)))))
+ {
+ release_defs (stmt);
+- todoflags |= TODO_remove_unused_locals;
+ gsi_remove (&gsi, true);
+ }
+ else if (is_gimple_min_invariant (rhs))
+--- gcc/tree-ssa-dce.c (revision 196173)
++++ gcc/tree-ssa-dce.c (revision 196174)
+@@ -1607,10 +1607,8 @@ perform_tree_ssa_dce (bool aggressive)
+ free_edge_list (el);
+
+ if (something_changed)
+- return (TODO_update_ssa | TODO_cleanup_cfg | TODO_ggc_collect
+- | TODO_remove_unused_locals);
+- else
+- return 0;
++ return TODO_update_ssa | TODO_cleanup_cfg;
++ return 0;
+ }
+
+ /* Pass entry points. */
+--- gcc/passes.c (revision 196173)
++++ gcc/passes.c (revision 196174)
+@@ -1918,10 +1918,7 @@ execute_function_todo (void *data)
+ /* Always cleanup the CFG before trying to update SSA. */
+ if (flags & TODO_cleanup_cfg)
+ {
+- bool cleanup = cleanup_tree_cfg ();
+-
+- if (cleanup && (cfun->curr_properties & PROP_ssa))
+- flags |= TODO_remove_unused_locals;
++ cleanup_tree_cfg ();
+
+ /* When cleanup_tree_cfg merges consecutive blocks, it may
+ perform some simplistic propagation when removing single
+--- gcc/tree-ssanames.c (revision 196173)
++++ gcc/tree-ssanames.c (revision 196174)
+@@ -455,7 +455,7 @@ struct gimple_opt_pass pass_release_ssa_
+ PROP_ssa, /* properties_required */
+ 0, /* properties_provided */
+ 0, /* properties_destroyed */
+- 0, /* todo_flags_start */
+- 0 /* todo_flags_finish */
++ TODO_remove_unused_locals, /* todo_flags_start */
++ 0 /* todo_flags_finish */
+ }
+ };
+--- gcc/testsuite/gcc.dg/tree-ssa/forwprop-8.c (revision 196173)
++++ gcc/testsuite/gcc.dg/tree-ssa/forwprop-8.c (revision 196174)
+@@ -11,6 +11,5 @@ int foo(struct X *q)
+
+
+ /* We should have propragated &q->a into (*pointer). */
+-/* { dg-final { scan-tree-dump-times "pointer" 0 "forwprop1"} } */
+-/* { dg-final { scan-tree-dump "\\\[0\\\]" "forwprop1" } } */
++/* { dg-final { scan-tree-dump "q_.\\\(D\\\)\\\]\\\[0\\\];" "forwprop1" } } */
+ /* { dg-final { cleanup-tree-dump "forwprop1" } } */
diff --git a/sources b/sources
index 032d95c..73225ef 100644
--- a/sources
+++ b/sources
@@ -1,4 +1,4 @@
be78a47bd82523250eb3e91646db5b3d cloog-0.18.0.tar.gz
2659f09c2e43ef8b7d4406321753f1b2 fastjar-0.97.tar.gz
+d18630509460934dfd7163a884b63ecd gcc-4.8.0-20130220.tar.bz2
bce1586384d8635a76d2f017fb067cd2 isl-0.11.1.tar.bz2
-4fa6cbda8e98ae790212c6b7b00fb939 gcc-4.8.0-20130215.tar.bz2
More information about the scm-commits
mailing list