re PR tree-optimization/17051 (ICE: internal compiler error: verify_ssa failed.for...
authorRichard Henderson <rth@redhat.com>
Tue, 17 Aug 2004 23:33:46 +0000 (16:33 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Tue, 17 Aug 2004 23:33:46 +0000 (16:33 -0700)
        PR 17051
        * tree-sra.c (scalarize_use): Mark all v_defs for !is_output too.

From-SVN: r86158

gcc/ChangeLog
gcc/testsuite/gcc.c-torture/compile/20040817-1.c [new file with mode: 0644]
gcc/tree-sra.c

index 81822a29c97ad63250b2d645b7b677ae7c7fa959..3e3252d76337ab7f911fb73ecbe44a72ff3b5674 100644 (file)
@@ -1,3 +1,8 @@
+2004-08-17  Richard Henderson  <rth@redhat.com>
+
+       PR 17051
+       * tree-sra.c (scalarize_use): Mark all v_defs for !is_output too.
+
 2004-08-17  DJ Delorie  <dj@redhat.com>
 
        * doc/extend.texi: Document new xstormy16 attribute.
diff --git a/gcc/testsuite/gcc.c-torture/compile/20040817-1.c b/gcc/testsuite/gcc.c-torture/compile/20040817-1.c
new file mode 100644 (file)
index 0000000..158596c
--- /dev/null
@@ -0,0 +1,19 @@
+/* PR 17051: SRA failed to rename the VOPS properly.  */
+
+struct A
+{
+    char c, d;
+};
+
+void foo(struct A *p)
+{
+    struct A a = *p;
+
+    if (p->c)
+        bar1(a);
+    else
+    {
+        if (p) bar2(a,a.c);
+        bar3(a.c);
+    }
+}
index b3fa20c6c7767ef28a16c7656070399e3f47da10..e6b254c6145f495497c5ca5c275828ebc9b621a5 100644 (file)
@@ -1780,11 +1780,9 @@ scalarize_use (struct sra_elt *elt, tree *expr_p, block_stmt_iterator *bsi,
       generate_copy_inout (elt, is_output, generate_element_ref (elt), &list);
       if (list == NULL)
        return;
+      mark_all_v_defs (expr_first (list));
       if (is_output)
-       {
-         mark_all_v_defs (expr_first (list));
-         sra_insert_after (bsi, list);
-       }
+       sra_insert_after (bsi, list);
       else
        sra_insert_before (bsi, list);
     }