Don't assume a write if an operand is not in function parameters

Liveness assumes that if the operand is not in the parameters of
a function call it is being written to, resulting in pointless memcpies.
This commit is contained in:
Rahul Prabhu 2024-01-21 22:45:03 +05:30 committed by Andrew Kelley
parent eff58d6c18
commit 2ab78937dd

View File

@ -489,7 +489,7 @@ pub fn categorizeOperand(
for (args, 0..) |arg, i| {
if (arg == operand_ref) return matchOperandSmallIndex(l, inst, @as(OperandInt, @intCast(i + 1)), .write);
}
return .write;
return .none;
}
var bt = l.iterateBigTomb(inst);
if (bt.feed()) {
@ -504,7 +504,7 @@ pub fn categorizeOperand(
if (arg == operand_ref) return .write;
}
}
return .write;
return .none;
},
.select => {
const pl_op = air_datas[@intFromEnum(inst)].pl_op;