Skip to content

Commit d7a4d9b

Browse files
authored
Do not assume about another half regrec (#53412)
1 parent c6ef760 commit d7a4d9b

File tree

1 file changed

+2
-6
lines changed

1 file changed

+2
-6
lines changed

src/coreclr/jit/lsra.cpp

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5615,10 +5615,6 @@ void LinearScan::allocateRegisters()
56155615
// Return Value:
56165616
// None
56175617
//
5618-
// Assumptions:
5619-
// For ARM32, when "regType" is TYP_DOUBLE, "reg" should be a even-numbered
5620-
// float register, i.e. lower half of double register.
5621-
//
56225618
// Note:
56235619
// For ARM32, two float registers consisting a double register are updated
56245620
// together when "regType" is TYP_DOUBLE.
@@ -5631,8 +5627,8 @@ void LinearScan::updateAssignedInterval(RegRecord* reg, Interval* interval, Regi
56315627
regNumber doubleReg = REG_NA;
56325628
if (regType == TYP_DOUBLE)
56335629
{
5634-
doubleReg = reg->regNum;
5635-
RegRecord* anotherHalfReg = getSecondHalfRegRec(reg);
5630+
RegRecord* anotherHalfReg = findAnotherHalfRegRec(reg);
5631+
doubleReg = genIsValidDoubleReg(reg->regNum) ? reg->regNum : anotherHalfReg->regNum;
56365632
anotherHalfReg->assignedInterval = interval;
56375633
}
56385634
else if ((oldAssignedInterval != nullptr) && (oldAssignedInterval->registerType == TYP_DOUBLE))

0 commit comments

Comments
 (0)