<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/54451>54451</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[optimization] gcc generate better code than clang related to loop ivopts
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
vfdff
</td>
</tr>
</table>
<pre>
test case: see detail on https://godbolt.org/z/oE5PeP8sb
```
void func(int ij, int l, int k, double rhog[ADM_lall][ADM_kall][ADM_gall],
double rhog_split[ADM_lall][ADM_kall][ADM_gall] ) {
for (ij = 0; ij < ADM_gall; ij++) {
rhog[l][k][ij] += rhog_split[l][k][ij];
}
}
```
* gcc's kernel loop
```
.L2:
ldr d0, [x1, x0]
ldr d1, [x2, x0]
fadd d0, d0, d1
str d0, [x1, x0]
add x0, x0, 8
cmp x0, x3
bne .L2
```
* clang's kernel loop
```
.LBB0_1: // =>This Inner Loop Header: Depth=1
lsl x11, x10, #3
add x10, x10, #1
cmp x10, #1156
ldr d0, [x8, x11]
ldr d1, [x9, x11]
fadd d0, d0, d1
str d0, [x9, x11]
b.ne .LBB0_1
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyNVEuPmzAQ_jXmMmoEBgIcOITNVq20lfbQ-8rgAbxxMMImTffX1-aRbLpptZFj5uH5ZuYby6Xiv3OD2kDFNJJwBxoROBomJKgOWmN6bc2EfrWrUbxU0mzU0Fjtzf7VY_yMz6kuib8n_o5s_WVN6kkJDvXYVYSmojMgXgl9ACfJVTg4gauxlAhDqxoSF7v9jxfJpCTxftEON1qzaPRhzgKX3zucF91LYT6PBoRmQJJi6cPPajWAK_sVSLgHn4QFTPIDXKImE6HFtG6j7Vq6WVId5o89P-UqHOhNnXfO2QRXwGS_yBfhlutlpztoKst3ouGAQ4cSpFL93YjNE3WTXTiUfADuu2nY9OfACWffFfHeH6x--sFfM84XgGUPVpc2_4d2kWd_Mds9XR3VsV8d4WorOwRX-V0ObPeVZF3zyf6Lwn8J3KWfr7ebNAkff7ZCw_euwwGebCx8Q8ZxcMf22JvWHrp0JrWEczB3FMwd0jC86Ws2X73BTXNXcxBv748ineODf84i-3jg08O4E1tuJoZnbu7x5vE85FmYMc8IIzG3OKo34ijemBGqcxfcXkFo0DLIDEKJxlguK8URTMu6eUQwoLReDkZNIwJxsijaGweZ__XqCNOO5aZSR6tIeVo_X_pBvWJlrCq0HlFbIY6iOPDaPEoTTNMkyVKsym1U8jpLyirNwjTZsgipJ1mJUrvaCaUd_oIJwsq2fE_k1KfUD4PMp1HkZxvEtKZRvE2zKqMsiEnk49E-kRtXh3sOvSGfSirHRlunFNroq5NpLZoOJ6ocPhtNq4b8VPO69qbE-VT4H-eFgzc">