aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArmin Rigo <arigo@tunes.org>2021-09-25 15:24:57 +0200
committerArmin Rigo <arigo@tunes.org>2021-09-25 15:24:57 +0200
commit2f99be84d4e550e0e94b43f303f63c7f45979b8f (patch)
treefb2aee76a551e1352eb381ea3393c86bfbbf33de
parentreplace the confusing paragraph with mostly a link to the blog post (diff)
downloadpypy-2f99be84d4e550e0e94b43f303f63c7f45979b8f.tar.gz
pypy-2f99be84d4e550e0e94b43f303f63c7f45979b8f.tar.bz2
pypy-2f99be84d4e550e0e94b43f303f63c7f45979b8f.zip
issue #3463
fix invalid code generation in the ppc backend
-rw-r--r--rpython/jit/backend/ppc/jump.py6
1 files changed, 4 insertions, 2 deletions
diff --git a/rpython/jit/backend/ppc/jump.py b/rpython/jit/backend/ppc/jump.py
index eede8c45aa..e4c6f6cb87 100644
--- a/rpython/jit/backend/ppc/jump.py
+++ b/rpython/jit/backend/ppc/jump.py
@@ -91,7 +91,9 @@ def remap_frame_layout_mixed(assembler,
key = loc.as_key()
if (key in dst_keys or (loc.width > WORD and
(key + 1) in dst_keys)):
- assembler.regalloc_push(loc, len(extrapushes))
+ # don't call regalloc_push with already_pushed==0 here
+ # because it can conflict with the regalloc_push() above
+ assembler.regalloc_push(loc, len(extrapushes) + 1)
extrapushes.append(dstloc)
continue
src_locations2red.append(loc)
@@ -108,4 +110,4 @@ def remap_frame_layout_mixed(assembler,
# finally, pop the extra fp stack locations
while len(extrapushes) > 0:
loc = extrapushes.pop()
- assembler.regalloc_pop(loc, len(extrapushes))
+ assembler.regalloc_pop(loc, len(extrapushes) + 1)