update "attribute(s)" ignorance
This commit is contained in:
parent
625858aa6f
commit
56a511854a
2 changed files with 72 additions and 29 deletions
78
llvm/core.py
78
llvm/core.py
|
|
@ -325,11 +325,17 @@ class VisibilityEnum(Enum):
|
||||||
|
|
||||||
VisibilityEnum.declare()
|
VisibilityEnum.declare()
|
||||||
|
|
||||||
# parameter attributes llvm::Attributes::AttrVal (see llvm/Attributes.h)
|
# parameter attributes
|
||||||
|
# LLVM 3.2 llvm::Attributes::AttrVal (see llvm/Attributes.h)
|
||||||
|
# LLVM 3.3 llvm::Attribute::AttrKind (see llvm/Attributes.h)
|
||||||
class AttrEnum(Enum):
|
class AttrEnum(Enum):
|
||||||
prefix = 'ATTR_'
|
prefix = 'ATTR_'
|
||||||
|
|
||||||
AttrVal = api.llvm.Attributes.AttrVal
|
if llvm.version >= (3, 3):
|
||||||
|
AttrVal = api.llvm.Attribute.AttrKind
|
||||||
|
else:
|
||||||
|
AttrVal = api.llvm.Attributes.AttrVal
|
||||||
|
|
||||||
ATTR_NONE = AttrVal.None_
|
ATTR_NONE = AttrVal.None_
|
||||||
ATTR_ZEXT = AttrVal.ZExt
|
ATTR_ZEXT = AttrVal.ZExt
|
||||||
ATTR_SEXT = AttrVal.SExt
|
ATTR_SEXT = AttrVal.SExt
|
||||||
|
|
@ -1436,29 +1442,55 @@ class Argument(Value):
|
||||||
_valid_attrs = frozenset([ATTR_BY_VAL, ATTR_NEST, ATTR_NO_ALIAS,
|
_valid_attrs = frozenset([ATTR_BY_VAL, ATTR_NEST, ATTR_NO_ALIAS,
|
||||||
ATTR_NO_CAPTURE, ATTR_STRUCT_RET])
|
ATTR_NO_CAPTURE, ATTR_STRUCT_RET])
|
||||||
|
|
||||||
def add_attribute(self, attr):
|
if llvm.version >= (3, 3):
|
||||||
context = api.llvm.getGlobalContext()
|
def add_attribute(self, attr):
|
||||||
attrbldr = api.llvm.AttrBuilder.new()
|
context = api.llvm.getGlobalContext()
|
||||||
attrbldr.addAttribute(attr)
|
attrbldr = api.llvm.AttrBuilder.new()
|
||||||
attrs = api.llvm.Attributes.get(context, attrbldr)
|
attrbldr.addAttribute(attr)
|
||||||
self._ptr.addAttr(attrs)
|
attrs = api.llvm.AttributeSet.get(context, 0, attrbldr)
|
||||||
if attr not in self:
|
self._ptr.addAttr(attrs)
|
||||||
raise ValueError("Attribute %s is not valid for arg %s" %
|
|
||||||
(attr, self))
|
if attr not in self:
|
||||||
|
raise ValueError("Attribute %r is not valid for arg %s" %
|
||||||
|
(attr, self))
|
||||||
|
|
||||||
def remove_attribute(self, attr):
|
def remove_attribute(self, attr):
|
||||||
context = api.llvm.getGlobalContext()
|
context = api.llvm.getGlobalContext()
|
||||||
attrbldr = api.llvm.AttrBuilder.new()
|
attrbldr = api.llvm.AttrBuilder.new()
|
||||||
attrbldr.addAttribute(attr)
|
attrbldr.addAttribute(attr)
|
||||||
attrs = api.llvm.Attributes.get(context, attrbldr)
|
attrs = api.llvm.AttributeSet.get(context, 0, attrbldr)
|
||||||
self._ptr.removeAttr(attrs)
|
self._ptr.removeAttr(attrs)
|
||||||
|
|
||||||
def _set_alignment(self, align):
|
def _set_alignment(self, align):
|
||||||
context = api.llvm.getGlobalContext()
|
context = api.llvm.getGlobalContext()
|
||||||
attrbldr = api.llvm.AttrBuilder.new()
|
attrbldr = api.llvm.AttrBuilder.new()
|
||||||
attrbldr.addAlignmentAttr(align)
|
attrbldr.addAlignmentAttr(align)
|
||||||
attrs = api.llvm.Attributes.get(context, attrbldr)
|
attrs = api.llvm.AttributeSet.get(context, 0, attrbldr)
|
||||||
self._ptr.addAttr(attrs)
|
self._ptr.addAttr(attrs)
|
||||||
|
else:
|
||||||
|
def add_attribute(self, attr):
|
||||||
|
context = api.llvm.getGlobalContext()
|
||||||
|
attrbldr = api.llvm.AttrBuilder.new()
|
||||||
|
attrbldr.addAttribute(attr)
|
||||||
|
attrs = api.llvm.Attributes.get(context, attrbldr)
|
||||||
|
self._ptr.addAttr(attrs)
|
||||||
|
if attr not in self:
|
||||||
|
raise ValueError("Attribute %r is not valid for arg %s" %
|
||||||
|
(attr, self))
|
||||||
|
|
||||||
|
def remove_attribute(self, attr):
|
||||||
|
context = api.llvm.getGlobalContext()
|
||||||
|
attrbldr = api.llvm.AttrBuilder.new()
|
||||||
|
attrbldr.addAttribute(attr)
|
||||||
|
attrs = api.llvm.Attributes.get(context, attrbldr)
|
||||||
|
self._ptr.removeAttr(attrs)
|
||||||
|
|
||||||
|
def _set_alignment(self, align):
|
||||||
|
context = api.llvm.getGlobalContext()
|
||||||
|
attrbldr = api.llvm.AttrBuilder.new()
|
||||||
|
attrbldr.addAlignmentAttr(align)
|
||||||
|
attrs = api.llvm.Attributes.get(context, attrbldr)
|
||||||
|
self._ptr.addAttr(attrs)
|
||||||
|
|
||||||
def _get_alignment(self):
|
def _get_alignment(self):
|
||||||
return self._ptr.getParamAlignment()
|
return self._ptr.getParamAlignment()
|
||||||
|
|
|
||||||
|
|
@ -70,13 +70,24 @@ class PassManagerBuilder(llvm.Wrapper):
|
||||||
def size_level(self, sizelevel):
|
def size_level(self, sizelevel):
|
||||||
self._ptr.SizeLevel = sizelevel
|
self._ptr.SizeLevel = sizelevel
|
||||||
|
|
||||||
@property
|
if llvm.version >= (3, 3):
|
||||||
def vectorize(self):
|
@property
|
||||||
return self._ptr.Vectorize
|
def bbvectorize(self):
|
||||||
|
return self._ptr.BBVectorize
|
||||||
|
|
||||||
@vectorize.setter
|
@bbvectorize.setter
|
||||||
def vectorize(self, enable):
|
def bbvectorize(self, enable):
|
||||||
self._ptr.Vectorize = enable
|
self._ptr.BBVectorize = enable
|
||||||
|
|
||||||
|
vectorize = bbvectorize
|
||||||
|
else:
|
||||||
|
@property
|
||||||
|
def vectorize(self):
|
||||||
|
return self._ptr.Vectorize
|
||||||
|
|
||||||
|
@vectorize.setter
|
||||||
|
def vectorize(self, enable):
|
||||||
|
self._ptr.Vectorize = enable
|
||||||
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue