Fix CompareInstruction.predicate
This commit is contained in:
parent
5b2b878f24
commit
a0eb03b239
2 changed files with 67 additions and 2 deletions
18
llvm/core.py
18
llvm/core.py
|
|
@ -55,12 +55,18 @@ class Enum(int):
|
|||
|
||||
@classmethod
|
||||
def declare(cls):
|
||||
declared = cls._declared_ = {}
|
||||
scope = globals()
|
||||
for name in filter(lambda s: s.startswith(cls.prefix), dir(cls)):
|
||||
n = getattr(cls, name)
|
||||
typ = type(name, (cls,), {})
|
||||
scope[name] = typ(n)
|
||||
obj = typ(n)
|
||||
declared[n] = obj
|
||||
scope[name] = obj
|
||||
|
||||
@classmethod
|
||||
def get(cls, num):
|
||||
return cls._declared_[num]
|
||||
|
||||
# type id (llvm::Type::TypeID)
|
||||
class TypeEnum(Enum):
|
||||
|
|
@ -1872,16 +1878,24 @@ class PHINode(Instruction):
|
|||
|
||||
|
||||
class SwitchInstruction(Instruction):
|
||||
_type_ = api.llvm.SwitchInst
|
||||
|
||||
def add_case(self, const, bblk):
|
||||
self._ptr.addCase(const._ptr, bblk._ptr)
|
||||
|
||||
|
||||
class CompareInstruction(Instruction):
|
||||
_type_ = api.llvm.CmpInst
|
||||
|
||||
@property
|
||||
def predicate(self):
|
||||
return self._ptr.getPredicate()
|
||||
n = self._ptr.getPredicate()
|
||||
try:
|
||||
return ICMPEnum.get(n)
|
||||
except KeyError:
|
||||
return FCMPEnum.get(n)
|
||||
|
||||
|
||||
#===----------------------------------------------------------------------===
|
||||
# Basic block
|
||||
#===----------------------------------------------------------------------===
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue