{
assignedInterval->assignedReg = regRec;
}
-#ifdef _TARGET_ARM_
else if (canRestorePreviousInterval(regRec, assignedInterval))
-#else
- else if (regRec->previousInterval != nullptr && regRec->previousInterval != assignedInterval &&
- regRec->previousInterval->assignedReg == regRec &&
- regRec->previousInterval->getNextRefPosition() != nullptr)
-#endif
{
regRec->assignedInterval = regRec->previousInterval;
regRec->previousInterval = nullptr;
return false;
}
+#endif
//--------------------------------------------------------------------------------------
// canRestorePreviousInterval: Test if we can restore previous interval
(regRec->previousInterval != nullptr && regRec->previousInterval != assignedInterval &&
regRec->previousInterval->assignedReg == regRec && regRec->previousInterval->getNextRefPosition() != nullptr);
+#ifdef _TARGET_ARM_
if (retVal && regRec->previousInterval->registerType == TYP_DOUBLE)
{
regNumber nextRegNum = REG_NEXT(regRec->regNum);
RegRecord* nextRegRec = getRegisterRecord(nextRegNum);
- retVal = retVal &&
- (nextRegRec->assignedInterval == nullptr && regRec->previousInterval == nextRegRec->previousInterval);
+ retVal = retVal && nextRegRec->assignedInterval == nullptr;
}
+#endif
+
return retVal;
}
-#endif
//------------------------------------------------------------------------
// processBlockStartLocations: Update var locations on entry to 'currentBlock'
#ifdef _TARGET_ARM_
bool isSecondHalfReg(RegRecord* regRec, Interval* interval);
- bool LinearScan::canRestorePreviousInterval(RegRecord* regRec, Interval* assignedInterval);
#endif
+ bool canRestorePreviousInterval(RegRecord* regRec, Interval* assignedInterval);
RefType CheckBlockType(BasicBlock* block, BasicBlock* prevBlock);