diff options
author | 2021-09-25 15:24:57 +0200 | |
---|---|---|
committer | 2021-09-25 15:24:57 +0200 | |
commit | 2f99be84d4e550e0e94b43f303f63c7f45979b8f (patch) | |
tree | fb2aee76a551e1352eb381ea3393c86bfbbf33de | |
parent | replace the confusing paragraph with mostly a link to the blog post (diff) | |
download | pypy-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.py | 6 |
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) |