diff options
author | Andrew Pinski <pinskia@gmail.com> | 2009-01-01 16:14:47 -0800 |
---|---|---|
committer | Andrew Pinski <pinskia@gcc.gnu.org> | 2009-01-01 16:14:47 -0800 |
commit | 26de0bcbbed0062d9b70b249dfafcfa8231cac7f (patch) | |
tree | bc977db082ef594688926075c4918b3105e174d3 /gcc/tree-cfg.c | |
parent | 7a7d8fab4cd57f072680cd11437056882c9d4b7e (diff) | |
download | gcc-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.c | 19 |
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: { |