Traverse store-load chains for POP instructions
POP instructions can be only live usages for functional parameters, e.g., when corresponding invoke is in dead code (KT-17591).
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
// FILE: 1.kt
|
||||
inline fun alwaysOk(s: String, fn: (String) -> String): String {
|
||||
return fn(return "OK")
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
fun box() = alwaysOk("what?") { it }
|
||||
@@ -0,0 +1,7 @@
|
||||
// FILE: 1.kt
|
||||
inline fun alwaysOk(s: String, fn: (String) -> String): String {
|
||||
try { return fn(return "fail") } finally { fn(return "OK") }
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
fun box() = alwaysOk("what?") { it }
|
||||
@@ -0,0 +1,15 @@
|
||||
// FILE: 1.kt
|
||||
inline fun alwaysOk(s: String, fn: (String) -> String): String {
|
||||
try {
|
||||
throw Exception()
|
||||
}
|
||||
catch(e: Exception) {
|
||||
fn(return "fail")
|
||||
}
|
||||
finally {
|
||||
fn(return "OK")
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
fun box() = alwaysOk("what?") { it }
|
||||
Reference in New Issue
Block a user