diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp index 50041f883cfe5..3bf52428130f7 100644 --- a/clang/lib/CodeGen/CodeGenModule.cpp +++ b/clang/lib/CodeGen/CodeGenModule.cpp @@ -3274,9 +3274,11 @@ void CodeGenModule::EmitModuleLinkOptions() { LinkerOptionsMetadata.append(MetadataArgs.begin(), MetadataArgs.end()); // Add the linker options metadata flag. - auto *NMD = getModule().getOrInsertNamedMetadata("llvm.linker.options"); - for (auto *MD : LinkerOptionsMetadata) - NMD->addOperand(MD); + if (!LinkerOptionsMetadata.empty()) { + auto *NMD = getModule().getOrInsertNamedMetadata("llvm.linker.options"); + for (auto *MD : LinkerOptionsMetadata) + NMD->addOperand(MD); + } } void CodeGenModule::EmitDeferred() { diff --git a/clang/test/Modules/module-impl-with-link.c b/clang/test/Modules/module-impl-with-link.c index ffd388c56b90a..be2f1359b5e94 100644 --- a/clang/test/Modules/module-impl-with-link.c +++ b/clang/test/Modules/module-impl-with-link.c @@ -3,4 +3,4 @@ #include "foo.h" // Make sure we don't generate linker option for module Clib since this TU is // an implementation of Clib. -// CHECK: !llvm.linker.options = !{} +// CHECK-NOT: !llvm.linker.options =