Only fuse with spill slots for cross-section references.

This commit is contained in:
Mike Pall 2010-03-28 06:42:48 +02:00
parent 69df01efb2
commit 44756ded7a

View File

@ -1307,7 +1307,7 @@ static Reg asm_fuseload(ASMState *as, IRRef ref, RegSet allow)
}
}
if (!(as->freeset & allow) &&
(allow == RSET_EMPTY || ra_hasspill(ir->s) || ref < as->loopref))
(allow == RSET_EMPTY || ra_hasspill(ir->s) || iscrossref(as, ref)))
goto fusespill;
return ra_allocref(as, ref, allow);
}