Commit 3c6cbf7a by Kai Tietz Committed by Kai Tietz

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
parent 2e7f5dc0
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:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment