aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMichael Matz <matz@suse.de>2009-09-26 16:46:43 +0000
committerMichael Matz <matz@gcc.gnu.org>2009-09-26 16:46:43 +0000
commit0ffd2048ea67899080038ca4fba0387c6b9d2d3c (patch)
treefc0937d4c203e0e21e06fbed2a7077820564c6b4 /gcc
parent03b6f8a219d3d7149ec4a69d9d75342e494a67b9 (diff)
downloadgcc-0ffd2048ea67899080038ca4fba0387c6b9d2d3c.zip
gcc-0ffd2048ea67899080038ca4fba0387c6b9d2d3c.tar.gz
gcc-0ffd2048ea67899080038ca4fba0387c6b9d2d3c.tar.bz2
re PR lto/40758 ([LTO] ICE in partition_view_bitmap, at tree-ssa-live.c:331)
PR lto/40758 PR middle-end/41470 * tree-ssa-coalesce.c (coalesce_ssa_name): Add only SSA names that are mentioned in the body. testsuite/ * gcc.dg/pr41470.c: New test. From-SVN: r152203
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gcc.dg/pr41470.c18
-rw-r--r--gcc/tree-ssa-coalesce.c5
4 files changed, 35 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9e6e398..368899e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,12 @@
2009-09-26 Michael Matz <matz@suse.de>
+ PR lto/40758
+ PR middle-end/41470
+ * tree-ssa-coalesce.c (coalesce_ssa_name): Add only SSA names
+ that are mentioned in the body.
+
+2009-09-26 Michael Matz <matz@suse.de>
+
PR tree-optimization/41454
* tree-ssa-dom (stmts_to_rescan): Remove variable.
(tree_ssa_dominator_optimize): Don't allocate and free it.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 2bfffbe..5f7fdf1 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2009-09-26 Michael Matz <matz@suse.de>
+
+ PR lto/40758
+ PR middle-end/41470
+ * gcc.dg/pr41470.c: New test.
+
2009-09-26 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/array9.adb: New test.
diff --git a/gcc/testsuite/gcc.dg/pr41470.c b/gcc/testsuite/gcc.dg/pr41470.c
new file mode 100644
index 0000000..1c029b4
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr41470.c
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+/* { dg-options "-fexceptions" } */
+void *
+af (void *a)
+{
+ return a;
+}
+void
+bf (void)
+{
+ void *p;
+ {
+ int i = 1;
+ char v[i];
+ p = af (v);
+ }
+ cf (p);
+}
diff --git a/gcc/tree-ssa-coalesce.c b/gcc/tree-ssa-coalesce.c
index 0164eca..5841aa0 100644
--- a/gcc/tree-ssa-coalesce.c
+++ b/gcc/tree-ssa-coalesce.c
@@ -1377,7 +1377,10 @@ coalesce_ssa_name (void)
{
tree a = ssa_name (i);
- if (a && SSA_NAME_VAR (a) && !DECL_ARTIFICIAL (SSA_NAME_VAR (a)))
+ if (a
+ && SSA_NAME_VAR (a)
+ && !DECL_ARTIFICIAL (SSA_NAME_VAR (a))
+ && (!has_zero_uses (a) || !SSA_NAME_IS_DEFAULT_DEF (a)))
{
tree *slot = (tree *) htab_find_slot (ssa_name_hash, a, INSERT);