Skip to content

Commit 06bdb48

Browse files
pratikasharigcbot
authored andcommitted
Skip spill coalescing when payload is address taken
When payload of spill intrinsic is address taken, we cannot simply replace the virtual register with a temporary coalesced range. That's because address takens can have indirect def. Treat such cases as non-spill coalesceable. This is a functional fix.
1 parent 5572ee3 commit 06bdb48

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

visa/SpillCleanup.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1070,7 +1070,8 @@ void CoalesceSpillFills::spills() {
10701070
spillsToCoalesce.clear();
10711071
}
10721072

1073-
if (isGRFAssigned(inst->asSpillIntrinsic()->getPayload())) {
1073+
if (isGRFAssigned(inst->asSpillIntrinsic()->getPayload()) ||
1074+
inst->asSpillIntrinsic()->getPayload()->getTopDcl()->isAddrSpillFill()) {
10741075
if (spillsToCoalesce.size() == 0) {
10751076
++instIter;
10761077
continue;

0 commit comments

Comments
 (0)