JVM_IR: defer some branch optimizations to codegen.

Specifically, defer the removal of hand-written "if (true|false)" from
JvmBuiltinOptimizationLowering into codegen so that appropriate debug
info (and a NOP) can be inserted.

Change-Id: Ia11af05ad8b4251946bd3e685fb7c3319f0f433f
This commit is contained in:
Ting-Yuan Huang
2019-03-01 11:30:27 -08:00
committed by max-kammerer
parent 6bbb0269b1
commit 013ad4b8e4
17 changed files with 272 additions and 20 deletions
@@ -1106,6 +1106,11 @@ public class BytecodeTextTestGenerated extends AbstractBytecodeTextTest {
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/codegen/bytecodeText/controlStructures"), Pattern.compile("^(.+)\\.kt$"), TargetBackend.JVM, true);
}
@TestMetadata("ifConsts.kt")
public void testIfConsts() throws Exception {
runTest("compiler/testData/codegen/bytecodeText/controlStructures/ifConsts.kt");
}
@TestMetadata("kt17110.kt")
public void testKt17110() throws Exception {
runTest("compiler/testData/codegen/bytecodeText/controlStructures/kt17110.kt");
@@ -2640,11 +2645,36 @@ public class BytecodeTextTestGenerated extends AbstractBytecodeTextTest {
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/codegen/bytecodeText/lineNumbers"), Pattern.compile("^(.+)\\.kt$"), TargetBackend.JVM, true);
}
@TestMetadata("ifConsts.kt")
public void testIfConsts() throws Exception {
runTest("compiler/testData/codegen/bytecodeText/lineNumbers/ifConsts.kt");
}
@TestMetadata("ifElse.kt")
public void testIfElse() throws Exception {
runTest("compiler/testData/codegen/bytecodeText/lineNumbers/ifElse.kt");
}
@TestMetadata("ifFalse.kt")
public void testIfFalse() throws Exception {
runTest("compiler/testData/codegen/bytecodeText/lineNumbers/ifFalse.kt");
}
@TestMetadata("ifFalseElse.kt")
public void testIfFalseElse() throws Exception {
runTest("compiler/testData/codegen/bytecodeText/lineNumbers/ifFalseElse.kt");
}
@TestMetadata("ifTrue.kt")
public void testIfTrue() throws Exception {
runTest("compiler/testData/codegen/bytecodeText/lineNumbers/ifTrue.kt");
}
@TestMetadata("ifTrueElse.kt")
public void testIfTrueElse() throws Exception {
runTest("compiler/testData/codegen/bytecodeText/lineNumbers/ifTrueElse.kt");
}
@TestMetadata("singleThen.kt")
public void testSingleThen() throws Exception {
runTest("compiler/testData/codegen/bytecodeText/lineNumbers/singleThen.kt");