diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-06-17 00:46:51 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-06-17 00:47:00 +0100 |
| commit | aa5297791ff229c54931b79e9781ebb03b5e079c (patch) | |
| tree | d78de4f240c8bf29d4f4b6047d7642acd7a38d58 /src/main/java | |
| parent | e0b8a6d542817ca464c46033e0c6323c23d2aeac (diff) | |
Serialize LLVM function definitions
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("@"); |
