diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-07-29 13:51:57 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-07-29 13:51:57 +0100 |
| commit | 3230699c9714ab4658e09e88719abf6b0e3c48d7 (patch) | |
| tree | f6a7eb06594906e7f1bcb48ee7f76efbfd661f3d /src/main/java | |
| parent | 3703fd741f19ca15d6dafb5dcd11f773d3b5f450 (diff) | |
Fix type of exit code in LLVM backend
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackend.java | 12 |
1 files changed, 9 insertions, 3 deletions
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")) ) ) )); |
