]> sourceware.org Git - valgrind.git/commitdiff
s390x regtest: Additional test case fixes
authorAndreas Arnez <arnez@linux.ibm.com>
Fri, 29 Sep 2023 14:11:31 +0000 (16:11 +0200)
committerAndreas Arnez <arnez@linux.ibm.com>
Fri, 29 Sep 2023 14:11:31 +0000 (16:11 +0200)
While fixing Clang compilation issues, I noticed additional problematic
constructs in s390x test cases, some of which are uncovered with compiler
optimization options such as -O3:

* `bic.c' relies on an int to be sign-extended when passing it in a
  register to an inline-assembly.

* `cksm.c' clobbers a register in an inline assembly without specifying
  that.

* `cu12.c' and `cu14.c' read the variable `pattern1' beyond its size.

* `mvst.c' modifies input operands in inline assemblies.

* `srnmb.c' relies on Valgrind's error message for a bad rounding mode to
  point to the line number where get_rounding_mode() is called, not to the
  function itself.

* `stfle.c' has a code path with an uninitialized variable that may cause
  a compiler warning.

* `stmg.c' modifies r15 in an inline assembly and doesn't expect the
  compiler to use r15 as the base address for an input operand.

* Various inline assemblies use the "=m" constraint even when the
  instruction only supports more restricted address operands.

Fix all of the above.  For consistency and clarity, avoid the "=m"
constraint even when it would be applicable.

23 files changed:
none/tests/s390x/bic.c
none/tests/s390x/cksm.c
none/tests/s390x/cu12.c
none/tests/s390x/cu12.stdout.exp
none/tests/s390x/cu12_1.stdout.exp
none/tests/s390x/cu14.c
none/tests/s390x/cu14.stdout.exp
none/tests/s390x/cu14_1.stdout.exp
none/tests/s390x/cvd.c
none/tests/s390x/flogr.c
none/tests/s390x/mvst.c
none/tests/s390x/rounding-2.c
none/tests/s390x/rounding-3.c
none/tests/s390x/srnm.c
none/tests/s390x/srnmb.c
none/tests/s390x/srnmb.stderr.exp
none/tests/s390x/srnmt.c
none/tests/s390x/stfle.c
none/tests/s390x/stmg.c
none/tests/s390x/stmg.stdout.exp
none/tests/s390x/test.h
none/tests/s390x/tm.c
none/tests/s390x/tmll.c

index e703cc4c4b90bbd50d93d988af0a46231505a34a..c7d7412307d0219017672bb29fa45196b013844d 100644 (file)
@@ -26,7 +26,7 @@
              ".quad 5b\n" \
              "7:\n"
 
