[pypy-commit] pypy default: integration tests for simple_inline_function()

arigo pypy.commits at gmail.com
Sun May 29 12:11:33 EDT 2016


Author: Armin Rigo <arigo at tunes.org>
Branch: 
Changeset: r84815:9b331e582e0e
Date: 2016-05-29 18:12 +0200
http://bitbucket.org/pypy/pypy/changeset/9b331e582e0e/

Log:	integration tests for simple_inline_function()

diff --git a/rpython/translator/backendopt/test/test_inline.py b/rpython/translator/backendopt/test/test_inline.py
--- a/rpython/translator/backendopt/test/test_inline.py
+++ b/rpython/translator/backendopt/test/test_inline.py
@@ -621,3 +621,41 @@
         assert len(collect_called_graphs(f_graph, t)) == 1
         auto_inline_graphs(t, [f_graph], 32, inline_graph_from_anywhere=True)
         assert len(collect_called_graphs(f_graph, t)) == 0
+
+    def test_inline_all(self):
+        def g(x):
+            return x + 1
+        def f(x):
+            return g(x) * g(x+1) * g(x+2) * g(x+3) * g(x+4) * g(x+5)
+        t = self.translate(f, [int])
+        sanity_check(t)    # also check before inlining (so we don't blame it)
+        simple_inline_function(t, graphof(t, g), graphof(t, f))
+        sanity_check(t)
+        assert summary(graphof(t, f)) == {'int_add': 11, 'int_mul': 5}
+        interp = LLInterpreter(t.rtyper)
+        result = interp.eval_graph(graphof(t, f), [10])
+        assert result == f(10)
+
+    def test_inline_all_exc(self):
+        def g(x):
+            if x < -100:
+                raise ValueError
+            return x + 1
+        def f(x):
+            n1 = g(x) * g(x+1)
+            try:
+                n2 = g(x+2) * g(x+3)
+            except ValueError:
+                n2 = 1
+            n3 = g(x+4) * g(x+5)
+            return n1 * n2 * n3
+        t = self.translate(f, [int])
+        sanity_check(t)    # also check before inlining (so we don't blame it)
+        simple_inline_function(t, graphof(t, g), graphof(t, f))
+        sanity_check(t)
+        assert summary(graphof(t, f)) == {'int_add': 11, 'int_mul': 5,
+                                          'cast_pointer': 12, 'getfield': 6,
+                                          'int_lt': 6}
+        interp = LLInterpreter(t.rtyper)
+        result = interp.eval_graph(graphof(t, f), [10])
+        assert result == f(10)


More information about the pypy-commit mailing list