expr.c (store_expr): Don't optimize away load-store pair when either source or destination have a...

* expr.c (store_expr): Don't optimize away load-store pair
	when either source or destination have a side effect.

From-SVN: r21732
This commit is contained in:
J"orn Rennecke 1998-08-14 13:58:02 +00:00 committed by Joern Rennecke
parent 141dba98fd
commit 6036acbbf2
2 changed files with 9 additions and 1 deletions

View File

@ -1,3 +1,8 @@
Fri Aug 14 21:52:53 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
* expr.c (store_expr): Don't optimize away load-store pair
when either source or destination have a side effect.
Fri Aug 14 16:50:10 1998 John Carr <jfc@mit.edu> Fri Aug 14 16:50:10 1998 John Carr <jfc@mit.edu>
* genrecog.c (add_to_sequence): Fatal error if the modes of the operands * genrecog.c (add_to_sequence): Fatal error if the modes of the operands

View File

@ -3457,7 +3457,10 @@ store_expr (exp, target, want_value)
/* If value was not generated in the target, store it there. /* If value was not generated in the target, store it there.
Convert the value to TARGET's type first if nec. */ Convert the value to TARGET's type first if nec. */
if (! rtx_equal_p (temp, target) && TREE_CODE (exp) != ERROR_MARK) if ((! rtx_equal_p (temp, target)
|| side_effects_p (temp)
|| side_effects_p (target))
&& TREE_CODE (exp) != ERROR_MARK)
{ {
target = protect_from_queue (target, 1); target = protect_from_queue (target, 1);
if (GET_MODE (temp) != GET_MODE (target) if (GET_MODE (temp) != GET_MODE (target)