-static int bic0(int i)
+static long bic0(long i)
 {
    void *table;
    asm volatile(HEAD
@@ -41,7 +41,7 @@ static int bic0(int i)
    return i;
 }
 
-static int bic4(int i)
+static long bic4(long i)
 {
    void *table;
    asm volatile(HEAD
@@ -53,7 +53,7 @@ static int bic4(int i)
    return i;
 }
 
-static int bic15(int i)
+static long bic15(long i)
 {
    void *table;
    asm volatile(HEAD
@@ -68,11 +68,11 @@ static int bic15(int i)
 
 int main()
 {
-   int i;
+   long i;
 
    for (i = 0; i < 16; i++) {
-      printf("bic0:  %d -> %d\n", i, bic0(i));
-      printf("bic4:  %d -> %d\n", i, bic4(i));
-      printf("bic15: %d -> %d\n", i, bic15(i));
+      printf("bic0:  %ld -> %ld\n", i, bic0(i));
+      printf("bic4:  %ld -> %ld\n", i, bic4(i));
+      printf("bic15: %ld -> %ld\n", i, bic15(i));
    }
 }
index 6051a06682b00f273c5f8a0f7c9bd542d804f233..aa83ca46d82339e82692a40c75248b020ff05612 100644 (file)
@@ -26,11 +26,10 @@ cksm_by_insn(const uint32_t *buff, uint64_t len, uint32_t sum)
   register uint64_t reg2 asm("2") = (uint64_t) buff;
   register uint64_t reg3 asm("3") = len;
 
-  asm volatile( "       lhi     4,42\n\t"
-                "       xr      4,4\n\t"        /* set cc to != 0 */
+  asm volatile( "       cr      0,0\n\t"        /* set cc to 0 */
                 "0:    cksm    %0,%1\n\t"      /* do checksum on longs */
                "       jo      0b\n\t"
-               : "+d" (sum), "+d" (reg2), "+d" (reg3) : : "cc", "memory");
+               : "+d" (sum), "+a" (reg2), "+a" (reg3) : : "cc");
 
   cc   = get_cc();
   len  = reg3;
index 128111807d2a96bf4c64b1e4a5faa4c40b6d9fb2..8a2ffdabe31a3fc369ac7cbd27c1e9a0e3147a52 100644 (file)
@@ -583,9 +583,9 @@ int main()
    /* At least one character will be written to BUFF, i.e. loop in jitted
       code is iterated */
    run_test(buff, 4, pattern1, sizeof pattern1);
-   run_test(buff, 5, pattern1, sizeof pattern2);
-   run_test(buff, 6, pattern1, sizeof pattern3);
-   run_test(buff, 7, pattern1, sizeof pattern4);
+   run_test(buff, 5, pattern1, sizeof pattern1);
+   run_test(buff, 6, pattern1, sizeof pattern1);
+   run_test(buff, 7, pattern1, sizeof pattern1);
 
    /* Convert buffer with mixed characters */
    printf("\n------------- test4 ----------------\n");
index 59c5dc91c3a8ebf8bc568f249435f532542b824b..4ea16b3dca6d2d99798df22a83b292adbecf33e0 100644 (file)
@@ -1301,21 +1301,21 @@ UTF16:  0000 0001
   cc = 1
   dst address difference: 4  dst len: 0
   src address difference: 2  src len: 2
-UTF8:   00 01 02 03 c2 80 c2 81
+UTF8:   00 01 02 03
 UTF16:  0000 0001
   cc = 1
   dst address difference: 4  dst len: 1
-  src address difference: 2  src len: 6
-UTF8:   00 01 02 03 c2 80 c2 81 c2 82 c2 83
+  src address difference: 2  src len: 2
+UTF8:   00 01 02 03
 UTF16:  0000 0001 0002
   cc = 1
   dst address difference: 6  dst len: 0
-  src address difference: 3  src len: 9
-UTF8:   00 01 02 03 c2 80 c2 81 c2 82 c2 83 e1 80 80 e1
+  src address difference: 3  src len: 1
+UTF8:   00 01 02 03
 UTF16:  0000 0001 0002
   cc = 1
   dst address difference: 6  dst len: 1
-  src address difference: 3  src len: 13
+  src address difference: 3  src len: 1
 
 ------------- test4 ----------------
 UTF8:   01 c3 80 12 e1 90 93 23 f4 80 90 8a 34 c4 8c e1 91 94 c5 8a f4 80 90 8a c5 8a e1 91 94 f4 80 90 8a e1 91 94
index d5a616fe8f9afddf24c97b7c776c2316f70bbe58..7a2df66d5ef0f08225a1fee513818eea586c481e 100644 (file)
@@ -1301,21 +1301,21 @@ UTF16:  0000 0001
   cc = 1
   dst address difference: 4  dst len: 0
   src address difference: 2  src len: 2
-UTF8:   00 01 02 03 c2 80 c2 81
+UTF8:   00 01 02 03
 UTF16:  0000 0001
   cc = 1
   dst address difference: 4  dst len: 1
-  src address difference: 2  src len: 6
-UTF8:   00 01 02 03 c2 80 c2 81 c2 82 c2 83
+  src address difference: 2  src len: 2
+UTF8:   00 01 02 03
 UTF16:  0000 0001 0002
   cc = 1
   dst address difference: 6  dst len: 0
-  src address difference: 3  src len: 9
-UTF8:   00 01 02 03 c2 80 c2 81 c2 82 c2 83 e1 80 80 e1
+  src address difference: 3  src len: 1
+UTF8:   00 01 02 03
 UTF16:  0000 0001 0002
   cc = 1
   dst address difference: 6  dst len: 1
-  src address difference: 3  src len: 13
+  src address difference: 3  src len: 1
 
 ------------- test4 ----------------
 UTF8:   01 c3 80 12 e1 90 93 23 f4 80 90 8a 34 c4 8c e1 91 94 c5 8a f4 80 90 8a c5 8a e1 91 94 f4 80 90 8a e1 91 94
index 44738c785bbc18c2081e58502625cdeb2567d14b..111eaff63b86fdd0f378f6dbafff176b7f8c7d93 100644 (file)
@@ -583,9 +583,9 @@ int main()
    /* At least one character will be written to BUFF, i.e. loop in jitted
       code is iterated */
    run_test(buff, 4, pattern1, sizeof pattern1);
-   run_test(buff, 5, pattern1, sizeof pattern2);
-   run_test(buff, 6, pattern1, sizeof pattern3);
-   run_test(buff, 7, pattern1, sizeof pattern4);
+   run_test(buff, 5, pattern1, sizeof pattern1);
+   run_test(buff, 6, pattern1, sizeof pattern1);
+   run_test(buff, 7, pattern1, sizeof pattern1);
 
    /* Convert buffer with mixed characters */
    printf("\n------------- test4 ----------------\n");
index 9cba92d19105347ba56b0d0c65e1605a22693749..37682c6fe6c791984bd6019be9784f4136b4f7e3 100644 (file)
@@ -1301,21 +1301,21 @@ UTF32:  00000000
   cc = 1
   dst address difference: 4  dst len: 0
   src address difference: 1  src len: 3
-UTF8:   00 01 02 03 c2 80 c2 81
+UTF8:   00 01 02 03
 UTF32:  00000000
   cc = 1
   dst address difference: 4  dst len: 1
-  src address difference: 1  src len: 7
-UTF8:   00 01 02 03 c2 80 c2 81 c2 82 c2 83
+  src address difference: 1  src len: 3
+UTF8:   00 01 02 03
 UTF32:  00000000
   cc = 1
   dst address difference: 4  dst len: 2
-  src address difference: 1  src len: 11
-UTF8:   00 01 02 03 c2 80 c2 81 c2 82 c2 83 e1 80 80 e1
+  src address difference: 1  src len: 3
+UTF8:   00 01 02 03
 UTF32:  00000000
   cc = 1
   dst address difference: 4  dst len: 3
-  src address difference: 1  src len: 15
+  src address difference: 1  src len: 3
 
 ------------- test4 ----------------
 UTF8:   01 c3 80 12 e1 90 93 23 f4 80 90 8a 34 c4 8c e1 91 94 c5 8a f4 80 90 8a c5 8a e1 91 94 f4 80 90 8a e1 91 94
index a685c0eb588606b840be6a67a99ca05effa44b86..7ba6f6dc1e0ab9a0092e19a70d2ae3b007182826 100644 (file)
@@ -1301,21 +1301,21 @@ UTF32:  00000000
   cc = 1
   dst address difference: 4  dst len: 0
   src address difference: 1  src len: 3
-UTF8:   00 01 02 03 c2 80 c2 81
+UTF8:   00 01 02 03
 UTF32:  00000000
   cc = 1
   dst address difference: 4  dst len: 1
-  src address difference: 1  src len: 7
-UTF8:   00 01 02 03 c2 80 c2 81 c2 82 c2 83
+  src address difference: 1  src len: 3
+UTF8:   00 01 02 03
 UTF32:  00000000
   cc = 1
   dst address difference: 4  dst len: 2
-  src address difference: 1  src len: 11
-UTF8:   00 01 02 03 c2 80 c2 81 c2 82 c2 83 e1 80 80 e1
+  src address difference: 1  src len: 3
+UTF8:   00 01 02 03
 UTF32:  00000000
   cc = 1
   dst address difference: 4  dst len: 3
-  src address difference: 1  src len: 15
+  src address difference: 1  src len: 3
 
 ------------- test4 ----------------
 UTF8:   01 c3 80 12 e1 90 93 23 f4 80 90 8a 34 c4 8c e1 91 94 c5 8a f4 80 90 8a c5 8a e1 91 94 f4 80 90 8a e1 91 94
index 3fe8f487a3c85c53e325b00c094f4bfc540f2f70..041cdcbceffbae2f4019544accf5b4665912d7fb 100644 (file)
@@ -16,12 +16,9 @@ static signed int test[] ={
 
 static unsigned long hex_to_dec(signed int num)
 {
-       unsigned long addr = 0;
-
-       asm volatile(
-       "       cvd %2,%0"
-               : "=m" (addr) : "a" (&addr) , "d" (num) : "memory");
-       return addr;
+       unsigned long dec;
+       asm ("cvd %1,%0" : "=S" (dec) : "d" (num) : );
+       return dec;
 }
 
 int main()
index df63bd8513008021d9e6fc1de7841a22d7986592..079dc41052a8bd1e6fad3d2bd1cb9b8b56286f04 100644 (file)
@@ -24,7 +24,7 @@ flogr1(unsigned long input, unsigned long *bitpos, unsigned long *modval,
                   "ipm   %[psw]\n\t"
                   "stg   2, %[bitpos]\n\t"
                   "stg   3, %[modval]\n\t"
-                  : [bitpos]"=m"(*bitpos), [modval]"=m"(*modval),
+                  : [bitpos]"=T"(*bitpos), [modval]"=T"(*modval),
                     [psw]"=&d"(psw)
                   : [val] "d"(value)
                   : "2", "3", "cc");
@@ -48,7 +48,7 @@ flogr2(unsigned long input, unsigned long *bitpos, unsigned long *modval,
                   "ipm   %[psw]\n\t"
                   "stg   2, %[bitpos]\n\t"
                   "stg   3, %[modval]\n\t"
-                  : [bitpos]"=m"(*bitpos), [modval]"=m"(*modval),
+                  : [bitpos]"=T"(*bitpos), [modval]"=T"(*modval),
                     [psw]"=&d"(psw), [val] "+d"(value)
                   :
                   : "3", "cc");
@@ -72,7 +72,7 @@ flogr3(unsigned long input, unsigned long *bitpos, unsigned long *modval,
                   "ipm   %[psw]\n\t"
                   "stg   2, %[bitpos]\n\t"
                   "stg   3, %[modval]\n\t"
-                  : [bitpos]"=m"(*bitpos), [modval]"=m"(*modval),
+                  : [bitpos]"=T"(*bitpos), [modval]"=T"(*modval),
                     [psw]"=&d"(psw), [val] "+d"(value)
                   :
                   : "2", "cc");
index ac85f12c4fe3b59a03b69e3a6f81453566d9a867..d2144417ebddd292310270355f64aad1b349bf44 100644 (file)
@@ -15,20 +15,20 @@ char target[512];
 
 int mvst(void *targetp, void *source)
 {
+       register int eos asm("0") = '\0';
        asm volatile(
-               "       lhi 0, 0\n"
                "       mvst %0, %1\n"
-               ::"a" (targetp),"a" (source): "0", "memory", "cc");
+               : "+a"(targetp), "+a"(source) : "d"(eos) : "memory", "cc");
        return get_cc();
 }
 
 int mvst_full(void *targetp, void *source)
 {
+       register int eos asm("0") = '\0';
        asm volatile(
-               "       lhi 0, 0\n"
                "0:     mvst %0, %1\n"
                "       jo 0b\n"
-               ::"a" (targetp),"a" (source): "0", "memory", "cc");
+               : "+a"(targetp), "+a"(source) : "d"(eos) : "memory", "cc");
        return get_cc();
 }
 
index ecc5a199e9429f2b474e1b416ccab70a9856a50a..32813ad267417347d9685f4c2ecf8aa9a4a1ed1c 100644 (file)
@@ -18,7 +18,7 @@ get_rounding_mode(void)
 {
    unsigned fpc;
 
-   __asm__ volatile ("stfpc  %0\n\t" : "=m"(fpc));
+   __asm__ volatile ("stfpc  %0" : "=Q"(fpc));
 
    return fpc & 0x7;
 }
index 698b7d0f19103b7510a1cae451389416963af04a..bd53db686c3350a176f0b018e0915cce89af233e 100644 (file)
@@ -21,7 +21,7 @@ get_rounding_mode(void)
 {
    unsigned fpc;
 
-   __asm__ volatile ("stfpc  %0\n\t" : "=m"(fpc));
+   __asm__ volatile ("stfpc  %0" : "=Q"(fpc));
 
    return fpc & 0x7;
 }
index f38339829d82594302fc92eb701734bc3ae85680..b2948f3277a2bcf04c29f81fb31303b93a95cde3 100644 (file)
@@ -9,15 +9,12 @@
                          "srnm " #d "(8)\n\t" ::: "8"); \
    })
 
-unsigned
-get_rounding_mode(void)
-{
-   unsigned fpc;
-
-   __asm__ volatile ("stfpc  %0\n\t" : "=m"(fpc));
-
-   return fpc & 0x7;
-}
+#define get_rounding_mode() \
+   ({ \
+      unsigned fpc; \
+      __asm__ volatile ("stfpc  %0" : "=Q"(fpc)); \
+      fpc & 0x7; \
+   })
 
 int main(void)
 {
index 4ef9cbd58a70b1539b40ee6c9c9c2bfe687dbe88..548b644ca39978d4cc1521616f100e76e7d14ee0 100644 (file)
                          ::: "0"); \
    })
 
