Skip to content

Commit

Permalink
stage2: sparc64: Account for delay slot in airBlock
Browse files Browse the repository at this point in the history
  • Loading branch information
koachan committed Jun 6, 2022
1 parent 3220e0b commit 89b4195
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions src/arch/sparc64/CodeGen.zig
Original file line number Diff line number Diff line change
Expand Up @@ -991,9 +991,14 @@ fn airBlock(self: *Self, inst: Air.Inst.Index) !void {
const relocs = &self.blocks.getPtr(inst).?.relocs;
if (relocs.items.len > 0 and relocs.items[relocs.items.len - 1] == self.mir_instructions.len - 1) {
// If the last Mir instruction is the last relocation (which
// would just jump one instruction further), it can be safely
// would just jump two instruction further), it can be safely
// removed
self.mir_instructions.orderedRemove(relocs.pop());
const index = relocs.pop();

// First, remove the delay slot, then remove
// the branch instruction itself.
self.mir_instructions.orderedRemove(index + 1);
self.mir_instructions.orderedRemove(index);
}
for (relocs.items) |reloc| {
try self.performReloc(reloc);
Expand Down

0 comments on commit 89b4195

Please sign in to comment.