From: Andreas Arnez Date: Mon, 10 Feb 2020 12:37:03 +0000 (+0100) Subject: s390x: Fix printing of virtual register numbers X-Git-Tag: VALGRIND_3_16_0~102 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b729c0f35cf9663e610756b0d56fbbf3705b5209;p=thirdparty%2Fvalgrind.git 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 --git a/VEX/priv/host_s390_defs.c b/VEX/priv/host_s390_defs.c index 162550fd70..9ad7240c42 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];