-unsigned
-get_rounding_mode(void)
-{
-   unsigned fpc;
-
-   __asm__ volatile ("stfpc  %0\n\t" : "=m"(fpc));
-
-   return fpc & 0x7;
-}
+#define get_rounding_mode() \
+   ({ \
+      unsigned fpc; \
+      __asm__ volatile ("stfpc  %0" : "=Q"(fpc)); \
+      fpc & 0x7; \
+   })
 
 int main(void)
 {
index 12c94ab5f914765b25e517dd9478572c3623eb27..b9db22774fd3c783a13a1f1f2badced38b89ea4e 100644 (file)
@@ -2,5 +2,5 @@
 Emulation warning: unsupported action:
   The specified rounding mode is invalid.
   Continuing using 'round to nearest'. Results may differ!
-   at 0x........: main (srnmb.c:64)
+   at 0x........: main (srnmb.c:61)
 
index 7776c86768346196e774731497d3c452a7166097..0af5eac04e7e67657dd0f6b88314b9ce14c115be 100644 (file)
                          ::: "0"); \
    })
 
-unsigned
-get_dfp_rounding_mode(void)
-{
-   unsigned fpc;
-
-   __asm__ volatile ("stfpc  %0\n\t" : "=m"(fpc));
+#define get_dfp_rounding_mode() \
+   ({ \
+      unsigned fpc; \
+      __asm__ volatile ("stfpc  %0" : "=Q"(fpc)); \
+      (fpc & 0x70) >> 4; \
+   })
 
-   return (fpc & 0x70) >> 4;
-}
 
 int main(void)
 {
index af884a14cc3f2e04245bc61a3407399452440a13..19f2c61f71f11fcd2d979f22f170db8602e47113 100644 (file)
@@ -6,26 +6,25 @@
 
 unsigned long long stfle(unsigned long dw, unsigned bit_to_test)
 {
-  unsigned long long hoststfle[S390_NUM_FACILITY_DW], match;
+  unsigned long long hoststfle[S390_NUM_FACILITY_DW];
   register unsigned long long __nr asm("0") = dw - 1;
   int cc;
 
   asm volatile(" .insn s,0xb2b00000,%0 \n" /* stfle */
                "ipm %2\n"
                "srl %2,28\n"
-               : "=m" (*hoststfle), "+d" (__nr), "=d" (cc) : : "cc", "memory");
+               : "=Q" (*hoststfle), "+d" (__nr), "=d" (cc) : : "cc", "memory");
 
   printf("the value of cc is %d and #double words is %llu\n", cc, __nr + 1);
   if (bit_to_test < 64)
-    match = (hoststfle[0] & (1ULL << (63 - bit_to_test)));
+    return (hoststfle[0] & (1ULL << (63 - bit_to_test)));
   else if (bit_to_test < 128)
-    match = (hoststfle[1] & (1ULL << (63 - bit_to_test)));
+    return (hoststfle[1] & (1ULL << (63 - bit_to_test)));
   else if (bit_to_test < 192)
-    match = (hoststfle[2] & (1ULL << (63 - bit_to_test)));
-  else
-    printf("code needs to be updated\n");
+    return (hoststfle[2] & (1ULL << (63 - bit_to_test)));
 
-  return match;
+  printf("code needs to be updated\n");
+  return 0;
 }
 
 int main()
