diff --git a/CHANGELOG b/CHANGELOG index 3b70552..396ce0e 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ 0.7, in progress: + * Add llvm.core.Argument.alignment property. * Migrate to LLVM 2.8. * Fix ffi link issue on darwin (Albert Mietus) (Issue #29). * LLVM tutorial ported (Max Shawabkeh) (Issue #33). diff --git a/llvm/core.py b/llvm/core.py index 8f2587a..877bd47 100644 --- a/llvm/core.py +++ b/llvm/core.py @@ -1260,9 +1260,15 @@ class Argument(Value): def remove_attribute(self, attr): _core.LLVMRemoveAttribute(self.ptr, attr) - def set_alignment(self, align): + def _set_alignment(self, align): _core.LLVMSetParamAlignment(self.ptr, align) + def _get_alignment(self): + return _core.LLVMGetParamAlignment(self.ptr) + + alignment = \ + property(_get_alignment, _set_alignment) + class Function(GlobalValue): diff --git a/test/testall.py b/test/testall.py index 0a62f0d..2b7887d 100755 --- a/test/testall.py +++ b/test/testall.py @@ -267,7 +267,8 @@ def do_argument(): a = f.args[0] a.add_attribute(ATTR_ZEXT) a.remove_attribute(ATTR_ZEXT) - a.set_alignment(4) + a.alignment = 16 + a1 = a.alignment def do_function(): diff --git a/test/testattrs.py b/test/testattrs.py new file mode 100755 index 0000000..3aac706 --- /dev/null +++ b/test/testattrs.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python + +from llvm.core import * +from cStringIO import StringIO + + +def make_module(): + test_module = """ + define i32 @sum(i32, i32) { + entry: + %2 = add i32 %0, %1 + ret i32 %2 + } + """ + return Module.from_assembly(StringIO(test_module)) + + +def test_align(m): + f = m.get_function_named('sum') + f.args[0].alignment = 16 + assert "align 16" in str(f) + assert f.args[0].alignment == 16 + + +m = make_module() +test_align(m) + +