|
From: Andreas A. <ar...@so...> - 2020-04-08 17:59:40
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=6a90a15b9c0cbf38b6a9f17e5fa28199e155de73 commit 6a90a15b9c0cbf38b6a9f17e5fa28199e155de73 Author: Andreas Arnez <ar...@li...> Date: Fri Apr 3 19:16:01 2020 +0200 s390x: Drop spurious register moves in CDAS instruction selector The s390x instruction selector for Ist_CAS, in its handling of "compare double and swap", adds spurious register moves after the CDAS operation itself. These moves overwrite registers returned by calls to s390_isel_int_expr(), potentially causing corruption of temp values. Delete the spurious move operations after CDAS. Diff: --- VEX/priv/host_s390_isel.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/VEX/priv/host_s390_isel.c b/VEX/priv/host_s390_isel.c index 882e72cd6c..2f80dd8504 100644 --- a/VEX/priv/host_s390_isel.c +++ b/VEX/priv/host_s390_isel.c @@ -5185,10 +5185,6 @@ no_memcpy_put: addInstr(env, s390_insn_cdas(8, r8, r9, op2, r10, r11, old_high, old_low, r1)); } - addInstr(env, s390_insn_move(8, op1_high, r8)); - addInstr(env, s390_insn_move(8, op1_low, r9)); - addInstr(env, s390_insn_move(8, op3_high, r10)); - addInstr(env, s390_insn_move(8, op3_low, r11)); return; } break; |