]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR middle-end/30142 ([meta-bug] invalid gimple)
authorAndrew Pinski <pinskia@gmail.com>
Fri, 2 Jan 2009 00:14:47 +0000 (16:14 -0800)
committerAndrew Pinski <pinskia@gcc.gnu.org>
Fri, 2 Jan 2009 00:14:47 +0000 (16:14 -0800)
2009-01-01  Andrew Pinski  <pinskia@gmail.com>

        PR middle-end/30142
        * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
        case to be an error.

From-SVN: r143001

gcc/ChangeLog
gcc/tree-cfg.c

index 8cb8a92304ad35b3a4d848a612f60a31720a73d1..ad3343ab5f9d1b2c03d7ce28c94bbb7d52bf8cda 100644 (file)
@@ -1,3 +1,9 @@
+2009-01-01  Andrew Pinski  <pinskia@gmail.com>
+
+       PR middle-end/30142
+       * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
+       case to be an error.
+
 2009-01-02  Ben Elliston  <bje@au.ibm.com>
 
        * config/fp-bit.h (pack_d): Constify argument.
index 62a4e89fa7f9faea5e7e4abb448b582db203a8da..5551cace2dbb4601611779104d803330c06de6a8 100644 (file)
@@ -2805,6 +2805,15 @@ verify_expr (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED)
        }
       break;
 
+    case INDIRECT_REF:
+      x = TREE_OPERAND (t, 0);
+      if (!is_gimple_reg (x) && !is_gimple_min_invariant (x))
+       {
+         error ("Indirect reference's operand is not a register or a constant.");
+         return x;
+       }
+      break;
+
     case ASSERT_EXPR:
       x = fold (ASSERT_EXPR_COND (t));
       if (x == boolean_false_node)
@@ -2815,14 +2824,8 @@ verify_expr (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED)
       break;
 
     case MODIFY_EXPR:
-      x = TREE_OPERAND (t, 0);
-      if (TREE_CODE (x) == BIT_FIELD_REF
-         && is_gimple_reg (TREE_OPERAND (x, 0)))
-       {
-         error ("GIMPLE register modified with BIT_FIELD_REF");
-         return t;
-       }
-      break;
+      error ("MODIFY_EXPR not expected while having tuples.");
+      return x;
 
     case ADDR_EXPR:
       {