<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/111555>111555</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [RISC-V] Miscompile at -O3
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          patrick-rivos
      </td>
    </tr>
</table>

<pre>
    Testcase:
```c
int printf(const char *, ...);
short a, d, k, r, s;
int b, c, f, i, w, y = -963555834;
char e, g, h, j, n, p, u, x;
unsigned l;
long m;
long long aa;
void ab(short ac, int ad, int ae, unsigned af) {
  for (long o = 0; o < 10969; o += af)
    for (int q = 0; q < (s ?: (0 >= ae) > p); q = -10827206556692219962ULL) {
      for (int t = j; t; t = u) {
 for (int v = 0; v < i; v += 2) {
          for (long z = r; z; z += 4) {
            a = w ? k / j : m;
            b = x ? ad ? p ?: d : 0 : r;
          }
          for (; 0 < ({
 __typeof__(0) ag = l;
                   ag;
                 });)
 ;
          for (char ah = 0; ah < 1; ah += 178)
 ;
          for (; 2 < w;)
            ;
          for (; 0 < s;)
            ;
          for (int ai = 0; ai < 21; ai += 4)
 ;
          for (; p;)
            c = 0;
        }
 for (short aj = 0; aj < 3; aj += r) {
          for (char ak = j; ak; ak++)
            d ^= ~0;
          for (short al = (unsigned short)ad - 24655; al < (short)l; al += 4)
            e += ae;
          for (short am = (unsigned short)ad - 24655; am; am = 4)
            ;
 }
      }
      for (int an = 0; an < ae + 963555845; an += 4)
 for (long ao = s; ao < ae + 963555845; ao += 4) {
          for (char ap = -7; ap < 3; ap += ac)
            for (char aq = n; aq < 1; aq += 2) {
              f += ac;
              g = ({
 __typeof__(0) ar = b ? ({ r < (unsigned short)p; }) : 0;
                g ?: ar;
              });
            }
          h = ({ h ?: x; });
        }
    }
}
void as(long long *ac, int ad) { *ac = ad; }
int main() {
  ab(2, 10958, y, 8);
  as(&aa, f);
 printf("%llu\n", aa);
}
```

Commands:
```
> /scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/clang -march=rv64gcv -O3 red.c -o user-config.out -fsigned-char -fno-strict-aliasing -fwrapv
red.c:10:51: warning: implicit conversion from 'unsigned long long' to 'int' changes value from 7619537517017331654 to 1855223750 [-Wconstant-conversion]
   10 |     for (int q = 0; q < (s ?: (0 >= ae) > p); q = -10827206556692219962ULL) {
      | ~ ^~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
> QEMU_CPU=rv64,vlen=128,rvv_ta_all_1s=true,rvv_ma_all_1s=true,v=true,vext_spec=v1.0,zve32f=true,zve64f=true timeout --verbose -k 0.1 4 /scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/bin/qemu-riscv64 user-config.out
0

> /scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/clang -march=rv64gcv -O2 red.c -o user-config.out -fsigned-char -fno-strict-aliasing -fwrapv
red.c:10:51: warning: implicit conversion from 'unsigned long long' to 'int' changes value from 7619537517017331654 to 1855223750 [-Wconstant-conversion]
   10 |     for (int q = 0; q < (s ?: (0 >= ae) > p); q = -10827206556692219962ULL) {
      | ~ ^~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
> QEMU_CPU=rv64,vlen=128,rvv_ta_all_1s=true,rvv_ma_all_1s=true,v=true,vext_spec=v1.0,zve32f=true,zve64f=true timeout --verbose -k 0.1 4 /scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/bin/qemu-riscv64 user-config.out
123480
```

