From c68c9a8f05e840292d39917df9fa32d9e166edc9 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 14 Jul 2023 21:55:06 +0100 Subject: Update serialisation of LLVM code gen context in tests --- .../compiler/backends/llvm/LlvmCodeGenTesting.java | 35 ++++++++++++++++------ 1 file changed, 26 insertions(+), 9 deletions(-) (limited to 'src/test/java') diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenTesting.java b/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenTesting.java index e480f3da..1138d161 100644 --- a/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenTesting.java +++ b/src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenTesting.java @@ -1,21 +1,14 @@ package org.shedlang.compiler.backends.llvm; import org.shedlang.compiler.backends.llvm.ir.LlvmIrSerializer; -import org.shedlang.compiler.backends.llvm.ir.ast.instructions.LlvmReturnVoid; -import org.shedlang.compiler.backends.llvm.ir.ast.types.LlvmTypes; import java.io.IOException; -import java.util.List; public class LlvmCodeGenTesting { private LlvmCodeGenTesting() { } public static String serializeContext(LlvmCodeGenContext context) throws IOException { - context = context.addTerminatorInstruction(new LlvmReturnVoid()); - var function = context.toFunction("f", LlvmTypes.VOID, List.of()); - var module = context.addTopLevelEntity(function).toModule(); - var builder = new StringBuilder(); builder.append("Stack:\n"); @@ -26,8 +19,32 @@ public class LlvmCodeGenTesting { } builder.append("\n"); - builder.append("Module:\n"); - LlvmIrSerializer.serializeModule(module, builder); + builder.append("Instructions:\n\n"); + for (var instruction : context.instructions()) { + LlvmIrSerializer.serializeInstruction(instruction, builder); + builder.append("\n"); + } + builder.append("\n"); + + builder.append("Top-level entities:\n\n"); + + for (var topLevelEntity : context.topLevelEntities()) { + LlvmIrSerializer.serializeTopLevelEntity(topLevelEntity, builder); + builder.append("\n"); + } + + builder.append("Shed locals:\n"); + for (var entry : context.shedLocalNameToOperand().entrySet()) { + var shedLocalName = entry.getKey(); + var operand = entry.getValue(); + + builder.append(" * "); + builder.append(shedLocalName); + builder.append(" => "); + LlvmIrSerializer.serializeOperand(operand, builder); + builder.append("\n"); + } + builder.append("\n"); return builder.toString(); } -- cgit v1.2.3