[pypy-commit] pypy ppc-backend-2: Do not trample float result register when saving and restoring volatiles.

edelsohn noreply at buildbot.pypy.org
Fri Jun 8 04:59:53 CEST 2012


Author: edelsohn
Branch: ppc-backend-2
Changeset: r55491:cdd6d603200b
Date: 2012-06-07 22:59 -0400
http://bitbucket.org/pypy/pypy/changeset/cdd6d603200b/

Log:	Do not trample float result register when saving and restoring
	volatiles.

diff --git a/pypy/jit/backend/ppc/helper/assembler.py b/pypy/jit/backend/ppc/helper/assembler.py
--- a/pypy/jit/backend/ppc/helper/assembler.py
+++ b/pypy/jit/backend/ppc/helper/assembler.py
@@ -92,6 +92,8 @@
             self.mc.store(reg.value, r.SPP.value, i * WORD)
         if self.save_FLOAT:
             for i, reg in enumerate(r.VOLATILES_FLOAT):
+                if not self.save_RES and reg is r.f1:
+                    continue
                 self.mc.stfd(reg.value, r.SPP.value,
                              (i + self.FLOAT_OFFSET) * WORD)
 
@@ -104,5 +106,7 @@
             self.mc.load(reg.value, r.SPP.value, i * WORD)
         if self.save_FLOAT:
             for i, reg in enumerate(r.VOLATILES_FLOAT):
+                if not self.save_RES and reg is r.f1:
+                    continue
                 self.mc.lfd(reg.value, r.SPP.value,
                              (i + self.FLOAT_OFFSET) * WORD)


More information about the pypy-commit mailing list