diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/tree-cfg.c | 10 |
2 files changed, 15 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 747e45b..46a22ea 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2008-08-18 Richard Guenther <rguenther@suse.de> + + * tree-cfg.c (verify_types_in_gimple_assign): Verify copies + and loads have the correct types. + 2008-08-18 Manuel Lopez-Ibanez <manu@gcc.gnu.org> PR cpp/7263 diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index c1344a7..08920ae 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -3544,6 +3544,7 @@ verify_types_in_gimple_assign (gimple stmt) /* Generic handling via classes. */ switch (TREE_CODE_CLASS (rhs_code)) { + case tcc_exceptional: /* for SSA_NAME */ case tcc_unary: if (!useless_type_conversion_p (lhs_type, rhs1_type)) { @@ -3555,6 +3556,15 @@ verify_types_in_gimple_assign (gimple stmt) break; case tcc_reference: + /* All tcc_reference trees are GIMPLE_SINGLE_RHS. Verify that + no implicit type change happens here. */ + if (!useless_type_conversion_p (lhs_type, rhs1_type)) + { + error ("non-trivial conversion at assignment"); + debug_generic_expr (lhs); + debug_generic_expr (rhs1); + return true; + } return verify_types_in_gimple_reference (rhs1); case tcc_comparison: |