Author: Richard Plangger <[email protected]>
Branch: ppc-vsx-support
Changeset: r85776:a2551c202077
Date: 2016-07-20 13:46 +0200
http://bitbucket.org/pypy/pypy/changeset/a2551c202077/

Log:    add test to reproduce failure at runtime. compute_vars_longevity
        disallows const values in the fail args

diff --git a/rpython/jit/backend/x86/runner.py 
b/rpython/jit/backend/x86/runner.py
--- a/rpython/jit/backend/x86/runner.py
+++ b/rpython/jit/backend/x86/runner.py
@@ -7,6 +7,7 @@
 from rpython.jit.backend.x86.profagent import ProfileAgent
 from rpython.jit.backend.llsupport.llmodel import AbstractLLCPU
 from rpython.jit.backend.x86 import regloc
+from rpython.jit.backend.x86.vector_ext import X86VectorExt
 
 import sys
 
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_vecopt.py 
b/rpython/jit/metainterp/optimizeopt/test/test_vecopt.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_vecopt.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_vecopt.py
@@ -1361,30 +1361,28 @@
             'guard_true(i100) [p0, i0]',
         ], trace)
 
-    def test_guard_failarg_do_not_rename_to_const(Self):
+    def test_guard_failarg_do_not_rename_to_const(self):
         # Loop -2 (pre vectorize) : noopt with 15 ops
         trace = self.parse_loop("""
-        []
-        label(p0, p1, p2, p3, p4, i5, i6, p7, p8, p9, p10, i11, i12, f13, p14, 
p15, i16, i17, descr=TargetToken(70367324045984))
-        debug_merge_point(0, 0, '(numpy_call2_inc_out_right: no 
get_printable_location)')
+        [p0, p1, p2, p3, p4, i5, i6, p7, p8, p9, p10, i11, i12, f13, p14, p15, 
i16, i17]
         i19 = int_and(i6, 7)
         i20 = int_is_zero(i19)
         guard_true(i20, descr=<ResumeGuardDescr object at 0x3fffab60d7b0>) 
[p7, p3, p2, p1, p0, p8, p10, i11, i19, i6, i12, i5, p4]
-        f21 = raw_load_f(i12, i6, descr=<ArrayF 8>)
+        f21 = raw_load_f(i12, i6, descr=floatarraydescr)
         guard_not_invalidated(descr=<ResumeGuardCopiedDescr object at 
0x3fffab5fcde8>) [p7, p3, p2, p1, p0, p8, p10, i11, i19, i6, i12, i5, p4]
         f22 = float_mul(f21, f13)
-        raw_store(i16, i6, f22, descr=<ArrayF 8>)
+        raw_store(i16, i6, f22, descr=floatarraydescr)
         i24 = int_add(i5, 1)
         i26 = int_add(i6, 8)
         i27 = int_ge(i24, i17)
-        guard_false(i27, descr=<ResumeGuardDescr object at 0x3fffab60d818>) 
[i17, i24, p7, p3, p2, p1, p0, i26, None, p4]
-        debug_merge_point(0, 0, '(numpy_call2_inc_out_right: no 
get_printable_location)')
-        jump(p0, p1, p2, p3, p4, i24, i26, p7, p8, p9, p10, 1, i12, f13, p14, 
p15, i16, i17, descr=TargetToken(70367324045984))
+        guard_false(i27) [i17, i24, p7, p3, p2, p1, p0, i26, None, p4]
+        jump(p0, p1, p2, p3, p4, i24, i26, p7, p8, p9, p10, 1, i12, f13, p14, 
p15, i16, i17)
         """)
         vopt = self.schedule(trace)
-        import pdb; pdb.set_trace()
-
-
+        for op in trace.operations:
+            if op.is_guard():
+                for arg in op.getfailargs():
+                    assert not arg.is_constant()
 
 class TestLLtype(BaseTestVectorize, LLtypeMixin):
     pass
diff --git a/rpython/jit/metainterp/optimizeopt/vector.py 
b/rpython/jit/metainterp/optimizeopt/vector.py
--- a/rpython/jit/metainterp/optimizeopt/vector.py
+++ b/rpython/jit/metainterp/optimizeopt/vector.py
@@ -314,6 +314,9 @@
             assert isinstance(descr, ResumeDescr)
             copied_op.setdescr(descr.clone())
             failargs = renamer.rename_failargs(copied_op, clone=True)
+            if not we_are_translated():
+                for arg in failargs:
+                    assert not arg.is_constant()
             copied_op.setfailargs(failargs)
 
     def linear_find_smallest_type(self, loop):
@@ -550,7 +553,11 @@
             if op.getdescr():
                 descr.copy_all_attributes_from(op.getdescr())
             op.setdescr(descr)
-        op.setfailargs(loop.label.getarglist_copy())
+        arglistcopy = loop.label.getarglist_copy()
+        if not we_are_translated():
+            for arg in arglistcopy:
+                assert not arg.is_constant()
+        op.setfailargs(arglistcopy)
 
 class CostModel(object):
     """ Utility to estimate the savings for the new trace loop.
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to