add inline test to common test suite
This commit is contained in:
parent
28c659ec90
commit
6d60c4a469
2 changed files with 30 additions and 33 deletions
|
|
@ -16,7 +16,7 @@ else:
|
|||
|
||||
from llvm import __version__
|
||||
from llvm.core import (Module, Type, GlobalVariable, Function, Builder,
|
||||
Constant, MetaData, MetaDataString)
|
||||
Constant, MetaData, MetaDataString, inline_function)
|
||||
import llvm.passes as lp
|
||||
import llvm.ee as le
|
||||
|
||||
|
|
@ -407,6 +407,35 @@ tests.append(TestMetaData)
|
|||
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
class TestInlining(unittest.TestCase):
|
||||
def test_inline_call(self):
|
||||
mod = Module.new(__name__)
|
||||
callee = mod.add_function(Type.function(Type.int(), [Type.int()]),
|
||||
name='bar')
|
||||
|
||||
builder = Builder.new(callee.append_basic_block('entry'))
|
||||
builder.ret(builder.add(callee.args[0], callee.args[0]))
|
||||
|
||||
caller = mod.add_function(Type.function(Type.int(), []),
|
||||
name='foo')
|
||||
|
||||
builder = Builder.new(caller.append_basic_block('entry'))
|
||||
callinst = builder.call(callee, [Constant.int(Type.int(), 1234)])
|
||||
builder.ret(callinst)
|
||||
|
||||
pre_inlining = str(caller)
|
||||
self.assertIn('call', pre_inlining)
|
||||
|
||||
self.assertTrue(inline_function(callinst))
|
||||
|
||||
post_inlining = str(caller)
|
||||
self.assertNotIn('call', post_inlining)
|
||||
self.assertIn('2468', post_inlining)
|
||||
|
||||
tests.append(TestInlining)
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
def run(verbosity=1):
|
||||
print('llvmpy is installed in: ' + os.path.dirname(__file__))
|
||||
print('llvmpy version: ' + __version__)
|
||||
|
|
|
|||
|
|
@ -1,32 +0,0 @@
|
|||
from llvm.core import *
|
||||
import unittest
|
||||
|
||||
class TestInlining(unittest.TestCase):
|
||||
def test_inline_call(self):
|
||||
mod = Module.new(__name__)
|
||||
callee = mod.add_function(Type.function(Type.int(), [Type.int()]),
|
||||
name='bar')
|
||||
|
||||
builder = Builder.new(callee.append_basic_block('entry'))
|
||||
builder.ret(builder.add(callee.args[0], callee.args[0]))
|
||||
|
||||
caller = mod.add_function(Type.function(Type.int(), []),
|
||||
name='foo')
|
||||
|
||||
builder = Builder.new(caller.append_basic_block('entry'))
|
||||
callinst = builder.call(callee, [Constant.int(Type.int(), 1234)])
|
||||
builder.ret(callinst)
|
||||
|
||||
pre_inlining = str(caller)
|
||||
self.assertIn('call', pre_inlining)
|
||||
|
||||
self.assertTrue(inline_function(callinst))
|
||||
|
||||
post_inlining = str(caller)
|
||||
self.assertNotIn('call', post_inlining)
|
||||
self.assertIn('2468', post_inlining)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue