diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/EnumClassLowering.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/EnumClassLowering.kt index 014a1ef3820..9ae19036f7e 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/EnumClassLowering.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/EnumClassLowering.kt @@ -13,6 +13,7 @@ import org.jetbrains.kotlin.backend.common.lower.irBlockBody import org.jetbrains.kotlin.backend.common.runOnFilePostfix import org.jetbrains.kotlin.backend.konan.Context import org.jetbrains.kotlin.backend.konan.DECLARATION_ORIGIN_ENUM +import org.jetbrains.kotlin.backend.konan.MemoryModel import org.jetbrains.kotlin.backend.konan.llvm.IntrinsicType import org.jetbrains.kotlin.backend.konan.llvm.tryGetIntrinsicType import org.jetbrains.kotlin.descriptors.ClassKind @@ -303,6 +304,12 @@ internal class EnumClassLowering(val context: Context) : FileLoweringPass { else -> error("Unexpected initializer: $initializer") } } + // Needed for legacy MM targets that do not support threads. + if (this@EnumClassLowering.context.memoryModel != MemoryModel.EXPERIMENTAL) { + +irCall(this@EnumClassLowering.context.ir.symbols.freeze, listOf(arrayType)).apply { + extensionReceiver = irGet(receiver) + } + } } (constructor.body as IrBlockBody).statements += valuesInitializer }