From aa5297791ff229c54931b79e9781ebb03b5e079c Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 17 Jun 2023 00:46:51 +0100 Subject: Serialize LLVM function definitions --- .../compiler/backends/llvm/ir/LlvmIrSerializer.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/main/java') 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("@"); -- cgit v1.2.3