return retVal;
}
+bool LinearScan::isAssignedToInterval(Interval* interval, RegRecord* regRec)
+{
+ bool isAssigned = (interval->assignedReg == regRec);
+#ifdef _TARGET_ARM_
+ isAssigned |= isSecondHalfReg(regRec, interval);
+#endif
+ return isAssigned;
+}
+
//------------------------------------------------------------------------
// processBlockStartLocations: Update var locations on entry to 'currentBlock' and clear constant
// registers.
// Is there another interval currently assigned to this register? If so unassign it.
if (assignedInterval != nullptr)
{
-#ifdef _TARGET_ARM_
- if (assignedInterval->assignedReg == targetRegRecord ||
- isSecondHalfReg(targetRegRecord, assignedInterval))
-#else
- if (assignedInterval->assignedReg == targetRegRecord)
-#endif
+ if (isAssignedToInterval(assignedInterval, targetRegRecord))
{
regNumber assignedRegNum = assignedInterval->assignedReg->regNum;
void updateAssignedInterval(RegRecord* reg, Interval* interval, RegisterType regType);
#endif
bool canRestorePreviousInterval(RegRecord* regRec, Interval* assignedInterval);
+ bool isAssignedToInterval(Interval* interval, RegRecord* regRec);
RefType CheckBlockType(BasicBlock* block, BasicBlock* prevBlock);