diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-07-14 21:55:06 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-07-14 21:55:06 +0100 |
| commit | c68c9a8f05e840292d39917df9fa32d9e166edc9 (patch) | |
| tree | c57ec156fef2e119e9d362126be8ef6936d15680 /src/test/java | |
| parent | 1a7c4eba61bd9c055c2e3e19fffbae10b5317197 (diff) | |
Update serialisation of LLVM code gen context in tests
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenTesting.java | 35 |
1 files changed, 26 insertions, 9 deletions
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(); } |
