@@ -38,7 +38,6 @@ internal class IfElseAsmGen(private val program: PtProgram,
3838 // use a BIT instruction to test for bit 7 or 6 set/clear
3939 val (testBitSet, variable, bitmask) = useBIT
4040 return translateIfBIT(stmt, jumpAfterIf, testBitSet, variable, bitmask)
41- return
4241 }
4342
4443 val rightDt = compareCond.right.type
@@ -87,13 +86,15 @@ internal class IfElseAsmGen(private val program: PtProgram,
8786 if (testForBitSet) {
8887 if (jumpAfterIf!= null ) {
8988 val target = asmgen.getJumpTarget(jumpAfterIf)
89+ require(! target.indexedX)
9090 branch(" bmi" , target)
9191 }
9292 else
9393 translateIfElseBodies(" bpl" , ifElse)
9494 } else {
9595 if (jumpAfterIf!= null ) {
9696 val target = asmgen.getJumpTarget(jumpAfterIf)
97+ require(! target.indexedX)
9798 branch(" bpl" , target)
9899 }
99100 else
@@ -107,13 +108,15 @@ internal class IfElseAsmGen(private val program: PtProgram,
107108 if (testForBitSet) {
108109 if (jumpAfterIf!= null ) {
109110 val target = asmgen.getJumpTarget(jumpAfterIf)
111+ require(! target.indexedX)
110112 branch(" bvs" , target)
111113 }
112114 else
113115 translateIfElseBodies(" bvc" , ifElse)
114116 } else {
115117 if (jumpAfterIf!= null ) {
116118 val target = asmgen.getJumpTarget(jumpAfterIf)
119+ require(! target.indexedX)
117120 branch(" bvc" , target)
118121 }
119122 else
@@ -172,9 +175,8 @@ internal class IfElseAsmGen(private val program: PtProgram,
172175 asmgen.out (" $falseBranch +" )
173176 if (target.needsExpressionEvaluation)
174177 target = asmgen.getJumpTarget(jump)
175- asmgen.out ("""
176- jmp (${target.asmLabel} )
177- +""" )
178+ asmgen.jmp(target.asmLabel, target.indirect, target.indexedX)
179+ asmgen.out (" +" )
178180 } else {
179181 require(! target.needsExpressionEvaluation)
180182 asmgen.out (" $branchInstr ${target.asmLabel} " )
@@ -287,6 +289,7 @@ internal class IfElseAsmGen(private val program: PtProgram,
287289 asmgen.out (" bmi + | beq +" )
288290 if (target.needsExpressionEvaluation)
289291 target = asmgen.getJumpTarget(jumpAfterIf)
292+ require(! target.indexedX)
290293 asmgen.out ("""
291294 jmp (${target.asmLabel} )
292295+""" )
@@ -354,6 +357,7 @@ internal class IfElseAsmGen(private val program: PtProgram,
354357 asmgen.out (" bmi + | bne ++" )
355358 if (target.needsExpressionEvaluation)
356359 target = asmgen.getJumpTarget(jumpAfterIf)
360+ require(! target.indexedX)
357361 asmgen.out ("""
358362+ jmp (${target.asmLabel} )
359363+""" )
@@ -435,6 +439,7 @@ internal class IfElseAsmGen(private val program: PtProgram,
435439 asmgen.out (" bcc + | beq +" )
436440 if (target.needsExpressionEvaluation)
437441 target = asmgen.getJumpTarget(jumpAfterIf)
442+ require(! target.indexedX)
438443 asmgen.out ("""
439444 jmp (${target.asmLabel} )
440445+""" )
@@ -536,6 +541,7 @@ internal class IfElseAsmGen(private val program: PtProgram,
536541+ bpl +""" )
537542 if (target.needsExpressionEvaluation)
538543 target = asmgen.getJumpTarget(jump)
544+ require(! target.indexedX)
539545 asmgen.out ("""
540546 jmp (${target.asmLabel} )
541547+""" )
@@ -591,6 +597,7 @@ internal class IfElseAsmGen(private val program: PtProgram,
591597 bcs +""" )
592598 if (target.needsExpressionEvaluation)
593599 target = asmgen.getJumpTarget(jump)
600+ require(! target.indexedX)
594601 asmgen.out ("""
595602_jump jmp (${target.asmLabel} )
596603+""" )
@@ -668,6 +675,7 @@ _jump jmp (${target.asmLabel})
668675+ bpl +""" )
669676 if (target.needsExpressionEvaluation)
670677 target = asmgen.getJumpTarget(jump)
678+ require(! target.indexedX)
671679 asmgen.out ("""
672680 jmp (${target.asmLabel} )
673681+""" )
@@ -722,6 +730,7 @@ _jump jmp (${target.asmLabel})
722730 bcc +""" )
723731 if (target.needsExpressionEvaluation)
724732 target = asmgen.getJumpTarget(jump)
733+ require(! target.indexedX)
725734 asmgen.out ("""
726735 jmp (${target.asmLabel} )
727736+""" )
@@ -830,6 +839,7 @@ _jump jmp (${target.asmLabel})
830839 bne ++""" )
831840 if (target.needsExpressionEvaluation)
832841 target = asmgen.getJumpTarget(jump)
842+ require(! target.indexedX)
833843 asmgen.out ("""
834844+ jmp (${target.asmLabel} )
835845+""" )
@@ -909,6 +919,7 @@ _jump jmp (${target.asmLabel})
909919 bne ++""" )
910920 if (target.needsExpressionEvaluation)
911921 target = asmgen.getJumpTarget(jump)
922+ require(! target.indexedX)
912923 asmgen.out ("""
913924+ jmp (${target.asmLabel} )
914925+""" )
@@ -974,6 +985,7 @@ _jump jmp (${target.asmLabel})
974985 beq ++""" )
975986 if (target.needsExpressionEvaluation)
976987 target = asmgen.getJumpTarget(jump)
988+ require(! target.indexedX)
977989 asmgen.out ("""
978990+ jmp (${target.asmLabel} )
979991+""" )
@@ -1054,6 +1066,7 @@ _jump jmp (${target.asmLabel})
10541066 beq ++""" )
10551067 if (target.needsExpressionEvaluation)
10561068 target = asmgen.getJumpTarget(jump)
1069+ require(! target.indexedX)
10571070 asmgen.out ("""
10581071+ jmp (${target.asmLabel} )
10591072+""" )
@@ -1197,6 +1210,7 @@ _jump jmp (${target.asmLabel})
11971210 beq ++""" )
11981211 if (target.needsExpressionEvaluation)
11991212 target = asmgen.getJumpTarget(jump)
1213+ require(! target.indexedX)
12001214 asmgen.out ("""
12011215+ jmp (${target.asmLabel} )
12021216+""" )
@@ -1249,6 +1263,7 @@ _jump jmp (${target.asmLabel})
12491263 bne +""" )
12501264 if (target.needsExpressionEvaluation)
12511265 target = asmgen.getJumpTarget(jump)
1266+ require(! target.indexedX)
12521267 asmgen.out ("""
12531268 jmp (${target.asmLabel} )
12541269+""" )
@@ -1303,6 +1318,7 @@ _jump jmp (${target.asmLabel})
13031318 beq ++""" )
13041319 if (target.needsExpressionEvaluation)
13051320 target = asmgen.getJumpTarget(jump)
1321+ require(! target.indexedX)
13061322 asmgen.out ("""
13071323+ jmp (${target.asmLabel} )
13081324+""" )
@@ -1362,6 +1378,7 @@ _jump jmp (${target.asmLabel})
13621378 bne +""" )
13631379 if (target.needsExpressionEvaluation)
13641380 target = asmgen.getJumpTarget(jump)
1381+ require(! target.indexedX)
13651382 asmgen.out ("""
13661383 jmp (${target.asmLabel} )
13671384+""" )
@@ -1424,6 +1441,7 @@ _jump jmp (${target.asmLabel})
14241441 beq ++""" )
14251442 if (target.needsExpressionEvaluation)
14261443 target = asmgen.getJumpTarget(jump)
1444+ require(! target.indexedX)
14271445 asmgen.out ("""
14281446+ jmp (${target.asmLabel} )
14291447+""" )
@@ -1482,6 +1500,7 @@ _jump jmp (${target.asmLabel})
14821500 bne +""" )
14831501 if (target.needsExpressionEvaluation)
14841502 target = asmgen.getJumpTarget(jump)
1503+ require(! target.indexedX)
14851504 asmgen.out ("""
14861505 jmp (${target.asmLabel} )
14871506+""" )
0 commit comments