re PR lto/40758 ([LTO] ICE in partition_view_bitmap, at tree-ssa-live.c:331)
authorMichael Matz <matz@suse.de>
Sat, 26 Sep 2009 16:46:43 +0000 (16:46 +0000)
committerMichael Matz <matz@gcc.gnu.org>
Sat, 26 Sep 2009 16:46:43 +0000 (16:46 +0000)
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

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr41470.c [new file with mode: 0644]
gcc/tree-ssa-coalesce.c

index 9e6e398062464edb489297e33885070432829874..368899e1d5855e829eb961d262e02a33ebbc9e9d 100644 (file)
@@ -1,3 +1,10 @@
+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
index 2bfffbe834074aa85a6c770a78d07fe26fc1cbeb..5f7fdf13dd6dfee5f92ae373215b56ef1ab4e9cd 100644 (file)
@@ -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 (file)
index 0000000..1c029b4
--- /dev/null
@@ -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);
+}
index 0164eca7ddbd1842ac55a07d9f862c45c9007308..5841aa07522eae5d1cc800d3d167c649ff4d6b32 100644 (file)
@@ -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);