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) ...@@ -2399,8 +2399,14 @@ expand_assignment (to, from, want_value, suggest_reg)
call the function before we start to compute the lhs. call the function before we start to compute the lhs.
This is needed for correct code for cases such as This is needed for correct code for cases such as
val = setjmp (buf) on machines where reference to val val = setjmp (buf) on machines where reference to val
requires loading up part of an address in a separate insn. */ requires loading up part of an address in a separate insn.
if (TREE_CODE (from) == CALL_EXPR && ! aggregate_value_p (from))
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; 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