aco: fix new_demand calculation for first instructions
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
This commit is contained in:
parent
93b42a1907
commit
e73de4e1d8
|
@ -1033,11 +1033,14 @@ void process_block(spill_ctx& ctx, unsigned block_idx, Block* block,
|
||||||
|
|
||||||
RegisterDemand new_demand = ctx.register_demand[block_idx][idx];
|
RegisterDemand new_demand = ctx.register_demand[block_idx][idx];
|
||||||
if (idx == 0) {
|
if (idx == 0) {
|
||||||
for (const Definition& def : instr->definitions) {
|
RegisterDemand demand_before = new_demand;
|
||||||
if (!def.isTemp())
|
for (const Definition& def : instr->definitions)
|
||||||
continue;
|
demand_before -= def.getTemp();
|
||||||
new_demand += def.getTemp();
|
for (const Operand& op : instr->operands) {
|
||||||
|
if (op.isFirstKill())
|
||||||
|
demand_before += op.getTemp();
|
||||||
}
|
}
|
||||||
|
new_demand.update(demand_before);
|
||||||
} else {
|
} else {
|
||||||
new_demand.update(ctx.register_demand[block_idx][idx - 1]);
|
new_demand.update(ctx.register_demand[block_idx][idx - 1]);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue