|
From: Andreas A. <ar...@so...> - 2020-02-11 18:29:54
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=b729c0f35cf9663e610756b0d56fbbf3705b5209 commit b729c0f35cf9663e610756b0d56fbbf3705b5209 Author: Andreas Arnez <ar...@li...> Date: Mon Feb 10 13:37:03 2020 +0100 s390x: Fix printing of virtual register numbers As noticed by Julian Seward, the code for printing s390x register names currently does not show the virtual register numbers correctly. Although it distinguishes between virtual and real registers, it uses the hardware register number for both cases. This is fixed. Diff: --- VEX/priv/host_s390_defs.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/VEX/priv/host_s390_defs.c b/VEX/priv/host_s390_defs.c index 162550f..9ad7240 100644 --- a/VEX/priv/host_s390_defs.c +++ b/VEX/priv/host_s390_defs.c @@ -112,12 +112,9 @@ s390_hreg_as_string(HReg reg) "%v24", "%v25", "%v26", "%v27", "%v28", "%v29", "%v30", "%v31" }; - UInt r; /* hregNumber() returns an UInt */ - - r = hregNumber(reg); - /* Be generic for all virtual regs. */ if (hregIsVirtual(reg)) { + UInt r = hregIndex(reg); buf[0] = '\0'; switch (hregClass(reg)) { case HRcInt64: vex_sprintf(buf, "%%vR%u", r); break; @@ -129,6 +126,7 @@ s390_hreg_as_string(HReg reg) } /* But specific for real regs. */ + UInt r = hregNumber(reg); switch (hregClass(reg)) { case HRcInt64: vassert(r < 16); return ireg_names[r]; case HRcFlt64: vassert(r < 16); return freg_names[r]; |