diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 742e28abe1f..ca121a1c32d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2008-08-31 Richard Guenther + + * tree-cfg.c (verify_types_in_gimple_assign): Dump mismatched + types instead of operands. Re-instantiate verifying of + binary expression operands. + 2008-08-30 Jan Hubicka * fwprop.c (should_replace_address): Add speed attribute. diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index 39a04e94a5f..c485027354c 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -3549,8 +3549,25 @@ verify_types_in_gimple_assign (gimple stmt) if (!useless_type_conversion_p (lhs_type, rhs1_type)) { error ("non-trivial conversion at assignment"); - debug_generic_expr (lhs); - debug_generic_expr (rhs1); + debug_generic_expr (lhs_type); + debug_generic_expr (rhs1_type); + return true; + } + break; + + case tcc_binary: + if (!is_gimple_val (rhs1) || !is_gimple_val (rhs2)) + { + error ("invalid operands in binary expression"); + return true; + } + if (!useless_type_conversion_p (lhs_type, rhs1_type) + || !useless_type_conversion_p (lhs_type, rhs2_type)) + { + error ("type mismatch in binary expression"); + debug_generic_stmt (lhs_type); + debug_generic_stmt (rhs1_type); + debug_generic_stmt (rhs2_type); return true; } break; @@ -3561,8 +3578,8 @@ verify_types_in_gimple_assign (gimple stmt) if (!useless_type_conversion_p (lhs_type, rhs1_type)) { error ("non-trivial conversion at assignment"); - debug_generic_expr (lhs); - debug_generic_expr (rhs1); + debug_generic_expr (lhs_type); + debug_generic_expr (rhs1_type); return true; } return verify_types_in_gimple_reference (rhs1);