From 5196443b26036c6004598b8651b75337428d1f92 Mon Sep 17 00:00:00 2001 From: Irmen de Jong Date: Mon, 10 Apr 2023 12:11:43 +0200 Subject: [PATCH] fix --- .../src/prog8/codegen/intermediate/IRCodeGen.kt | 3 --- .../src/prog8/codegen/intermediate/IRPeepholeOptimizer.kt | 4 ++-- intermediate/src/prog8/intermediate/IRInstructions.kt | 5 ++--- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/codeGenIntermediate/src/prog8/codegen/intermediate/IRCodeGen.kt b/codeGenIntermediate/src/prog8/codegen/intermediate/IRCodeGen.kt index a5bccb256..455e7f82c 100644 --- a/codeGenIntermediate/src/prog8/codegen/intermediate/IRCodeGen.kt +++ b/codeGenIntermediate/src/prog8/codegen/intermediate/IRCodeGen.kt @@ -1014,9 +1014,6 @@ class IRCodeGen( else addInstr(result, IRInstruction(Opcode.BNE, irDtLeft, reg1 = tr.resultReg, immediate = 0, labelSymbol = goto.identifier!!.name), null) } else { - - // TODO use immediate branch instructions if the value is constant - val leftTr = expressionEval.translateExpression(condition.left) addToResult(result, leftTr, leftTr.resultReg, -1) val opcode: Opcode diff --git a/codeGenIntermediate/src/prog8/codegen/intermediate/IRPeepholeOptimizer.kt b/codeGenIntermediate/src/prog8/codegen/intermediate/IRPeepholeOptimizer.kt index 85cf24589..cd083df05 100644 --- a/codeGenIntermediate/src/prog8/codegen/intermediate/IRPeepholeOptimizer.kt +++ b/codeGenIntermediate/src/prog8/codegen/intermediate/IRPeepholeOptimizer.kt @@ -46,7 +46,7 @@ internal class IRPeepholeOptimizer(private val irprog: IRProgram) { /* Empty Code chunk with label -> If next chunk has no label -> move label to next chunk, remove original - If next chunk has label -> label name should be the same, remove original. Otherwise FOR NOW leave it in place. (TODO: consolidate labels into 1) + If next chunk has label -> label name should be the same, remove original. Otherwise FOR NOW leave it in place. (TODO: merge both labels into 1) If is last chunk -> keep chunk in place because of the label. Empty Code chunk without label -> should not have been generated! ERROR. @@ -71,7 +71,7 @@ internal class IRPeepholeOptimizer(private val irprog: IRProgram) { if (chunk.label == nextchunk.label) removeChunks += index else { - // TODO: consolidate labels on same chunk + // TODO: merge labels on same chunk } } } diff --git a/intermediate/src/prog8/intermediate/IRInstructions.kt b/intermediate/src/prog8/intermediate/IRInstructions.kt index 83d2985bc..b92dfb2cf 100644 --- a/intermediate/src/prog8/intermediate/IRInstructions.kt +++ b/intermediate/src/prog8/intermediate/IRInstructions.kt @@ -493,7 +493,6 @@ data class InstructionFormat(val datatype: IRDataType?, fr0... = fp register a = memory address i = immediate value - TODO: also encode if *memory* is read/written/modified? */ val instructionFormats = mutableMapOf( Opcode.NOP to InstructionFormat.from("N"), @@ -516,10 +515,10 @@ val instructionFormats = mutableMapOf( Opcode.JUMP to InstructionFormat.from("N,r1,fr1,r1 | F,>fr1"), Opcode.BSTCC to InstructionFormat.from("N,