index 21765f3854995543550bd1d7fd7af7222e95226f..7f590619009c9c3c65e90541cb24f9c4c48ed79f 100644 (file)
@@ -1,42 +1,45 @@
 #include <stdio.h>
 
-char base[] ="0123456789012345678901234567890123456789";
+static const union words {
+   char c[5 * 8];
+   unsigned long i[5];
+}  base = { .c = "0123456789abcdefghijklmnopqrstuvwxyzABCD" },
+   init = { .c = "._,-'-._,-'-._,-'-._,-'-._,-'-._,-'-._,-" };
 
-void
-stmg_no_wrap(void)
+static void stmg_no_wrap(void)
 {
-   char buf[24];
+   union words buf = init;
+   register unsigned long a asm("5") = base.i[0];
+   register unsigned long b asm("6") = base.i[1];
+   register unsigned long c asm("7") = base.i[2];
 
    /* No-wrap around case; copies 24 bytes from BASE to BUF */
-   asm volatile( "lg   5,  0(%1)\n\t"
-                 "lg   6,  8(%1)\n\t"
-                 "lg   7, 16(%1)\n\t"
-                 "stmg 5, 7, %0\n\t"
-                 :"=m" (buf)
-                 : "a" (base)
-                 : "5", "6", "7");
+   asm ("stmg %[a], %[c], %[buf]"
+        : [buf] "=S"(buf)
+        : [a] "d"(a), "d"(b), [c] "d"(c)
+        : );
+
    /* Write out BUF */
-   fwrite(buf, sizeof(buf), 1, stdout);
+   fwrite(buf.c, sizeof(buf), 1, stdout);
 }
 
