summaryrefslogtreecommitdiff
path: root/src/jit/lsra.cpp
diff options
context:
space:
mode:
authorCarol Eidt <carol.eidt@microsoft.com>2018-09-20 10:35:32 -0700
committerCarol Eidt <carol.eidt@microsoft.com>2018-09-20 10:35:32 -0700
commit4d65684d041045edd46c9523b6b51e6e17f560f4 (patch)
treedbc749518db9e58ebe226cdc9d3096322e1aa76c /src/jit/lsra.cpp
parent4e111c3495c480c221ee8ba577bf9837a2e98271 (diff)
downloadcoreclr-4d65684d041045edd46c9523b6b51e6e17f560f4.tar.gz
coreclr-4d65684d041045edd46c9523b6b51e6e17f560f4.tar.bz2
coreclr-4d65684d041045edd46c9523b6b51e6e17f560f4.zip
Handle partial multireg COPY
A multireg COPY will only have a valid register for indices that require copying. Thus, the `GetRegCount` method must return the highest index that has a valid register. Fix #20063
Diffstat (limited to 'src/jit/lsra.cpp')
-rw-r--r--src/jit/lsra.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/jit/lsra.cpp b/src/jit/lsra.cpp
index 02bfc2a4e2..8a613b660e 100644
--- a/src/jit/lsra.cpp
+++ b/src/jit/lsra.cpp
@@ -9237,6 +9237,16 @@ void LinearScan::dumpLsraAllocationEvent(LsraDumpEvent event,
case LSRA_EVENT_DEFUSE_CASE6:
printf(indentFormat, " Case #6 need a copy");
dumpRegRecords();
+ if (interval == nullptr)
+ {
+ printf(indentFormat, " NULL interval");
+ dumpRegRecords();
+ }
+ else if (interval->firstRefPosition->multiRegIdx != 0)
+ {
+ printf(indentFormat, " (multiReg)");
+ dumpRegRecords();
+ }
break;
case LSRA_EVENT_SPILL: