summaryrefslogtreecommitdiffstats
path: root/gcc/function.c
diff options
context:
space:
mode:
authoramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>1998-11-15 20:43:19 +0000
committeramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>1998-11-15 20:43:19 +0000
commit24f1afaf9e7817e141c689609876ad5af290b1fe (patch)
treed48df2bc00234de62bc2655193c0c14c472d9cf8 /gcc/function.c
parent4981783d0b56ef6948f3abca70b5387b93ddb0e4 (diff)
downloadppe42-gcc-24f1afaf9e7817e141c689609876ad5af290b1fe.tar.gz
ppe42-gcc-24f1afaf9e7817e141c689609876ad5af290b1fe.zip
* function.c (purge_addressof_1): Unshare rtl created by
store_bit_field. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@23670 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/function.c')
-rw-r--r--gcc/function.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/gcc/function.c b/gcc/function.c
index 44accb85a0d..3f4784896da 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -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);
OpenPOWER on IntegriCloud