diff --git a/kotlin-native/backend.native/tests/build.gradle b/kotlin-native/backend.native/tests/build.gradle index 2d96cd39bee..626a66b0fba 100644 --- a/kotlin-native/backend.native/tests/build.gradle +++ b/kotlin-native/backend.native/tests/build.gradle @@ -6006,6 +6006,10 @@ fileCheckTest("filecheck_escape_analysis_enabled") { } fileCheckTest("filecheck_enum_when") { + // In case of `-opt` we inline Enum.ordinal due to property inlining. + if (project.globalTestArgs.contains('-opt')) { + checkPrefix = "CHECK-OPT" + } annotatedSource = project.file('filecheck/enum_when.kt') } diff --git a/kotlin-native/backend.native/tests/filecheck/enum_when.kt b/kotlin-native/backend.native/tests/filecheck/enum_when.kt index ea59eaecb34..d7a7259284c 100644 --- a/kotlin-native/backend.native/tests/filecheck/enum_when.kt +++ b/kotlin-native/backend.native/tests/filecheck/enum_when.kt @@ -13,13 +13,18 @@ enum class COLOR { fun main() { for (i in COLOR.values()) { // CHECK: = call i32 @"kfun:kotlin.Enum#(){}kotlin.Int"( + // We inline .ordinal property access in case of opt build, so check direct field load instead. + // CHECK-OPT: getelementptr inbounds %"kclassbody:kotlin.Enum#internal", %"kclassbody:kotlin.Enum#internal"* %{{[0-9a-z]*}}, i32 0, i32 2 print(when (i) { // we can't check the register is same, because it can be saved on stack and loaded back // CHECK: icmp eq i32 %{{[0-9a-z]*}}, 0 + // CHECK-OPT: icmp eq i32 %{{[0-9a-z]*}}, 0 COLOR.RED -> 0xff0000 // CHECK: icmp eq i32 %{{[0-9a-z]*}}, 1 + // CHECK-OPT: icmp eq i32 %{{[0-9a-z]*}}, 1 COLOR.GREEN -> 0x00ff00 // CHECK: icmp eq i32 %{{[0-9a-z]*}}, 2 + // CHECK-OPT: icmp eq i32 %{{[0-9a-z]*}}, 2 COLOR.BLUE -> 0x0000ff }) }