aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-cfg.c
diff options
context:
space:
mode:
authorAndrew Pinski <pinskia@gmail.com>2009-01-01 16:14:47 -0800
committerAndrew Pinski <pinskia@gcc.gnu.org>2009-01-01 16:14:47 -0800
commit26de0bcbbed0062d9b70b249dfafcfa8231cac7f (patch)
treebc977db082ef594688926075c4918b3105e174d3 /gcc/tree-cfg.c
parent7a7d8fab4cd57f072680cd11437056882c9d4b7e (diff)
downloadgcc-26de0bcbbed0062d9b70b249dfafcfa8231cac7f.zip
gcc-26de0bcbbed0062d9b70b249dfafcfa8231cac7f.tar.gz
gcc-26de0bcbbed0062d9b70b249dfafcfa8231cac7f.tar.bz2
re PR middle-end/30142 ([meta-bug] invalid gimple)
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
Diffstat (limited to 'gcc/tree-cfg.c')
-rw-r--r--gcc/tree-cfg.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index 62a4e89..5551cac 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -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:
{