From 34cb79fc9f1e192aefe73d330acd61c8164711dd Mon Sep 17 00:00:00 2001 From: Sergey Bogolepov Date: Mon, 31 Jan 2022 14:45:44 +0300 Subject: [PATCH] [K/N] Fix KT-50970 Force generation of ARM instruction set for iosArm32 and watchosArm32 targets for C++ code. There is no need for such adjustments for Kotlin code because we don't specify any target features in IrToBitcode and compiler backend infers target features from target architecture (which is armv7* and not thumbv7). --- .../kotlin/org/jetbrains/kotlin/konan/target/ClangArgs.kt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/ClangArgs.kt b/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/ClangArgs.kt index ff83d405495..896c1f68e15 100644 --- a/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/ClangArgs.kt +++ b/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/ClangArgs.kt @@ -122,6 +122,14 @@ sealed class ClangArgs( "-mfpu=vfp", "-mfloat-abi=hard" ) + KonanTarget.IOS_ARM32, KonanTarget.WATCHOS_ARM32 -> listOf( + // Force generation of ARM instruction set instead of Thumb-2. + // It allows LLVM ARM backend to encode bigger offsets in BL instruction, + // thus allowing to generate a slightly bigger binaries. + // See KT-37368. + "-marm" + ) + KonanTarget.ANDROID_ARM32, KonanTarget.ANDROID_ARM64, KonanTarget.ANDROID_X86, KonanTarget.ANDROID_X64 -> { val clangTarget = targetTriple.withoutVendor()