<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/111251>111251</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Unexpected O1 Optimization Result
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
zchrissirhcz
</td>
</tr>
</table>
<pre>
When calculate fibonacci number with `int` type, I throw an exception when result is greater than maximum int value. If specified `-O1` with `x86-64 clang(trunk)`(on GodBolt), it gives wrong result:
```
i = 46, fibo = 1836311903, a = 701408733, b = 1134903170
i = 47, fibo = -1323752223, a = 1134903170, b = 1836311903
i = 48, fibo = 512559680, a = 1836311903, b = -1323752223
i = 49, fibo = -811192543, a = -1323752223, b = 512559680
...
```
If no `-O1` specified, or using `x86-64 gcc(trunk)`, the result is expected:
```
terminate called after throwing an instance of 'std::runtime_error'
what(): Overflow at i = 47, c = -1323752223, a = 1134903170, b = 1836311903
Program terminated with signal: SIGSEGV
```
Reproduce code and compiler running result, see https://godbolt.org/z/WzfTqWhzd
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyklM9vrDYQx_8acxll5R_AwoFDXtKNckr1XtscK2MGcGtsapvdvP3rK7PJWzateqmEjDzgz_frmbFlCHqwiA0pvpDiMZNLHJ1vzmr0OgTtR3XOWtd9b15HtKCkUYuREaHXrbNSKQ12mVr0cNJxBFJSbSMpKcTvMxL-AM8QR-9OIC3gm8I5amfhlFgew2Ii6ACDRxnRQxylhUm-6WmZQNsIR2kW3MFzD2FGpXuNXZK4e2FJ4kPxrSrvyhyUkXYgvIp-sX8SXpOSEl45C0-u--JMTCH-ADrCoI8Y4OSdHd5dEHFP6COhH2NJ3591qoGIR8jLtDzte52ySpSCsZqKFJZrbE9ZTqu9WEPt5Tcm8poKtr9l7W9Yd0xwsS845xvYZuWVdhXd0qobWsF4UdRlRTesG7PtP0S3sPrWWsUYq3mRb5x9stt-Ul1hu93uX3N5GZ97sG5Tyh_lTTznYQnaDpvaDkp9ruwDxBE3TYRvM6qI3bWUt8IR_aRtal0ljcEOZH_pOe9OSUxa0DZEaRWC64HwfYgrTNz7xUY94e_ovfOE7y9AgNMoI-FVciTuAV6O6HuTej3Ctszq_9X4Z-8GLyf4sYHu0vnp3EqTlL89P3376em3_8j3V5y96xaFoFyHIG0Hyk2zNujBL9bq60ngDxAQYYxxDmn7_ED4YXBd60zcOT8QfjgTfng997_89Tqeu6xrRFeLWmbYsD2vmGBUVNnY5EUrFFV1LguZ921XVD1WhaSiFAUrapnphlOeM0oLxrkoip1kZV9JhaqXMqcUSU5xktrsjDlOSTvTISzYMMZ4wTIjWzRhvbg4t3iC9SvhPN1jvkmL7tplCCSnRocYrpioo8HmV_vRM_DC4GWOetJnuV5QX9dcZIs3zadE6Dgu7U65ifBD4r2_7mbv_kAVCT-sLgLhh3ebx4b_HQAA__-mfouE">