diff options
author | Richard Guenther <rguenther@suse.de> | 2009-04-29 10:37:14 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2009-04-29 10:37:14 +0000 |
commit | 3a19701a09db9a65dd41b6085e4a445d350b2a87 (patch) | |
tree | 6399c7826c0f616a3f2f2289039d49d7cd482312 | |
parent | 9ddffe321a71a66a972b68497ecccaa1df2c6c4f (diff) | |
download | gcc-3a19701a09db9a65dd41b6085e4a445d350b2a87.zip gcc-3a19701a09db9a65dd41b6085e4a445d350b2a87.tar.gz gcc-3a19701a09db9a65dd41b6085e4a445d350b2a87.tar.bz2 |
tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue parameter.
2009-04-29 Richard Guenther <rguenther@suse.de>
* tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
parameter. Allow invariants as base if !require_lvalue.
(verify_gimple_assign_single): Adjust.
From-SVN: r146947
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/tree-cfg.c | 14 |
2 files changed, 14 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index be525c3..a6e64b9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2009-04-29 Richard Guenther <rguenther@suse.de> + + * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue + parameter. Allow invariants as base if !require_lvalue. + (verify_gimple_assign_single): Adjust. + 2009-04-29 Bernd Schmidt <bernd.schmidt@analog.com> * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro. diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index 78f82a2..0ef2fb9 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -3135,11 +3135,12 @@ verify_types_in_gimple_min_lval (tree expr) return false; } -/* Verify if EXPR is a valid GIMPLE reference expression. Returns true +/* Verify if EXPR is a valid GIMPLE reference expression. If + REQUIRE_LVALUE is true verifies it is an lvalue. Returns true if there is an error, otherwise false. */ static bool -verify_types_in_gimple_reference (tree expr) +verify_types_in_gimple_reference (tree expr, bool require_lvalue) { while (handled_component_p (expr)) { @@ -3211,7 +3212,8 @@ verify_types_in_gimple_reference (tree expr) expr = op; } - return verify_types_in_gimple_min_lval (expr); + return ((require_lvalue || !is_gimple_min_invariant (expr)) + && verify_types_in_gimple_min_lval (expr)); } /* Returns true if there is one pointer type in TYPE_POINTER_TO (SRC_OBJ) @@ -3747,7 +3749,7 @@ verify_gimple_assign_single (gimple stmt) } if (handled_component_p (lhs)) - res |= verify_types_in_gimple_reference (lhs); + res |= verify_types_in_gimple_reference (lhs, true); /* Special codes we cannot handle via their class. */ switch (rhs_code) @@ -3770,7 +3772,7 @@ verify_gimple_assign_single (gimple stmt) return true; } - return verify_types_in_gimple_reference (op); + return verify_types_in_gimple_reference (op, true); } /* tcc_reference */ @@ -3793,7 +3795,7 @@ verify_gimple_assign_single (gimple stmt) debug_generic_stmt (rhs1); return true; } - return res || verify_types_in_gimple_reference (rhs1); + return res || verify_types_in_gimple_reference (rhs1, false); /* tcc_constant */ case SSA_NAME: |