More aggressive DCE should honor debugger invariants

- A LINENUMEBER node is "dead" if the corresponding instruction interval
 contains at least one "dead" bytecode instruction
 and no live bytecode instructions

- Observable local variable lifetimes should be taken into account
 when determining if a NOP is required for debugger.
This commit is contained in:
Dmitry Petrov
2017-05-15 14:59:50 +03:00
parent 65799a5cb4
commit 84e54124a2
8 changed files with 121 additions and 44 deletions
@@ -911,6 +911,12 @@ public class BytecodeTextTestGenerated extends AbstractBytecodeTextTest {
doTest(fileName);
}
@TestMetadata("inlineIfFalse.kt")
public void testInlineIfFalse() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/bytecodeText/constantConditions/inlineIfFalse.kt");
doTest(fileName);
}
@TestMetadata("kt3098.kt")
public void testKt3098() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/bytecodeText/constantConditions/kt3098.kt");