]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
s390x: Fix printing of virtual register numbers
authorAndreas Arnez <arnez@linux.ibm.com>
Mon, 10 Feb 2020 12:37:03 +0000 (13:37 +0100)
committerAndreas Arnez <arnez@linux.ibm.com>
Tue, 11 Feb 2020 17:01:15 +0000 (18:01 +0100)
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.

VEX/priv/host_s390_defs.c

index 162550fd707c3f0d322a1807f9b5e6c0995ef5a2..9ad7240c424ebe796889b2cabd4c071a1279e391 100644 (file)
@@ -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];