Add GEP inbounds

This commit is contained in:
Siu Kwan Lam 2013-01-14 10:30:46 -06:00
commit 8b58488bbd
3 changed files with 14 additions and 8 deletions

View file

@ -878,6 +878,9 @@ _wrap_objobj2obj(LLVMBuildFree, LLVMBuilderRef, LLVMValueRef, LLVMValueRef)
_wrap_objobjstr2obj(LLVMBuildLoad, LLVMBuilderRef, LLVMValueRef, LLVMValueRef)
_wrap_objobjobj2obj(LLVMBuildStore, LLVMBuilderRef, LLVMValueRef, LLVMValueRef, LLVMValueRef)
_wrap_objobjliststr2obj(LLVMBuildGEP, LLVMBuilderRef, LLVMValueRef, LLVMValueRef, LLVMValueRef)
_wrap_objobjliststr2obj(LLVMBuildInBoundsGEP, LLVMBuilderRef, LLVMValueRef, LLVMValueRef, LLVMValueRef)
_wrap_objint2none(LLVMLdSetAlignment, LLVMValueRef)
_wrap_objint2none(LLVMStSetAlignment, LLVMValueRef)
@ -1959,6 +1962,7 @@ static PyMethodDef core_methods[] = {
_method( LLVMBuildLoad )
_method( LLVMBuildStore )
_method( LLVMBuildGEP )
_method( LLVMBuildInBoundsGEP )
_method( LLVMLdSetAlignment )
_method( LLVMStSetAlignment )

View file

@ -2066,11 +2066,14 @@ class Builder(object):
inst.set_volatile(volatile)
return inst
def gep(self, ptr, indices, name=""):
def gep(self, ptr, indices, name="", inbounds=False):
check_is_value(ptr)
index_ptrs = unpack_values(indices)
return _make_value(
_core.LLVMBuildGEP(self.ptr, ptr.ptr, index_ptrs, name))
if inbounds:
ret = _core.LLVMBuildInBoundsGEP(self.ptr, ptr.ptr, index_ptrs, name)
else:
ret = _core.LLVMBuildGEP(self.ptr, ptr.ptr, index_ptrs, name)
return _make_value(ret)
# casts and extensions