JVM KT-49092 fix stack corruption in redundant boxing elimination

This commit is contained in:
Dmitry Petrov
2021-12-21 15:31:53 +03:00
committed by Space
parent c74453d8d2
commit 915e949dbc
17 changed files with 410 additions and 5 deletions
@@ -0,0 +1,9 @@
fun foo(x: Any, y: Any) {}
val y = true
val z = 1L
fun box(): String {
var q = "Failed"
foo(if (y) { q = "OK"; z } else "", return q)
}
@@ -0,0 +1,9 @@
fun foo(x: Any, y: Any) {}
val y = false
val z = 1L
fun box(): String {
var q = "Failed"
foo(if (y) "" else { q = "OK"; z }, return q)
}
@@ -0,0 +1,10 @@
fun foo(x: Any, y: Any) {}
val y = false
val zInt = 1
val zLong = 1L
fun box(): String {
var q = "Failed"
foo(if (y) zInt else { q = "OK"; zLong }, return q)
}
@@ -0,0 +1,9 @@
fun foo(x: Any, y: Any) {}
val y = true
val z = 1
fun box(): String {
var q = "Failed"
foo(if (y) { q = "OK"; z } else "", return q)
}
@@ -0,0 +1,10 @@
fun foo(x: Any, y: Any) {}
val y = true
val zByte = 1.toByte()
val zShort = 1.toShort()
fun box(): String {
var q = "Failed"
foo(if (y) { q = "OK"; zByte } else zShort, return q)
}
@@ -0,0 +1,10 @@
fun foo(x: Any, y: Any) {}
val y = true
val z = 1L
fun box(): String {
var q = "Failed"
val v = if (y) { q = "OK"; z } else ""
foo(v, return q)
}