diff options
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializer.java | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializer.java b/src/main/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializer.java index 8555b720..eb99abb9 100644 --- a/src/main/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializer.java +++ b/src/main/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializer.java @@ -175,6 +175,21 @@ public class LlvmIrSerializer { public static void serializeTopLevelEntity(LlvmTopLevelEntity entity, StringBuilder builder) { switch (entity) { case LlvmFunctionDefinition functionDefinition -> { + builder.append("define "); + serializeType(functionDefinition.returnType(), builder); + builder.append(" @"); + builder.append(functionDefinition.name()); + builder.append("("); + forEachInterspersed( + functionDefinition.params(), + param -> serializeParam(param, builder), + () -> builder.append(", ") + ); + builder.append(") {\n"); + for (var basicBlock : functionDefinition.body()) { + serializeBasicBlock(basicBlock, builder); + } + builder.append("}\n"); } case LlvmGlobalDefinition globalDefinition -> { builder.append("@"); |
