Commit 3bcb4e37 by Jason Merrill Committed by Jason Merrill

gimplify.c (gimplify_modify_expr): Don't force a temporary of an aggregate_value_p type.

        * gimplify.c (gimplify_modify_expr): Don't force a temporary
        of an aggregate_value_p type.

From-SVN: r82959
parent 3100d647
2004-06-10 Jason Merrill <jason@redhat.com>
* gimplify.c (gimplify_modify_expr): Don't force a temporary
of an aggregate_value_p type.
2004-06-10 Jeff Law <law@redhat.com> 2004-06-10 Jeff Law <law@redhat.com>
* fold-const.c (fold_inf_compare): Avoid creating non-gimple * fold-const.c (fold_inf_compare): Avoid creating non-gimple
......
...@@ -2493,12 +2493,16 @@ gimplify_modify_expr (tree *expr_p, tree *pre_p, tree *post_p, bool want_value) ...@@ -2493,12 +2493,16 @@ gimplify_modify_expr (tree *expr_p, tree *pre_p, tree *post_p, bool want_value)
FIXME this should be handled by the is_gimple_rhs predicate. */ FIXME this should be handled by the is_gimple_rhs predicate. */
if (TREE_CODE (*from_p) == CALL_EXPR if (aggregate_value_p (TREE_TYPE (*from_p), NULL_TREE))
|| (flag_non_call_exceptions && tree_could_trap_p (*from_p)) /* Don't force a temp of a large aggregate type; the copy could be
/* If we're dealing with a renamable type, either source or dest arbitrarily expensive. Instead we will generate a V_MAY_DEF for
must be a renamed variable. */ the assignment. */;
|| (is_gimple_reg_type (TREE_TYPE (*from_p)) else if (TREE_CODE (*from_p) == CALL_EXPR
&& !is_gimple_reg (*to_p))) || (flag_non_call_exceptions && tree_could_trap_p (*from_p))
/* If we're dealing with a renamable type, either source or dest
must be a renamed variable. */
|| (is_gimple_reg_type (TREE_TYPE (*from_p))
&& !is_gimple_reg (*to_p)))
gimplify_expr (from_p, pre_p, post_p, is_gimple_val, fb_rvalue); gimplify_expr (from_p, pre_p, post_p, is_gimple_val, fb_rvalue);
/* If the value being copied is of variable width, expose the length /* If the value being copied is of variable width, expose the length
......
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