]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR tree-optimization/45071 (ICE: tree check: expected ssa_name, have integer_cst...
authorRichard Guenther <rguenther@suse.de>
Mon, 26 Jul 2010 12:48:37 +0000 (12:48 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Mon, 26 Jul 2010 12:48:37 +0000 (12:48 +0000)
2010-07-26  Richard Guenther  <rguenther@suse.de>

PR tree-optimization/45071
* tree-ssa-sccvn.c  (vn_reference_maybe_forwprop_address): Always
adjust op->opcode.

* gcc.dg/pr45071.c: New testcase.

From-SVN: r162534

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

index fcf57dfad502d90be1737afd50fda907ce3656fb..c03ebf90205d968cd711c906081dfb57fe612913 100644 (file)
@@ -1,3 +1,9 @@
+2010-07-26  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/45071
+       * tree-ssa-sccvn.c  (vn_reference_maybe_forwprop_address): Always
+       adjust op->opcode.
+
 2010-07-26  Naveen.H.S  <naveen.S@kpitcummins.com>
 
        * config/v850/lib1funcs.asm (save_r2_r31, return_r2_r31,
index b9de6e42ae4e5489d8e8d4d6a1c0d6081939d2f0..f1fde6887e5433fc99be7a031403bf75eaf17686 100644 (file)
@@ -1,3 +1,8 @@
+2010-07-26  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/45071
+       * gcc.dg/pr45071.c: New testcase.
+
 2010-07-26  Tobias Burnus  <burnus@net-b.de>
 
        PR fortran/45066
diff --git a/gcc/testsuite/gcc.dg/pr45071.c b/gcc/testsuite/gcc.dg/pr45071.c
new file mode 100644 (file)
index 0000000..d1715db
--- /dev/null
@@ -0,0 +1,34 @@
+/* { dg-do compile } */
+/* { dg-options "-O -ftree-vrp -ftree-vectorize" } */
+
+struct A
+{
+  int i;
+};
+
+struct B
+{
+  struct A a;
+};
+
+extern void f4 (void *);
+
+inline void
+f3 (struct A *a)
+{
+  f4 (a);
+  while (a->i);
+}
+
+static inline void
+f2 (struct B *b)
+{
+  f3 (&b->a);
+}
+
+void
+f1 ()
+{
+  struct B *b = 0;
+  f2 (b);
+}
index c99c8a8f3719bc945e3ea8bc62f53c66207f0dae..cfd22dbedba1837e99608a26cedda88a14a46622 100644 (file)
@@ -1050,11 +1050,9 @@ vn_reference_maybe_forwprop_address (VEC (vn_reference_op_s, heap) **ops,
   else
     mem_op->off = -1;
   if (TREE_CODE (op->op0) == SSA_NAME)
-    {
-      op->op0 = SSA_VAL (op->op0);
-      if (TREE_CODE (op->op0) != SSA_NAME)
-       op->opcode = TREE_CODE (op->op0);
-    }
+    op->op0 = SSA_VAL (op->op0);
+  if (TREE_CODE (op->op0) != SSA_NAME)
+    op->opcode = TREE_CODE (op->op0);
 
   /* And recurse.  */
   if (TREE_CODE (op->op0) == SSA_NAME)