aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-07-14 21:55:06 +0100
committerMichael Williamson <mike@zwobble.org>2023-07-14 21:55:06 +0100
commitc68c9a8f05e840292d39917df9fa32d9e166edc9 (patch)
treec57ec156fef2e119e9d362126be8ef6936d15680 /src/test/java
parent1a7c4eba61bd9c055c2e3e19fffbae10b5317197 (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.java35
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();
}