diff options
author | James E Wilson <wilson@tuliptree.org> | 2003-07-10 23:44:40 -0700 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 2003-07-10 23:44:40 -0700 |
commit | ac8354b1da5fff96c50a9f6a1f9a441c221f3a17 (patch) | |
tree | 61032f35b38631d7d417c84e9e248af1d2d2a114 /gcc | |
parent | c3c359327077fc9bb020ef9306dfbd7c4a483e39 (diff) | |
download | gcc-ac8354b1da5fff96c50a9f6a1f9a441c221f3a17.zip gcc-ac8354b1da5fff96c50a9f6a1f9a441c221f3a17.tar.gz gcc-ac8354b1da5fff96c50a9f6a1f9a441c221f3a17.tar.bz2 |
re PR rtl-optimization/9745 ([powerpc] miscompiles libmcrypt (alias problem during loop))
PR optimization/9745
* loop.c (loop_iv_add_mult_emit_before): Call loop_regs_update before
loop_insn_emit_before.
(loop_iv_add_mult_sink, loop_iv_add_mult_hoist): Likewise.
From-SVN: r69220
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/loop.c | 21 |
2 files changed, 19 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a902344..b175bdf 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2003-07-10 James E Wilson <wilson@tuliptree.org> + + PR optimization/9745 + * loop.c (loop_iv_add_mult_emit_before): Call loop_regs_update before + loop_insn_emit_before. + (loop_iv_add_mult_sink, loop_iv_add_mult_hoist): Likewise. + 2003-07-10 Zack Weinberg <zack@codesourcery.com> * cppcharset.c: Fix comment. @@ -7737,11 +7737,12 @@ loop_iv_add_mult_emit_before (const struct loop *loop, rtx b, rtx m, rtx a, update_reg_last_use (b, before_insn); update_reg_last_use (m, before_insn); - loop_insn_emit_before (loop, before_bb, before_insn, seq); - /* It is possible that the expansion created lots of new registers. - Iterate over the sequence we just created and record them all. */ + Iterate over the sequence we just created and record them all. We + must do this before inserting the sequence. */ loop_regs_update (loop, seq); + + loop_insn_emit_before (loop, before_bb, before_insn, seq); } @@ -7764,11 +7765,12 @@ loop_iv_add_mult_sink (const struct loop *loop, rtx b, rtx m, rtx a, rtx reg) update_reg_last_use (b, loop->sink); update_reg_last_use (m, loop->sink); - loop_insn_sink (loop, seq); - /* It is possible that the expansion created lots of new registers. - Iterate over the sequence we just created and record them all. */ + Iterate over the sequence we just created and record them all. We + must do this before inserting the sequence. */ loop_regs_update (loop, seq); + + loop_insn_sink (loop, seq); } @@ -7784,11 +7786,12 @@ loop_iv_add_mult_hoist (const struct loop *loop, rtx b, rtx m, rtx a, rtx reg) /* Use copy_rtx to prevent unexpected sharing of these rtx. */ seq = gen_add_mult (copy_rtx (b), copy_rtx (m), copy_rtx (a), reg); - loop_insn_hoist (loop, seq); - /* It is possible that the expansion created lots of new registers. - Iterate over the sequence we just created and record them all. */ + Iterate over the sequence we just created and record them all. We + must do this before inserting the sequence. */ loop_regs_update (loop, seq); + + loop_insn_hoist (loop, seq); } |