function.c (purge_addressof_1): Unshare rtl created by store_bit_field.

* function.c (purge_addressof_1): Unshare rtl created by
	store_bit_field.

From-SVN: r23670
This commit is contained in:
J"orn Rennecke 1998-11-15 20:43:19 +00:00 committed by Joern Rennecke
parent 8d1d76c1e3
commit de0dd9345e
2 changed files with 17 additions and 0 deletions

View File

@ -1,3 +1,8 @@
Mon Nov 16 04:41:41 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
* function.c (purge_addressof_1): Unshare rtl created by
store_bit_field.
Mon Nov 16 04:23:06 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
* regmove.c (regmove_optimize): Don't do anything but

View File

@ -2918,6 +2918,8 @@ purge_addressof_1 (loc, insn, force, store)
if (store)
{
rtx p;
start_sequence ();
val = gen_reg_rtx (GET_MODE (x));
if (! validate_change (insn, loc, val, 0))
@ -2936,6 +2938,16 @@ purge_addressof_1 (loc, insn, force, store)
val, GET_MODE_SIZE (GET_MODE (sub)),
GET_MODE_SIZE (GET_MODE (sub)));
/* Make sure to unshare any shared rtl that store_bit_field
might have created. */
for (p = get_insns(); p; p = NEXT_INSN (p))
{
reset_used_flags (PATTERN (p));
reset_used_flags (REG_NOTES (p));
reset_used_flags (LOG_LINKS (p));
}
unshare_all_rtl (get_insns ());
seq = gen_sequence ();
end_sequence ();
emit_insn_after (seq, insn);