Author: Richard Plangger <r...@pasra.at>
Branch: vecopt-merge
Changeset: r79106:dd5a2c07e944
Date: 2015-08-21 11:26 +0200
http://bitbucket.org/pypy/pypy/changeset/dd5a2c07e944/

Log:    finally the simplest version working again. Accidently mixed up the
        order of the fail args which caused to result in wrong register
        mapping

diff --git a/rpython/jit/metainterp/history.py 
b/rpython/jit/metainterp/history.py
--- a/rpython/jit/metainterp/history.py
+++ b/rpython/jit/metainterp/history.py
@@ -758,6 +758,7 @@
         label = operations[idx]
         self.label_pos = idx
         self.inputargs = label.getarglist()
+        self.renamed_inputargs = label.getarglist()
         self.compiled = None
 
     def register_guard(self, op):
@@ -767,6 +768,9 @@
         assert isinstance(descr, CompileLoopVersionDescr)
         descr.version = self
         self.faildescrs.append(descr)
+        # note: stitching a guard must resemble the order of the label
+        # otherwise a wrong mapping is handed to the register allocator
+        op.setfailargs(self.renamed_inputargs)
 
     def update_token(self, jitcell_token, all_target_tokens):
         # this is only invoked for versioned loops!
diff --git a/rpython/jit/metainterp/optimizeopt/vectorize.py 
b/rpython/jit/metainterp/optimizeopt/vectorize.py
--- a/rpython/jit/metainterp/optimizeopt/vectorize.py
+++ b/rpython/jit/metainterp/optimizeopt/vectorize.py
@@ -493,6 +493,9 @@
             return
         if vector:
             # add accumulation info to the descriptor
+            for version in self.loop.versions:
+                # this needs to be done for renamed (accum arguments)
+                version.renamed_inputargs = [ renamer.rename_map.get(arg,arg) 
for arg in version.inputargs ]
             self.appended_arg_count = len(sched_data.invariant_vector_vars)
             for guard_node in self.dependency_graph.guards:
                 op = guard_node.getoperation()
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to