expr.c (emit_block_move): If X is readonly emit CLOBBER for it.

* expr.c (emit_block_move): If X is readonly emit CLOBBER for it.
	(clear_storage): Likewise, for OBJECT.

From-SVN: r46865
This commit is contained in:
Richard Kenner 2001-11-08 23:33:08 +00:00 committed by Richard Kenner
parent 99a2782c86
commit 66c60e6756
2 changed files with 17 additions and 0 deletions

View File

@ -1,3 +1,8 @@
Thu Nov 8 18:00:55 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* expr.c (emit_block_move): If X is readonly emit CLOBBER for it.
(clear_storage): Likewise, for OBJECT.
Thu Nov 8 16:23:51 2001 Jeffrey A Law (law@cygnus.com) Thu Nov 8 16:23:51 2001 Jeffrey A Law (law@cygnus.com)
* pa.c (emit_move_sequence): Fix SUBREG expression to * pa.c (emit_move_sequence): Fix SUBREG expression to

View File

@ -1812,6 +1812,12 @@ emit_block_move (x, y, size)
TREE_UNSIGNED (integer_type_node)), TREE_UNSIGNED (integer_type_node)),
TYPE_MODE (integer_type_node)); TYPE_MODE (integer_type_node));
#endif #endif
/* If we are initializing a readonly value, show the above call
clobbered it. Otherwise, a load from it may erroneously be hoisted
from a loop. */
if (RTX_UNCHANGING_P (x))
emit_insn (gen_rtx_CLOBBER (VOIDmode, x));
} }
return retval; return retval;
@ -2717,6 +2723,12 @@ clear_storage (object, size)
VOIDmode, 2, object, Pmode, size, VOIDmode, 2, object, Pmode, size,
TYPE_MODE (integer_type_node)); TYPE_MODE (integer_type_node));
#endif #endif
/* If we are initializing a readonly value, show the above call
clobbered it. Otherwise, a load from it may erroneously be
hoisted from a loop. */
if (RTX_UNCHANGING_P (object))
emit_insn (gen_rtx_CLOBBER (VOIDmode, object));
} }
} }