From f9d03c15e8642d4bd3686b8c8e8269242a0f37c6 Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Thu, 17 Jan 2013 01:35:06 +0000 Subject: [IRgen] Update modules autolink metadata to use module flags (as now specified in the LangRef). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172692 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/CodeGenModule.cpp | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) (limited to 'lib/CodeGen/CodeGenModule.cpp') diff --git a/lib/CodeGen/CodeGenModule.cpp b/lib/CodeGen/CodeGenModule.cpp index 38f457ada6..04a08a92d8 100644 --- a/lib/CodeGen/CodeGenModule.cpp +++ b/lib/CodeGen/CodeGenModule.cpp @@ -723,7 +723,7 @@ void CodeGenModule::EmitLLVMUsed() { /// it depends on, using a postorder walk. static void addLinkOptionsPostorder(llvm::LLVMContext &Context, Module *Mod, - SmallVectorImpl &Metadata, + SmallVectorImpl &Metadata, llvm::SmallPtrSet &Visited) { // Import this module's parent. if (Mod->Parent && Visited.insert(Mod->Parent)) { @@ -810,7 +810,7 @@ void CodeGenModule::EmitModuleLinkOptions() { // Add link options for all of the imported modules in reverse topological // order. - SmallVector MetadataArgs; + SmallVector MetadataArgs; Visited.clear(); for (llvm::SetVector::iterator M = LinkModules.begin(), MEnd = LinkModules.end(); @@ -818,15 +818,11 @@ void CodeGenModule::EmitModuleLinkOptions() { if (Visited.insert(*M)) addLinkOptionsPostorder(getLLVMContext(), *M, MetadataArgs, Visited); } + std::reverse(MetadataArgs.begin(), MetadataArgs.end()); - // Get/create metadata for the link options. - llvm::NamedMDNode *Metadata - = getModule().getOrInsertNamedMetadata("llvm.module.linkoptions"); - - // Add link options in topological order. - for (unsigned I = MetadataArgs.size(); I > 0; --I) { - Metadata->addOperand(MetadataArgs[I-1]); - } + // Add the linker options metadata flag. + getModule().addModuleFlag(llvm::Module::AppendUnique, "Linker Options", + llvm::MDNode::get(getLLVMContext(), MetadataArgs)); } void CodeGenModule::EmitDeferred() { -- cgit v1.2.3-18-g5258