]> git.sur5r.net Git - cc65/commitdiff
Fixed wrong insertion order that caused problems with labels.
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sat, 15 Aug 2009 16:45:02 +0000 (16:45 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sat, 15 Aug 2009 16:45:02 +0000 (16:45 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@4021 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/cc65/coptind.c

index 2ca307e370c817cdd6d1be686286e77dbbc1bd25..5172ba4705382080a9ebbbac8899c7b9f6d17cea 100644 (file)
 
 /* cc65 */
 #include "codeent.h"
+#include "coptind.h"
 #include "codeinfo.h"
 #include "codeopt.h"
 #include "error.h"
-#include "coptind.h"
 
 
 
@@ -640,7 +640,7 @@ unsigned OptJumpTarget2 (CodeSeg* S)
         /* Jump target insn, old and new */
         CodeEntry* T;
         CodeEntry* N;
-                           
+
         /* New jump label */
         CodeLabel* L;
 
@@ -1437,11 +1437,11 @@ unsigned OptTransfers3 (CodeSeg* S)
 
                     /* If we have a replacement store, change the code */
                     if (X) {
-                        /* Insert before the xfer insn */
-                        CS_InsertEntry (S, X, Xfer);
+                        /* Insert after the xfer insn */
+                        CS_InsertEntry (S, X, Xfer+1);
 
                         /* Remove the xfer instead */
-                        CS_DelEntry (S, Xfer+1);
+                        CS_DelEntry (S, Xfer);
 
                         /* Remove the final store */
                         CS_DelEntry (S, Store);
@@ -1595,11 +1595,11 @@ unsigned OptTransfers4 (CodeSeg* S)
 
                     /* If we have a replacement load, change the code */
                     if (X) {
-                        /* Insert before the xfer insn */
-                        CS_InsertEntry (S, X, Xfer);
+                        /* Insert after the xfer insn */
+                        CS_InsertEntry (S, X, Xfer+1);
 
                         /* Remove the xfer instead */
-                        CS_DelEntry (S, Xfer+1);
+                        CS_DelEntry (S, Xfer);
 
                         /* Remove the initial load */
                         CS_DelEntry (S, Load);
@@ -1703,12 +1703,12 @@ unsigned OptPushPop (CodeSeg* S)
                     !RegAUsed (S, I+1)                  &&
                     !MemAccess (S, Push+1, Pop-1, E->Arg)) {
 
-                    /* Insert a STA before the PHA */
+                    /* Insert a STA after the PHA */
                     X = NewCodeEntry (E->OPC, E->AM, E->Arg, E->JumpTo, E->LI);
-                    CS_InsertEntry (S, X, Push);
+                    CS_InsertEntry (S, X, Push+1);
 
                     /* Remove the PHA instead */
-                    CS_DelEntry (S, Push+1);
+                    CS_DelEntry (S, Push);
 
                     /* Remove the PLA/STA sequence */
                     CS_DelEntries (S, Pop, 2);