Add and remove function attributes (Krzysztof Goj)

git-svn-id: http://llvm-py.googlecode.com/svn/trunk@89 8d1e9007-1d4e-0410-b67e-1979fd6579aa
This commit is contained in:
mdevan.foobar 2010-08-03 16:31:41 +00:00
commit aa6a406c46
3 changed files with 14 additions and 0 deletions

View file

@ -512,6 +512,9 @@ _wrap_obj2obj(LLVMGetDoesNotThrow, LLVMValueRef, int)
_wrap_objint2none(LLVMSetDoesNotThrow, LLVMValueRef)
_wrap_obj2none(LLVMViewFunctionCFG, LLVMValueRef)
_wrap_obj2none(LLVMViewFunctionCFGOnly, LLVMValueRef)
_wrap_objenum2none(LLVMAddFunctionAttr, LLVMValueRef, LLVMAttribute)
_wrap_objenum2none(LLVMRemoveFunctionAttr, LLVMValueRef, LLVMAttribute)
static PyObject *
_wLLVMVerifyFunction(PyObject *self, PyObject *args)
@ -1390,6 +1393,8 @@ static PyMethodDef core_methods[] = {
_method( LLVMVerifyFunction )
_method( LLVMViewFunctionCFG )
_method( LLVMViewFunctionCFGOnly )
_method( LLVMAddFunctionAttr )
_method( LLVMRemoveFunctionAttr )
/* Arguments */
_method( LLVMCountParams )

View file

@ -1349,6 +1349,12 @@ class Function(GlobalValue):
def viewCFG(self):
return _core.LLVMViewFunctionCFG(self.ptr)
def add_attribute(self, attr):
_core.LLVMAddFunctionAttr(self.ptr, attr)
def remove_attribute(self, attr):
_core.LLVMRemoveFunctionAttr(self.ptr, attr)
def viewCFGOnly(self):
return _core.LLVMViewFunctionCFGOnly(self.ptr)

View file

@ -295,6 +295,9 @@ def do_function():
g = f.append_basic_block('a')
g = f.get_entry_basic_block()
g = list(f.basic_blocks)
f.add_attribute(ATTR_NO_RETURN)
f.add_attribute(ATTR_ALWAYS_INLINE)
f.remove_attribute(ATTR_NO_RETURN)
# LLVM misbehaves:
#try:
# f.verify()