aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializer.java15
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("@");