Add getModuleFlag(StringRef Key) to query a module flag given Key.

No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186470 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Manman Ren 2013-07-16 23:21:16 +00:00
parent 45193d39d9
commit c8cfaa1625
3 changed files with 21 additions and 11 deletions

View File

@ -405,6 +405,10 @@ public:
/// getModuleFlagsMetadata - Returns the module flags in the provided vector.
void getModuleFlagsMetadata(SmallVectorImpl<ModuleFlagEntry> &Flags) const;
/// Return the corresponding value if Key appears in module flags, otherwise
/// return null.
Value *getModuleFlag(StringRef Key) const;
/// getModuleFlagsMetadata - Returns the NamedMDNode in the module that
/// represents module-level flags. This method returns null if there are no
/// module-level flags.

View File

@ -164,17 +164,10 @@ DIType DbgVariable::getType() const {
/// Return Dwarf Version by checking module flags.
static unsigned getDwarfVersionFromModule(const Module *M) {
SmallVector<Module::ModuleFlagEntry, 8> ModuleFlags;
M->getModuleFlagsMetadata(ModuleFlags);
for (unsigned I = 0, E = ModuleFlags.size(); I < E; ++I) {
const Module::ModuleFlagEntry &MFE = ModuleFlags[I];
StringRef Key = MFE.Key->getString();
Value *Val = MFE.Val;
if (Key == "Dwarf Version")
return cast<ConstantInt>(Val)->getZExtValue();
}
return dwarf::DWARF_VERSION;
Value *Val = M->getModuleFlag("Dwarf Version");
if (!Val)
return dwarf::DWARF_VERSION;
return cast<ConstantInt>(Val)->getZExtValue();
}
DwarfDebug::DwarfDebug(AsmPrinter *A, Module *M)

View File

@ -325,6 +325,19 @@ getModuleFlagsMetadata(SmallVectorImpl<ModuleFlagEntry> &Flags) const {
}
}
/// Return the corresponding value if Key appears in module flags, otherwise
/// return null.
Value *Module::getModuleFlag(StringRef Key) const {
SmallVector<Module::ModuleFlagEntry, 8> ModuleFlags;
getModuleFlagsMetadata(ModuleFlags);
for (unsigned I = 0, E = ModuleFlags.size(); I < E; ++I) {
const ModuleFlagEntry &MFE = ModuleFlags[I];
if (Key == MFE.Key->getString())
return MFE.Val;
}
return 0;
}
/// getModuleFlagsMetadata - Returns the NamedMDNode in the module that
/// represents module-level flags. This method returns null if there are no
/// module-level flags.