diff options
author | amylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-11-15 20:43:19 +0000 |
---|---|---|
committer | amylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-11-15 20:43:19 +0000 |
commit | 24f1afaf9e7817e141c689609876ad5af290b1fe (patch) | |
tree | d48df2bc00234de62bc2655193c0c14c472d9cf8 /gcc/function.c | |
parent | 4981783d0b56ef6948f3abca70b5387b93ddb0e4 (diff) | |
download | ppe42-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.c | 12 |
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); |