Author: Steven Wu Date: 2024-05-21T09:15:37-07:00 New Revision: 7c19058d2a8e05383988b92cf4004c4cd8a54951
URL: https://github.com/llvm/llvm-project/commit/7c19058d2a8e05383988b92cf4004c4cd8a54951 DIFF: https://github.com/llvm/llvm-project/commit/7c19058d2a8e05383988b92cf4004c4cd8a54951.diff LOG: [Darwin][IR] Don't error on target_variant mismatch when linking IR (#92297) Change the ModuleFlag type for target_variant to warning to avoid error out when the value is different. This matches the linker behavior when linking object files. rdar://125874272 Added: llvm/test/Linker/darwin-target-variant.ll Modified: clang/test/CodeGen/darwin-target-variant.c llvm/lib/IR/Module.cpp llvm/test/MC/MachO/darwin-target-variant-reverse.ll llvm/test/MC/MachO/darwin-target-variant.ll Removed: ################################################################################ diff --git a/clang/test/CodeGen/darwin-target-variant.c b/clang/test/CodeGen/darwin-target-variant.c index 36caaaec1bdb9..9f4b36a790db8 100644 --- a/clang/test/CodeGen/darwin-target-variant.c +++ b/clang/test/CodeGen/darwin-target-variant.c @@ -2,5 +2,5 @@ // CHECK: !llvm.module.flags = !{!0, !1, !2 // CHECK: !0 = !{i32 2, !"SDK Version", [2 x i32] [i32 11, i32 1]} -// CHECK: !1 = !{i32 4, !"darwin.target_variant.triple", !"x86_64-apple-ios14-macabi"} +// CHECK: !1 = !{i32 2, !"darwin.target_variant.triple", !"x86_64-apple-ios14-macabi"} // CHECK: !2 = !{i32 2, !"darwin.target_variant.SDK Version", [2 x i32] [i32 14, i32 1]} diff --git a/llvm/lib/IR/Module.cpp b/llvm/lib/IR/Module.cpp index a8696ed9e3ce5..f97dd18c736c5 100644 --- a/llvm/lib/IR/Module.cpp +++ b/llvm/lib/IR/Module.cpp @@ -882,7 +882,7 @@ StringRef Module::getDarwinTargetVariantTriple() const { } void Module::setDarwinTargetVariantTriple(StringRef T) { - addModuleFlag(ModFlagBehavior::Override, "darwin.target_variant.triple", + addModuleFlag(ModFlagBehavior::Warning, "darwin.target_variant.triple", MDString::get(getContext(), T)); } diff --git a/llvm/test/Linker/darwin-target-variant.ll b/llvm/test/Linker/darwin-target-variant.ll new file mode 100644 index 0000000000000..7d46b2dda4a99 --- /dev/null +++ b/llvm/test/Linker/darwin-target-variant.ll @@ -0,0 +1,42 @@ +; RUN: rm -rf %t && split-file %s %t +; RUN: llvm-link %t/1.ll %t/2.ll -S -o - | FileCheck %s +; CHECK: {i32 2, !"darwin.target_variant.triple", !"x86_64-apple-ios13.1-macabi"} + +; RUN: llvm-link %t/1.ll %t/old.ll -S -o - | FileCheck %s -check-prefix OLD +; OLD: {i32 4, !"darwin.target_variant.triple", !"x86_64-apple-ios14.0-macabi"} + +;--- 1.ll +target triple = "x86_64-apple-macos10.15"; +!llvm.module.flags = !{!0, !1, !2}; +!0 = !{i32 2, !"SDK Version", [3 x i32] [ i32 10, i32 15, i32 1 ] }; +!1 = !{i32 2, !"darwin.target_variant.triple", !"x86_64-apple-ios13.1-macabi"}; +!2 = !{i32 2, !"darwin.target_variant.SDK Version", [2 x i32] [ i32 13, i32 2 ] }; + +define void @foo() { +entry: + ret void +} + +;--- 2.ll +target triple = "x86_64-apple-macos10.15"; +!llvm.module.flags = !{!0, !1, !2}; +!0 = !{i32 2, !"SDK Version", [3 x i32] [ i32 10, i32 15, i32 1 ] }; +!1 = !{i32 2, !"darwin.target_variant.triple", !"x86_64-apple-ios14.0-macabi"}; +!2 = !{i32 2, !"darwin.target_variant.SDK Version", [2 x i32] [ i32 13, i32 2 ] }; + +define void @bar() { +entry: + ret void +} + +;--- old.ll +target triple = "x86_64-apple-macos10.15"; +!llvm.module.flags = !{!0, !1, !2}; +!0 = !{i32 2, !"SDK Version", [3 x i32] [ i32 10, i32 15, i32 1 ] }; +!1 = !{i32 4, !"darwin.target_variant.triple", !"x86_64-apple-ios14.0-macabi"}; +!2 = !{i32 2, !"darwin.target_variant.SDK Version", [2 x i32] [ i32 13, i32 2 ] }; + +define void @old() { +entry: + ret void +} diff --git a/llvm/test/MC/MachO/darwin-target-variant-reverse.ll b/llvm/test/MC/MachO/darwin-target-variant-reverse.ll index 6d51cd8fffa82..fd527b204546d 100644 --- a/llvm/test/MC/MachO/darwin-target-variant-reverse.ll +++ b/llvm/test/MC/MachO/darwin-target-variant-reverse.ll @@ -3,7 +3,7 @@ target triple = "x86_64-apple-ios13.1-macabi"; !llvm.module.flags = !{!0, !1, !2}; !0 = !{i32 2, !"SDK Version", [2 x i32] [ i32 13, i32 1 ] }; -!1 = !{i32 1, !"darwin.target_variant.triple", !"x86_64-apple-macos10.15"}; +!1 = !{i32 2, !"darwin.target_variant.triple", !"x86_64-apple-macos10.15"}; !2 = !{i32 2, !"darwin.target_variant.SDK Version", [2 x i32] [ i32 10, i32 15 ] }; define void @foo() { diff --git a/llvm/test/MC/MachO/darwin-target-variant.ll b/llvm/test/MC/MachO/darwin-target-variant.ll index d506ed92c9cc3..78bd1e98410f7 100644 --- a/llvm/test/MC/MachO/darwin-target-variant.ll +++ b/llvm/test/MC/MachO/darwin-target-variant.ll @@ -4,7 +4,7 @@ target triple = "x86_64-apple-macos10.15"; !llvm.module.flags = !{!0, !1, !2}; !0 = !{i32 2, !"SDK Version", [3 x i32] [ i32 10, i32 15, i32 1 ] }; -!1 = !{i32 1, !"darwin.target_variant.triple", !"x86_64-apple-ios13.1-macabi"}; +!1 = !{i32 2, !"darwin.target_variant.triple", !"x86_64-apple-ios13.1-macabi"}; !2 = !{i32 2, !"darwin.target_variant.SDK Version", [2 x i32] [ i32 13, i32 2 ] }; define void @foo() { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits