From 3230699c9714ab4658e09e88719abf6b0e3c48d7 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 29 Jul 2023 13:51:57 +0100 Subject: Fix type of exit code in LLVM backend --- .../org/shedlang/compiler/backends/llvm/LlvmBackend.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackend.java b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackend.java index d0f23f57..69f6a710 100644 --- a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackend.java +++ b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackend.java @@ -6,6 +6,7 @@ import org.shedlang.compiler.backends.llvm.ir.ast.LlvmFunctionDefinition; import org.shedlang.compiler.backends.llvm.ir.ast.LlvmModule; import org.shedlang.compiler.backends.llvm.ir.ast.instructions.LlvmCall; import org.shedlang.compiler.backends.llvm.ir.ast.instructions.LlvmReturn; +import org.shedlang.compiler.backends.llvm.ir.ast.instructions.LlvmTrunc; import org.shedlang.compiler.backends.llvm.ir.ast.operands.LlvmVariableGlobal; import org.shedlang.compiler.backends.llvm.ir.ast.operands.LlvmVariableLocal; import org.shedlang.compiler.backends.llvm.ir.ast.types.LlvmTypes; @@ -75,13 +76,18 @@ public class LlvmBackend implements Backend { List.of( new LlvmCall( new LlvmVariableLocal("exitCode"), - // TODO: the main function returns INT_64 - LlvmTypes.INT_32, + LlvmTypes.INT_64, new LlvmVariableGlobal(mainFunctionName), List.of() + ), + new LlvmTrunc( + new LlvmVariableLocal("exitCode32"), + LlvmTypes.INT_64, + new LlvmVariableLocal("exitCode"), + LlvmTypes.INT_32 ) ), - new LlvmReturn(LlvmTypes.INT_32, new LlvmVariableLocal("exitCode")) + new LlvmReturn(LlvmTypes.INT_32, new LlvmVariableLocal("exitCode32")) ) ) )); -- cgit v1.2.3