mirror of
https://github.com/intel/llvm.git
synced 2026-01-25 10:55:58 +08:00
[IRgen] Update modules autolink metadata to use module flags (as now specified
in the LangRef). llvm-svn: 172692
This commit is contained in:
@@ -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() {
|
||||
|
||||
@@ -28,7 +28,9 @@ int use_no_umbrella() {
|
||||
return no_umbrella_A;
|
||||
}
|
||||
|
||||
// CHECK: !llvm.module.linkoptions = !{![[AUTOLINK_FRAMEWORK:[0-9]+]], ![[AUTOLINK:[0-9]+]], ![[DEPENDSONMODULE:[0-9]+]], ![[MODULE:[0-9]+]], ![[NOUMBRELLA:[0-9]+]]}
|
||||
// CHECK: !llvm.module.flags = !{!0, !1, !2, !3, !4}
|
||||
// CHECK: !4 = metadata !{i32 6, metadata !"Linker Options", metadata ![[AUTOLINK_OPTIONS:[0-9]+]]}
|
||||
// CHECK: ![[AUTOLINK_OPTIONS]] = metadata !{metadata ![[AUTOLINK_FRAMEWORK:[0-9]+]], metadata ![[AUTOLINK:[0-9]+]], metadata ![[DEPENDSONMODULE:[0-9]+]], metadata ![[MODULE:[0-9]+]], metadata ![[NOUMBRELLA:[0-9]+]]}
|
||||
// CHECK: ![[AUTOLINK_FRAMEWORK]] = metadata !{metadata !"-framework", metadata !"autolink_framework"}
|
||||
// CHECK: ![[AUTOLINK]] = metadata !{metadata !"-lautolink"}
|
||||
// CHECK: ![[DEPENDSONMODULE]] = metadata !{metadata !"-framework", metadata !"DependsOnModule"}
|
||||
|
||||
Reference in New Issue
Block a user