[JVM_IR] Fix offsets in constant propagation optimization.

Loads of temporary variables that contain constants are replaced
with a copy of the constant. This avoids locals loads and stores.
However, the copy of the constant needs to have the offset of
the load and not of the original constant.

Fixes KT-41963.
This commit is contained in:
Mads Ager
2020-09-21 13:50:32 +02:00
committed by Alexander Udalov
parent f273edeb8e
commit 78483930bc
10 changed files with 94 additions and 8 deletions
@@ -433,6 +433,12 @@ public class IrSteppingTestGenerated extends AbstractIrSteppingTest {
runTest("compiler/testData/debug/stepping/whenComplicatedSubject.kt");
}
@Test
@TestMetadata("whenConstant.kt")
public void testWhenConstant() throws Exception {
runTest("compiler/testData/debug/stepping/whenConstant.kt");
}
@Test
@TestMetadata("whenIsChecks.kt")
public void testWhenIsChecks() throws Exception {
@@ -433,6 +433,12 @@ public class SteppingTestGenerated extends AbstractSteppingTest {
runTest("compiler/testData/debug/stepping/whenComplicatedSubject.kt");
}
@Test
@TestMetadata("whenConstant.kt")
public void testWhenConstant() throws Exception {
runTest("compiler/testData/debug/stepping/whenConstant.kt");
}
@Test
@TestMetadata("whenIsChecks.kt")
public void testWhenIsChecks() throws Exception {