-void
-stmg_wrap(void)
+static void stmg_wrap(void)
 {
-   char buf[32];
-
-   /* Wrap around case; copies 32 bytes from BASE to BUF */
-   asm volatile( "lgr   3, 15\n\t"     /* save stack pointer */
-                 "lg    0,  8(%1)\n\t"
-                 "lg    1, 16(%1)\n\t"
-                 "lg    2, 24(%1)\n\t"
-                 "lg   15,  0(%1)\n\t"
-                 "stmg 15, 2, %0\n\t"
-                 "lgr  15, 3"          /* restore stack pointer */
-                 :"=S" (buf)
-                 : "a" (base)
-                 : "0", "1", "2", "3");
+   union words buf = init;
+   register unsigned long sp asm("15");
+   register unsigned long a asm("0") = base.i[2];
+   register unsigned long b asm("1") = base.i[3];
+   register unsigned long c asm("2") = base.i[4];
+
+   /* Wrap around case: avoid changing r15, but ensure it's stored */
+   asm ("stmg 15, %[c], %[buf]"
+        : [buf] "=S"(buf), "=d"(sp)
+        : "d"(a), "d"(b), [c] "d"(c)
+        : );
+   buf.i[0] ^= sp ^ base.i[1];
+
    /* Write out BUF */
-   fwrite(buf, sizeof(buf), 1, stdout);
+   fwrite(buf.c, sizeof(buf), 1, stdout);
 }
 
 
