45 lines
1 KiB
Python
Executable file
45 lines
1 KiB
Python
Executable file
#!/usr/bin/env python
|
|
|
|
from llvm.core import *
|
|
|
|
m = Module.new('a')
|
|
t = Type.int()
|
|
ft = Type.function(t, [t, t, t])
|
|
f = m.add_function(ft, "func")
|
|
b = f.append_basic_block('entry')
|
|
bld = Builder.new(b)
|
|
tmp1 = bld.add(Constant.int(t, 100), f.args[0], "tmp1")
|
|
tmp2 = bld.add(tmp1, f.args[1], "tmp2")
|
|
tmp3 = bld.add(tmp1, f.args[2], "tmp3")
|
|
bld.ret(tmp3)
|
|
|
|
print("-"*60)
|
|
print(m)
|
|
print("-"*60)
|
|
|
|
print("Testing use count ..", end=' ')
|
|
c1 = f.args[0].use_count == 1
|
|
c2 = f.args[1].use_count == 1
|
|
c3 = f.args[2].use_count == 1
|
|
c4 = tmp1.use_count == 2
|
|
c5 = tmp2.use_count == 0
|
|
c6 = tmp3.use_count == 1
|
|
if c1 and c2 and c3 and c4 and c5 and c6:
|
|
print("OK")
|
|
else:
|
|
print("FAIL")
|
|
|
|
print("Testing uses ..", end=' ')
|
|
c1 = f.args[0].uses[0] is tmp1
|
|
c2 = len(f.args[0].uses) == 1
|
|
c3 = f.args[1].uses[0] is tmp2
|
|
c4 = len(f.args[1].uses) == 1
|
|
c5 = f.args[2].uses[0] is tmp3
|
|
c6 = len(f.args[2].uses) == 1
|
|
c7 = len(tmp1.uses) == 2
|
|
c8 = len(tmp2.uses) == 0
|
|
c9 = len(tmp3.uses) == 1
|
|
if c1 and c2 and c3 and c4 and c5 and c6 and c7 and c8 and c9:
|
|
print("OK")
|
|
else:
|
|
print("FAIL")
|