gimplify.c (gimplify_expr): Make sure operand is boolified.
2011-05-13 Kai Tietz <ktietz@redhat.com> * gimplify.c (gimplify_expr): Make sure operand is boolified. * tree-cfg.c (verify_gimple_assign_unary): Check for boolean compatible type for TRUTH_NOT_EXPR. From-SVN: r173732
This commit is contained in:
parent
2e7f5dc0e4
commit
3c6cbf7ad1
|
@ -1,3 +1,9 @@
|
|||
2011-05-13 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* gimplify.c (gimplify_expr): Make sure operand is boolified.
|
||||
* tree-cfg.c (verify_gimple_assign_unary): Check for boolean
|
||||
compatible type for TRUTH_NOT_EXPR.
|
||||
|
||||
2011-05-13 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* config/i386/i386.c (ix86_save_reg): Change return type to
|
||||
|
|
|
@ -6754,13 +6754,17 @@ gimplify_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p,
|
|||
}
|
||||
|
||||
case TRUTH_NOT_EXPR:
|
||||
if (TREE_TYPE (*expr_p) != boolean_type_node)
|
||||
{
|
||||
tree type = TREE_TYPE (*expr_p);
|
||||
*expr_p = fold_convert (type, gimple_boolify (*expr_p));
|
||||
ret = GS_OK;
|
||||
break;
|
||||
}
|
||||
{
|
||||
tree org_type = TREE_TYPE (*expr_p);
|
||||
|
||||
*expr_p = gimple_boolify (*expr_p);
|
||||
if (org_type != boolean_type_node)
|
||||
{
|
||||
*expr_p = fold_convert (org_type, *expr_p);
|
||||
ret = GS_OK;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ret = gimplify_expr (&TREE_OPERAND (*expr_p, 0), pre_p, post_p,
|
||||
is_gimple_val, fb_rvalue);
|
||||
|
|
|
@ -3342,6 +3342,15 @@ verify_gimple_assign_unary (gimple stmt)
|
|||
return false;
|
||||
|
||||
case TRUTH_NOT_EXPR:
|
||||
if (!useless_type_conversion_p (boolean_type_node, rhs1_type))
|
||||
{
|
||||
error ("invalid types in truth not");
|
||||
debug_generic_expr (lhs_type);
|
||||
debug_generic_expr (rhs1_type);
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
|
||||
case NEGATE_EXPR:
|
||||
case ABS_EXPR:
|
||||
case BIT_NOT_EXPR:
|
||||
|
|
Loading…
Reference in New Issue