<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">