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 | 69e4746439d9a9ec6f1e3c7c7ddef9132c3f7467 (patch) | |
tree | 7aa8b328b9999a2a850c4ef4b4cc66f3d18232cf /clang/lib/CodeGen/CodeGenModule.cpp | |
parent | 10876ef5714f95abf4f7cd271f288a811be370e9 (diff) | |
download | bcm5719-llvm-69e4746439d9a9ec6f1e3c7c7ddef9132c3f7467.tar.gz bcm5719-llvm-69e4746439d9a9ec6f1e3c7c7ddef9132c3f7467.zip |
[IRgen] Update modules autolink metadata to use module flags (as now specified
in the LangRef).
llvm-svn: 172692
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
-rw-r--r-- | clang/lib/CodeGen/CodeGenModule.cpp | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp index 38f457ada69..04a08a92d87 100644 --- a/clang/lib/CodeGen/CodeGenModule.cpp +++ b/clang/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() { |