aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/IR/Module.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/IR/Module.cpp')
-rw-r--r--llvm/lib/IR/Module.cpp13
1 files changed, 6 insertions, 7 deletions
diff --git a/llvm/lib/IR/Module.cpp b/llvm/lib/IR/Module.cpp
index 4738ec7..7ba5b27 100644
--- a/llvm/lib/IR/Module.cpp
+++ b/llvm/lib/IR/Module.cpp
@@ -272,6 +272,8 @@ NamedMDNode *Module::getOrInsertNamedMetadata(StringRef Name) {
NMD = new NamedMDNode(Name);
NMD->setParent(this);
insertNamedMDNode(NMD);
+ if (Name == "llvm.module.flags")
+ ModuleFlags = NMD;
}
return NMD;
}
@@ -280,6 +282,8 @@ NamedMDNode *Module::getOrInsertNamedMetadata(StringRef Name) {
/// delete it.
void Module::eraseNamedMetadata(NamedMDNode *NMD) {
NamedMDSymTab.erase(NMD->getName());
+ if (NMD == ModuleFlags)
+ ModuleFlags = nullptr;
eraseNamedMDNode(NMD);
}
@@ -323,17 +327,12 @@ Metadata *Module::getModuleFlag(StringRef Key) const {
return nullptr;
}
-/// getModuleFlagsMetadata - Returns the NamedMDNode in the module that
-/// represents module-level flags. This method returns null if there are no
-/// module-level flags.
-NamedMDNode *Module::getModuleFlagsMetadata() const {
- return getNamedMetadata("llvm.module.flags");
-}
-
/// getOrInsertModuleFlagsMetadata - Returns the NamedMDNode in the module that
/// represents module-level flags. If module-level flags aren't found, it
/// creates the named metadata that contains them.
NamedMDNode *Module::getOrInsertModuleFlagsMetadata() {
+ if (ModuleFlags)
+ return ModuleFlags;
return getOrInsertNamedMetadata("llvm.module.flags");
}