[RyuJIT/ARM32] Use helper for LSRA
authorHyung-Kyu Choi <hk0110.choi@samsung.com>
Tue, 27 Jun 2017 05:48:33 +0000 (14:48 +0900)
committerHyung-Kyu Choi <hk0110.choi@samsung.com>
Tue, 27 Jun 2017 05:48:33 +0000 (14:48 +0900)
Signed-off-by: Hyung-Kyu Choi <hk0110.choi@samsung.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/e38a867f0c122c87f63e0064524ff61364e6d73a

src/coreclr/src/jit/lsra.cpp

index b6117d2..a1dc240 100644 (file)
@@ -6177,20 +6177,8 @@ void LinearScan::checkAndAssignInterval(RegRecord* regRec, Interval* interval)
         unassignPhysReg(regRec->regNum);
     }
 
-    regRec->assignedInterval = interval;
 
-#ifdef _TARGET_ARM_
-    // Update second RegRecord of double register
-    if ((interval->registerType == TYP_DOUBLE) && isFloatRegType(regRec->registerType))
-    {
-        assert(genIsValidDoubleReg(regRec->regNum));
-
-        regNumber  nextRegNum = REG_NEXT(regRec->regNum);
-        RegRecord* nextRegRec = getRegisterRecord(nextRegNum);
-
-        nextRegRec->assignedInterval = interval;
-    }
-#endif // _TARGET_ARM_
+    updateAssignedInterval(regRec, interval, interval->registerType);
 }
 
 // Assign the given physical register interval to the given interval
@@ -6392,20 +6380,7 @@ void LinearScan::checkAndClearInterval(RegRecord* regRec, RefPosition* spillRefP
         assert(spillRefPosition->getInterval() == assignedInterval);
     }
 
-    regRec->assignedInterval = nullptr;
-
-#ifdef _TARGET_ARM_
-    // Update second RegRecord of double register
-    if ((assignedInterval->registerType == TYP_DOUBLE) && isFloatRegType(regRec->registerType))
-    {
-        assert(genIsValidDoubleReg(regRec->regNum));
-
-        regNumber  nextRegNum = REG_NEXT(regRec->regNum);
-        RegRecord* nextRegRec = getRegisterRecord(nextRegNum);
-
-        nextRegRec->assignedInterval = nullptr;
-    }
-#endif // _TARGET_ARM_
+    updateAssignedInterval(regRec, nullptr, assignedInterval->registerType);
 }
 
 //------------------------------------------------------------------------