Fix for issue #10.

git-svn-id: http://llvm-py.googlecode.com/svn/trunk@59 8d1e9007-1d4e-0410-b67e-1979fd6579aa
This commit is contained in:
mdevan.foobar 2009-01-10 11:00:00 +00:00
commit 58ceb85afb
2 changed files with 25 additions and 2 deletions

View file

@ -1940,8 +1940,11 @@ class Builder(object):
Next instruction inserted will be first one in the block."""
# Avoids using "blk.instructions", which will fetch all the
# instructions into a list. Don't try this at home, though.
first_inst = Instruction(_core.LLVMGetFirstInstruction(self.block.ptr))
self.position_before(first_inst)
inst_ptr = _core.LLVMGetFirstInstruction(self.block.ptr)
if inst_ptr:
# Issue #10: inst_ptr can be None if b/b has no insts.
inst = Instruction(inst_ptr)
self.position_before(inst)
def position_at_end(self, bblk):
"""Position the builder at the end of the given block.

20
test/issue10.py Normal file
View file

@ -0,0 +1,20 @@
from llvm.core import *
import llvm._core
m = Module.new('a')
ti = Type.int()
tf = Type.function(ti, [ti, ti])
f = m.add_function(tf, "func1")
bb = f.append_basic_block('entry')
b = Builder.new(bb)
# There are no instructions in bb. Positioning of the
# builder at beginning (or end) should succeed (trivially).
b.position_at_end(bb)
b.position_at_beginning(bb)