index d7391741e1eff7577eb1d1686e7aa278d45f4195..86227f6b9822da97da4d895c9727df47a4875276 100644 (file)
@@ -1,2 +1,2 @@
-012345678901234567890123
-01234567890123456789012345678901
+0123456789abcdefghijklmn._,-'-._,-'-._,-
+89abcdefghijklmnopqrstuvwxyzABCD,-'-._,-
index c75e14cd8a6e87e1e034cff83bfb1b2a60a690d1..65136c3155115a5ce22f6fc580c4f8b14949fbf7 100644 (file)
@@ -42,7 +42,7 @@ int say(const char *text, unsigned long num_chars)
                        "4:     mvi %0,3\n\t" \
                        "       j 0f\n\t" \
                        "0:     bcr 0,0 /*nop*/\n\t" \
-                       :"=m" (__cc)::"memory"); \
+                       :"=Q" (__cc)::"memory"); \
        __cc; \
 })
 
index 615b2cfdd182e14bf68ed7177228164aea80c0b8..78a320b937bf91e359cc864906d6b749f5359531 100644 (file)
@@ -19,7 +19,7 @@
                  "4:  mvi %0,3\n\t" \
                  "j   0f\n\t" \
                  "0:  /* nop */ brc 0,0\n\t" \
-                 : "=m" (__cc) : : "memory"); \
+                 : "=Q" (__cc) : : "memory"); \
        __cc; \
 })
 
index 477bf6ed5d3b188d914db993936044c880100fcd..f163e6f84ec424e0b14121e0c20063c643e069f6 100644 (file)
@@ -19,7 +19,7 @@
                  "4:  mvi %0,3\n\t" \
                  "j   0f\n\t" \
                  "0:  /* nop */ brc 0,0\n\t" \
-                 : "=m" (__cc) : : "memory"); \
+                 : "=Q" (__cc) : : "memory"); \
        __cc; \
 })
 
This page took 0.095963 seconds and 5 git commands to generate.