summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CodeGenModule.cpp
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2013-01-17 01:35:06 +0000
committerDaniel Dunbar <daniel@zuster.org>2013-01-17 01:35:06 +0000
commit69e4746439d9a9ec6f1e3c7c7ddef9132c3f7467 (patch)
tree7aa8b328b9999a2a850c4ef4b4cc66f3d18232cf /clang/lib/CodeGen/CodeGenModule.cpp
parent10876ef5714f95abf4f7cd271f288a811be370e9 (diff)
downloadbcm5719-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.cpp16
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() {
OpenPOWER on IntegriCloud