Skip to content

Commit 266d017

Browse files
#53 Simplify impl
1 parent 100f694 commit 266d017

File tree

1 file changed

+5
-22
lines changed

1 file changed

+5
-22
lines changed

optvm/src/main/java/com/compilerprogramming/ezlang/compiler/CompiledFunction.java

Lines changed: 5 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -968,27 +968,10 @@ private Register addPhiOperands(Register variable, Instruction.Phi phi) {
968968
// The Phi's def was replaced
969969
// We must also replace all occurrences of the phi def from the memoized defs
970970
// per Basic Block
971-
private void replaceDefs(Instruction.Phi phi, Register newValue) {
972-
// TODO rethink the data structure for currentDef
973-
var def = phi.value();
974-
var defs = currentDef.get(def.nonSSAId());
975-
// Make a list of block/reg that we need to update
976-
var bbList = new ArrayList<BasicBlock>();
977-
var regList = new ArrayList<Register>();
978-
for (var entries : defs.entrySet()) {
979-
var bb = entries.getKey();
980-
var reg = entries.getValue();
981-
if (reg.equals(def)) {
982-
bbList.add(bb);
983-
regList.add(reg);
984-
}
985-
}
986-
// Now replace the phi def
987-
for (int i = 0; i < bbList.size(); i++) {
988-
var bb = bbList.get(i);
989-
var reg = regList.get(i);
990-
defs.replace(bb, reg, newValue);
991-
}
971+
private void replaceDefs(Register oldValue, Register newValue) {
972+
var defs = currentDef.get(oldValue.nonSSAId());
973+
for (var bb: defs.keySet())
974+
defs.replace(bb, oldValue, newValue);
992975
}
993976

994977
// reference implementation https://github.com/dibyendumajumdar/libfirm/blob/master/ir/ir/ircons.c#L97
@@ -1055,7 +1038,7 @@ private void replacePhiValueAndUsers(Instruction.Phi phi, Register newValue) {
10551038
}
10561039
// Since the phi is replaced by newvalue
10571040
// we must also update the memoized defs
1058-
replaceDefs(phi, newValue);
1041+
replaceDefs(oldValue, newValue);
10591042
}
10601043

10611044
private List<Instruction> getUsesExcept(Instruction.Phi phi) {

0 commit comments

Comments
 (0)