mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-14 16:33:28 +00:00
Add a module flags accessor method which returns the flags in a vector.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150623 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
01d53ec176
commit
f20f281368
@ -179,6 +179,14 @@ public:
|
|||||||
/// values.
|
/// values.
|
||||||
enum ModAttrBehavior { Error = 1, Warning = 2, Require = 3, Override = 4 };
|
enum ModAttrBehavior { Error = 1, Warning = 2, Require = 3, Override = 4 };
|
||||||
|
|
||||||
|
struct ModuleFlagEntry {
|
||||||
|
unsigned Behavior;
|
||||||
|
MDString *Key;
|
||||||
|
Value *Val;
|
||||||
|
ModuleFlagEntry(unsigned B, MDString *K, Value *V)
|
||||||
|
: Behavior(B), Key(K), Val(V) {}
|
||||||
|
};
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
/// @name Member Variables
|
/// @name Member Variables
|
||||||
/// @{
|
/// @{
|
||||||
@ -401,6 +409,9 @@ public:
|
|||||||
/// @name Module Flags Accessors
|
/// @name Module Flags Accessors
|
||||||
/// @{
|
/// @{
|
||||||
|
|
||||||
|
/// getModuleFlagsMetadata - Returns the module flags in the provided vector.
|
||||||
|
void getModuleFlagsMetadata(SmallVectorImpl<ModuleFlagEntry> &Flags) const;
|
||||||
|
|
||||||
/// getModuleFlagsMetadata - Returns the NamedMDNode in the module that
|
/// getModuleFlagsMetadata - Returns the NamedMDNode in the module that
|
||||||
/// represents module-level flags. This method returns null if there are no
|
/// represents module-level flags. This method returns null if there are no
|
||||||
/// module-level flags.
|
/// module-level flags.
|
||||||
|
@ -328,6 +328,21 @@ void Module::eraseNamedMetadata(NamedMDNode *NMD) {
|
|||||||
NamedMDList.erase(NMD);
|
NamedMDList.erase(NMD);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// getModuleFlagsMetadata - Returns the module flags in the provided vector.
|
||||||
|
void Module::
|
||||||
|
getModuleFlagsMetadata(SmallVectorImpl<ModuleFlagEntry> &Flags) const {
|
||||||
|
const NamedMDNode *ModFlags = getModuleFlagsMetadata();
|
||||||
|
if (!ModFlags) return;
|
||||||
|
|
||||||
|
for (unsigned i = 0, e = ModFlags->getNumOperands(); i != e; ++i) {
|
||||||
|
MDNode *Flag = ModFlags->getOperand(i);
|
||||||
|
ConstantInt *Behavior = cast<ConstantInt>(Flag->getOperand(0));
|
||||||
|
MDString *Key = cast<MDString>(Flag->getOperand(1));
|
||||||
|
Value *Val = Flag->getOperand(2);
|
||||||
|
Flags.push_back(ModuleFlagEntry(Behavior->getZExtValue(), Key, Val));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// getModuleFlagsMetadata - Returns the NamedMDNode in the module that
|
/// getModuleFlagsMetadata - Returns the NamedMDNode in the module that
|
||||||
/// represents module-level flags. This method returns null if there are no
|
/// represents module-level flags. This method returns null if there are no
|
||||||
/// module-level flags.
|
/// module-level flags.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user