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
@@ -0,0 +1,19 @@
fun foo(b: Boolean): String {
return if (b) {
"OK"
} else if (false) {
"fail: reached unreachable code at line 5"
} else if (true) {
"fail: reached unexpected code at line 7"
} else if (true) {
"fail: reached unreachable code at line 9"
} else if (b) {
"fail: reached unreachable code at line 11"
} else {
"fail: reached unreachable code at line 13"
}
}
fun box(): String {
return foo(true)
}
@@ -0,0 +1,19 @@
fun foo(b: Boolean): String {
return if (b) {
"fail: reached unexpected code at line 3"
} else if (false) {
"fail: reached unreachable code at line 5"
} else if (true) {
"OK"
} else if (true) {
"fail: reached unreachable code at line 9"
} else if (b) {
"fail: reached unreachable code at line 11"
} else {
"fail: reached unreachable code at line 13"
}
}
fun box(): String {
return foo(false)
}