|
@@ -1307,7 +1307,7 @@ static Reg asm_fuseload(ASMState *as, IRRef ref, RegSet allow)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (!(as->freeset & 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;
|
|
goto fusespill;
|
|
return ra_allocref(as, ref, allow);
|
|
return ra_allocref(as, ref, allow);
|
|
}
|
|
}
|