fix: mov result of return into return register allocated by the register allocator

This commit is contained in:
Laborratte 5 2025-05-17 16:54:34 +02:00
parent 314522210c
commit f7441e155a
Signed by: Laborratte5
GPG key ID: 3A30072E35202C02

View file

@ -1,5 +1,7 @@
package edu.kit.kastel.vads.compiler.backend.x86asm; package edu.kit.kastel.vads.compiler.backend.x86asm;
import static edu.kit.kastel.vads.compiler.ir.util.NodeSupport.predecessorSkipProj;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -74,6 +76,13 @@ public class X86CodeGenerator implements CodeGenerator {
} }
private static void returnNode(StringBuilder builder, Map<Node, Register> registers, ReturnNode r) { private static void returnNode(StringBuilder builder, Map<Node, Register> registers, ReturnNode r) {
builder.repeat(" ", 2)
.append("mov ")
.append(registers.get(predecessorSkipProj(r, ReturnNode.RESULT)))
.append(",")
.append(registers.get(r))
.append("\n");
builder.repeat(" ", 2) builder.repeat(" ", 2)
.append("ret"); .append("ret");
} }