re PR rtl-optimization/9745 ([powerpc] miscompiles libmcrypt (alias problem during...
authorJames E Wilson <wilson@tuliptree.org>
Fri, 11 Jul 2003 06:44:40 +0000 (23:44 -0700)
committerJim Wilson <wilson@gcc.gnu.org>
Fri, 11 Jul 2003 06:44:40 +0000 (23:44 -0700)
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

gcc/ChangeLog
gcc/loop.c

index a902344..b175bdf 100644 (file)
@@ -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.
index b3c5517..fdb8995 100644 (file)
@@ -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);
 }