diff options
Diffstat (limited to 'llvm/lib/IR/Module.cpp')
-rw-r--r-- | llvm/lib/IR/Module.cpp | 13 |
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"); } |