Commit f29369b9 by Richard Kenner

(store_expr): When storing promoted value, don't return MEM if address

contains target.

From-SVN: r10414
parent d22d5f34
...@@ -2785,8 +2785,11 @@ store_expr (exp, target, want_value) ...@@ -2785,8 +2785,11 @@ store_expr (exp, target, want_value)
temp = expand_expr (exp, NULL_RTX, VOIDmode, 0); temp = expand_expr (exp, NULL_RTX, VOIDmode, 0);
/* If TEMP is a volatile MEM and we want a result value, make /* If TEMP is a volatile MEM and we want a result value, make
the access now so it gets done only once. */ the access now so it gets done only once. Likewise if
if (GET_CODE (temp) == MEM && MEM_VOLATILE_P (temp) && want_value) it contains TARGET. */
if (GET_CODE (temp) == MEM && want_value
&& (MEM_VOLATILE_P (temp)
|| reg_mentioned_p (SUBREG_REG (target), XEXP (temp, 0))))
temp = copy_to_reg (temp); temp = copy_to_reg (temp);
/* If TEMP is a VOIDmode constant, use convert_modes to make /* If TEMP is a VOIDmode constant, use convert_modes to make
......
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