From 2a96f93919f5fcc5adf563bde6d551a1338469f0 Mon Sep 17 00:00:00 2001 From: Irmen de Jong Date: Wed, 14 Jun 2023 22:14:47 +0200 Subject: [PATCH] vm: fix compiler error when dealing with label --- .../src/prog8/codegen/intermediate/ExpressionGen.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/codeGenIntermediate/src/prog8/codegen/intermediate/ExpressionGen.kt b/codeGenIntermediate/src/prog8/codegen/intermediate/ExpressionGen.kt index 9f7f0f710..08824e846 100644 --- a/codeGenIntermediate/src/prog8/codegen/intermediate/ExpressionGen.kt +++ b/codeGenIntermediate/src/prog8/codegen/intermediate/ExpressionGen.kt @@ -45,9 +45,9 @@ internal class ExpressionGen(private val codeGen: IRCodeGen) { } } is PtIdentifier -> { - val vmDt = irType(expr.type) val code = IRCodeChunk(null, null) if (expr.type in PassByValueDatatypes) { + val vmDt = irType(expr.type) if(vmDt==IRDataType.FLOAT) { val resultFpRegister = codeGen.registers.nextFreeFloat() code += IRInstruction(Opcode.LOADM, vmDt, fpReg1 = resultFpRegister, labelSymbol = expr.name) @@ -60,6 +60,7 @@ internal class ExpressionGen(private val codeGen: IRCodeGen) { } } else { // for strings and arrays etc., load the *address* of the value instead + val vmDt = if(expr.type==DataType.UNDEFINED) IRDataType.WORD else irType(expr.type) val resultRegister = codeGen.registers.nextFree() code += IRInstruction(Opcode.LOAD, vmDt, reg1 = resultRegister, labelSymbol = expr.name) ExpressionCodeResult(code, vmDt, resultRegister, -1)