@@ -5874,6 +5874,8 @@ void LinearScan::allocateRegisters()
5874
5874
continue;
5875
5875
}
5876
5876
5877
+ assert(!currentRefPosition.isPhysRegRef);
5878
+
5877
5879
// If this is an exposed use, do nothing - this is merely a placeholder to attempt to
5878
5880
// ensure that a register is allocated for the full lifetime. The resolution logic
5879
5881
// will take care of moving to the appropriate register if needed.
@@ -13307,8 +13309,7 @@ regMaskTP LinearScan::RegisterSelection::select(Interval* current
13307
13309
13308
13310
// If there is another fixed reference to this register before the use, change the candidates
13309
13311
// on this RefPosition to include that of nextRefPos.
13310
- // TODO-Quirk: Should pass right type here, but previously this didn't consider TYP_DOUBLE case for arm32.
13311
- unsigned nextFixedRegRefLocation = linearScan->getNextFixedRef(defReg, TYP_I_IMPL);
13312
+ unsigned nextFixedRegRefLocation = linearScan->getNextFixedRef(defReg, currentInterval->registerType);
13312
13313
if (nextFixedRegRefLocation <= nextRefPos->getRefEndLocation())
13313
13314
{
13314
13315
candidates |= nextRefPos->registerAssignment;
@@ -13768,7 +13769,7 @@ regMaskTP LinearScan::RegisterSelection::selectMinimal(Interval*
13768
13769
13769
13770
// If there is another fixed reference to this register before the use, change the candidates
13770
13771
// on this RefPosition to include that of nextRefPos.
13771
- unsigned nextFixedRegRefLocation = linearScan->getNextFixedRef(defReg, TYP_I_IMPL );
13772
+ unsigned nextFixedRegRefLocation = linearScan->getNextFixedRef(defReg, currentInterval->registerType );
13772
13773
if (nextFixedRegRefLocation <= nextRefPos->getRefEndLocation())
13773
13774
{
13774
13775
candidates |= nextRefPos->registerAssignment;
0 commit comments