aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-11-26 11:43:27 +0000
committerMichael Williamson <mike@zwobble.org>2023-11-26 11:43:27 +0000
commitbc4099247a3d911cd29c791389be368505e98867 (patch)
treefabed9f6182afd2c680ee62623695973079fb60e /src/main/java
parent5a51382f65b56d545e5276d6df8acedd9f7251c2 (diff)
Accept basic block label as LlvmVariableLocal instead of String
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/LlvmPatioCodeGen.java16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmPatioCodeGen.java b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmPatioCodeGen.java
index 576ac771..f1441637 100644
--- a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmPatioCodeGen.java
+++ b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmPatioCodeGen.java
@@ -424,13 +424,13 @@ public class LlvmPatioCodeGen {
var loopEndLabel = loopEndLabelResult.value();
context = loopEndLabelResult.context();
- context = context.startBasicBlock(loopStartLabel.name());
+ context = context.startBasicBlock(loopStartLabel);
context = context.enterLoop(loopStartLabel, loopEndLabel);
context = generateInstructions(patioLoop.body(), context);
context = context.exitLoop();
- context = context.startBasicBlock(loopEndLabel.name());
+ context = context.startBasicBlock(loopEndLabel);
yield context;
}
@@ -656,7 +656,7 @@ public class LlvmPatioCodeGen {
) {
var phiPredecessors = new ArrayList<PhiPredecessor>();
for (var branch : branches) {
- context = context.startBasicBlock(branch.startLabel.name());
+ context = context.startBasicBlock(branch.startLabel);
context = generateInstructions(branch.body.body(), context);
@@ -664,7 +664,7 @@ public class LlvmPatioCodeGen {
.anyMatch(instruction -> instruction instanceof PatioUnreachable);
if (!endIsUnreachable) {
- context = context.startBasicBlock(branch.endLabel.name());
+ context = context.startBasicBlock(branch.endLabel);
context = context.addTerminatorInstruction(new LlvmBrUnconditional(
endLabel
));
@@ -673,7 +673,7 @@ public class LlvmPatioCodeGen {
}
}
- context = context.startBasicBlock(endLabel.name());
+ context = context.startBasicBlock(endLabel);
context = generatePhiInstructions(
targets,
phiPredecessors,
@@ -1127,17 +1127,17 @@ public class LlvmPatioCodeGen {
* block, then the existing basic block is terminated with an
* unconditional jump to the new basic block.
*/
- public FunctionContext startBasicBlock(String basicBlockLabel) {
+ public FunctionContext startBasicBlock(LlvmVariableLocal basicBlockLabel) {
var context = this.basicBlockLabel.isEmpty() && this.instructions.isEmpty()
? this
: this.addTerminatorInstruction(
- new LlvmBrUnconditional(new LlvmVariableLocal(basicBlockLabel))
+ new LlvmBrUnconditional(basicBlockLabel)
);
return new FunctionContext(
context.functionNameToReturnType,
context.basicBlocks,
- Optional.of(basicBlockLabel),
+ Optional.of(basicBlockLabel.name()),
context.instructions,
context.patioLocalToType,
context.patioLocalToOperand,