Commit 1ad87b63 by Richard Kenner

(expand_assignment): Don't short circuit store_expr when TO is a

VAR_DECL since it needs special handling if promoted.

From-SVN: r5712
parent abaa26e5
......@@ -2399,8 +2399,14 @@ expand_assignment (to, from, want_value, suggest_reg)
call the function before we start to compute the lhs.
This is needed for correct code for cases such as
val = setjmp (buf) on machines where reference to val
requires loading up part of an address in a separate insn. */
if (TREE_CODE (from) == CALL_EXPR && ! aggregate_value_p (from))
requires loading up part of an address in a separate insn.
Don't do this if TO is a VAR_DECL whose DECL_RTL is REG since it might be
a promoted variable where the zero- or sign- extension needs to be done.
Handling this in the normal way is safe because no computation is done
before the call. */
if (TREE_CODE (from) == CALL_EXPR && ! aggregate_value_p (from)
&& ! (TREE_CODE (to) == VAR_DECL && GET_CODE (DECL_RTL (to)) == REG))
{
rtx value;
......
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