diff options
author | Daniel Dunbar <daniel@zuster.org> | 2013-01-17 01:35:06 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2013-01-17 01:35:06 +0000 |
commit | f9d03c15e8642d4bd3686b8c8e8269242a0f37c6 (patch) | |
tree | de1450702244cf0007bc4c091d6b31cb67c191d1 /lib/CodeGen/CodeGenModule.cpp | |
parent | cd8ab51a44e80625d84126780b0d85a7732e25af (diff) |
[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
Diffstat (limited to 'lib/CodeGen/CodeGenModule.cpp')
-rw-r--r-- | lib/CodeGen/CodeGenModule.cpp | 16 |
1 files changed, 6 insertions, 10 deletions
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<llvm::MDNode *> &Metadata, + SmallVectorImpl<llvm::Value *> &Metadata, llvm::SmallPtrSet<Module *, 16> &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<llvm::MDNode *, 16> MetadataArgs; + SmallVector<llvm::Value *, 16> MetadataArgs; Visited.clear(); for (llvm::SetVector<clang::Module *>::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() { |