Skip to content

Commit bb1616b

Browse files
committed
[CodeGen] Fix invalid llvm.linker.options about pragma detect_mismatch
When a target does not support pragma detect_mismatch, an llvm.linker.options metadata with an empty entry is created, which causes diagnostic in backend since backend expects name/value pair in llvm.linker.options entries. This patch fixes that. Differential Revision: https://reviews.llvm.org/D69678
1 parent 9b06ac9 commit bb1616b

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

clang/lib/CodeGen/CodeGenModule.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1933,6 +1933,8 @@ void CodeGenModule::AppendLinkerOptions(StringRef Opts) {
19331933
void CodeGenModule::AddDetectMismatch(StringRef Name, StringRef Value) {
19341934
llvm::SmallString<32> Opt;
19351935
getTargetCodeGenInfo().getDetectMismatchOption(Name, Value, Opt);
1936+
if (Opt.empty())
1937+
return;
19361938
auto *MDOpts = llvm::MDString::get(getLLVMContext(), Opt);
19371939
LinkerOptionsMetadata.push_back(llvm::MDNode::get(getLLVMContext(), MDOpts));
19381940
}
Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
1-
// RUN: %clang_cc1 %s -triple i686-pc-win32 -fms-extensions -emit-llvm -o - | FileCheck %s
2-
// RUN: %clang_cc1 %s -triple thumbv7-windows -fms-extensions -emit-llvm -o - | FileCheck %s
1+
// RUN: %clang_cc1 %s -triple i686-pc-win32 -fms-extensions -emit-llvm -o - \
2+
// RUN: | FileCheck %s
3+
// RUN: %clang_cc1 %s -triple thumbv7-windows -fms-extensions -emit-llvm -o - \
4+
// RUN: | FileCheck %s
5+
// RUN: %clang_cc1 %s -triple amdgcn-amd-amdhsa -fms-extensions -emit-llvm -o \
6+
// RUN: - | FileCheck -check-prefix=AMD %s
37

48
#pragma detect_mismatch("test", "1")
59

@@ -9,3 +13,4 @@
913
// CHECK: !llvm.linker.options = !{![[test:[0-9]+]], ![[test2:[0-9]+]]}
1014
// CHECK: ![[test]] = !{!"/FAILIFMISMATCH:\22test=1\22"}
1115
// CHECK: ![[test2]] = !{!"/FAILIFMISMATCH:\22test2=2\22"}
16+
// AMD-NOT: !llvm.linker.options

0 commit comments

Comments
 (0)