blob: 0a7cc7477d5aef2b2cda61b8ef2af3c712a43a25 [file]
/*
* Copyright 2010-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the LICENSE file.
*/
// DISABLE_NATIVE: optimizationMode=DEBUG
// DISABLE_NATIVE: optimizationMode=NO
// DISABLE_NATIVE: cacheMode=STATIC_EVERYWHERE
// DISABLE_NATIVE: cacheMode=STATIC_PER_FILE_EVERYWHERE
// IGNORE_KLIB_RUNTIME_ERRORS_WITH_CUSTOM_FIRST_STAGE: Native:*
// IGNORE_KLIB_RUNTIME_ERRORS_WITH_CUSTOM_SECOND_STAGE: Native:*
// https://youtrack.jetbrains.com/issue/KT-69731
// DISABLE_NATIVE: gcType=CMS
// FREE_COMPILER_ARGS: -Xbinary=escapeAnalysisPropagateExiledToHeapObjects=false
import kotlin.test.*
import kotlin.native.internal.*
class C(val x: Int)
fun localArray(x: Int): Int {
val c1 = C(x + 42)
val c2 = C(x + 117)
val c3 = C(x - 1)
val allC = arrayOf(c1, c2, c3)
val array = Array(x) { allC[it % 3] }
assertTrue(c1.isStack())
assertTrue(c2.isStack())
assertTrue(c3.isStack())
assertTrue(allC.isStack())
assertFalse(array.isStack())
return array[5].x
}
fun box(): String {
assertEquals(localArray(43), 42)
return "OK"
}