From 8b65d160640b0f9a761ca905610409fa5bc35372 Mon Sep 17 00:00:00 2001 From: Pat Gavlin Date: Thu, 8 Dec 2016 15:18:42 -0800 Subject: Correct an assertion in LSRA. `verifyFinalAllocation` asserts that if a non-BB interval RefPosition that is either spilled or is the interval's last use does not have a register, then that ref position must be marked `AllocateIfProfitable`. However, this situation can also arise in at least one other situation: an unused parameter will have at least one ref position that may not be allocated to a register. This change corrects the assertion to check `RefPosition::RequiresRegister` rather than `RefPosition::AllocateIfProfitable`. Fixes VSO 299207. --- src/jit/lsra.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'src/jit') diff --git a/src/jit/lsra.cpp b/src/jit/lsra.cpp index 6813beb288..249ab4a982 100644 --- a/src/jit/lsra.cpp +++ b/src/jit/lsra.cpp @@ -11788,15 +11788,14 @@ void LinearScan::verifyFinalAllocation() interval->physReg = REG_NA; interval->assignedReg = nullptr; - // regRegcord could be null if RefPosition is to be allocated a - // reg only if profitable. + // regRegcord could be null if the RefPosition does not require a register. if (regRecord != nullptr) { regRecord->assignedInterval = nullptr; } else { - assert(currentRefPosition->AllocateIfProfitable()); + assert(!currentRefPosition->RequiresRegister()); } } } -- cgit v1.2.3