-opt-bisect-limit points to Stack Slot Coloring on function (ab)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWEmP47oR_jX0hZAhUaKWgw_d9hgI8B6yTCY5GhRFyWxra5JS9_RhfnvA0uq2u2eCAAkQPMMoc6nlY7GqWDDTWha1EDtEHxE9bFhnzo3atcwoyS-Okn2jN2mTfd_9XWjDmRbIf0DuAbkPKHSHLx_msja4VbI2OSIxb2ptMD8zhRF5QGSPt9stIgnyHwdufW6UwczuZJZcLFGW6JnHakztErckt0Ra8mLJd4z8A3aS0KeUxn4wS4FRYVkKS86WPFlSW9Ja0lnyOkt0NTghw-W8VDZ1gavrKRDG5sW-kRlmKSLxeBiAaUGzbB4BkNkAyxFJMIpGDRjnjXVQDKobOJGL_EcY7rHnJmEyTsmj3QT5SXaWtoaeF-FnELawMPKPyH-wYxcj_wuoEADB_2JdkUz8B-x4bkwi4oaUhmFCiJckIfn222_vAL8za0D2yaoxQGDeXQut-PsFZg8w5TgczkfuWFtZBDe9gQpl5d6ATMLBB8IYMxB5se7AF4zIET9h65flgtfcKXC_AjfL4KedPJmBnAtU3ZFG0eED7BaqO93MgvJ0Mt9b0eSnk70kewJWgP3yLrbpQMXHuxbCkGhzqNxhHlFBsrDzcisw3mNvGg-u9aL4V7RZIQLyL1f21-g-FR4cpP99Ycg1uTqGBE3EmyZLiPzSKdqPIPDZxvXecvGjlrEmPK0wPQEmfxoPkNTnIT9c0GVJM3YZKXmE7x2MGUYUcv3HLU78Dl8JmhGJ5xoFG4gkLMMOJkFIKRgs56oy7pfT8o1rVx8xVy7xUyjVr0KpBoo_NrvYepeQ76br6KlXN1XDYRmgx-MTE9Bp6-bA6_LEhjKugbn5WE_zs7J1FQDtUKMjEG1XcdTODuZ3PXGlZaj0NQg-r_L8-Wf1FzStLN0vPsV0gZ-WNwVcKdTVgRerKbZubt7m4VjRhsr7Yd0rphLN7tVlfFUYb-PltmyfV4eBCSh_XfB8UgLWk3kwtAt6ihMgiDxcdw3g_WEZ7LNsMjh3RBWTtYV1fVPQhxCrynMTGkOHZEl8jRTsIxIyNrZUq825eUOEIELLskN0X8Nkb_ueFe9yuqkJHKdA901VsTrTt63iOPW_2EdYc8UMPyNyNNwxQhtZF8OEN1UrS6GcvHt7c4zq6gsix7STZeYUvJ_HZdlXTinr7tUuWbccecnqAjsVU_yM_IPqw6DgPXb-7GMlsi3HToM7LZTDmzqXxbbpDHbyIeocyBInrxtH2_7XOKyUTEurMH9RrO0H_KAI-Q-ei_wH6tm4eGGqtvD9ByyrtpRcGsybuhdKy6bGuWoqjEi0dJpTCCASYWNrQSRrYyf8zOpCaNyzshODYBR6CfUj6kWuF_m-F9LAyngxpYT4EXUxoo_OP6HnZrVxFsOILiHpuRhF-_dl77_ZN1rzP-zb9OP-Z-D1JmfiQtRCMSOy7RI3f_3y-7fT_i_fxrtFZN-Xokb-wbNxu1d9fzLsxMry5GnkH4zqxLhc3S73q6F4NSfdCo78Q-9tXUT2b73wSb6wvPUiDKY5NrISEDxOL1TaaIGdC3a3Hg7-49iGQH4WVecoqXkfBu8jdnDHVc79T3KK_JFTf-TU_1VOecQPYveTt81pWuOkUgtunFJW0uC2kbXRNni-GsYv-GvZGLxvykZZf9tA7WpubMQiEttnOtlkOz9L_IRtxM6LSBy4lJBoc95xGjAq4iAOeE5FRMI4zvM0DgnNgywJw43cEZcEnuvGXuj7QbjN0lDwNBIxS3OeZj4KXFExWW5tGm8bVWyk1p3YeZ5HKd2ULBWlhj97CKnFC4Zd-8TTw0btIPfTrtAocEupjV7UGGlK-Jfob3_6unf-gegB_y716HjMjH1hN50qd2djWnj5yRGRYyHNuUu3vKkQOVpl44_TquZJcIPIESBoRI4jxn5H_hUAAP__U672iA">