<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/140534>140534</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Clang 19 regression: SIGFPE on -O2
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
roe85
</td>
</tr>
</table>
<pre>
I tried compiling our codebase and I get SIGFPE in a innocent looking function.
I've added `noinline`, to isolate it further. When called deep in the call tree it crashes with SIGFPE (which should be impossible with the given datatypes)
If I call it in an isolated unit-test with the very same parameters `(3,0, 200)` it works as expected
```
[[clang::noinline]]
/*static*/ bool SomeClass::checkIfObjTooBig(uint size_radial, uint size_azimuthal, uint max)
{
return (size_azimuthal > sqrt(2) * max ||
size_radial > sqrt(2) * max);
}
```
The generated Assembly with the supposed crash location.
```
mov %esi,%eax
cvtsi2sd %rax,%xmm0
mov %edx,%eax
cvtsi2sd %rax,%xmm1
mulsd 0x2eb12(%rip),%xmm1 # 0x57bfb8
mov %edi,%eax
cvtsi2sd %rax,%xmm2
movapd %xmm1,%xmm3
cmpltpd %xmm2,%xmm3 #<- Supposedly SIGFPE happens here
cmpltpd %xmm0,%xmm1
orpd %xmm3,%xmm1
movd %xmm1,%eax
and $0x1,%al
retq
```
Command line parameters:
```
-D_REENTRANT -m64 -march=x86-64 -pipe -fno-strict-aliasing -O2 -g -DNDEBUG -std=c++14
```
Could it be that some (parts of) registers are polluted and not really cleared beforehand?
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyMVV2P2joT_jXmZpSV4yR8XOQiwFJx075q99W5rBx7IG4dO7UdCv31RxOg7G51pCJLJJ55Zp75jIzRHB1izao1q7YzOabOhzp4XFaz1utLvYcUDGpQvh-MNe4IfgygvMZWRgTpNOzhiAm-7D_s_vcMxoEE45xX6BJY778T5jA6lYx3T8B4s2dicUKQWqMGNufOG2eNQzbnTGwgeTDRW5kQTILDGFKH4Qn-6dCBktaiBo04kKfU4XQFKeCkrYKMHUb4aVJ3Z8TE8mdnVAex86PV0CKYfvAxmtbiVZPsHM0JHWiZZLoMGJlYTVwPsL-6MGmKzd3JaRidSVnCmB5GThguEGWPMMgge0wYIkxxLQsmNlN8gnMmVmzOyeRPH75HkBHwPKBKqBlv6Mz57fBmKs1aWemOrGhY0fzOV7Wlwxsmdkw0MclkFBP0Cq33Fr74HjdWxnjFqQ7V9_3hU_vtxfu1OTKxHI1LEM0v_BqkNtISv8ed_GX6MXWvrnt5Ju68YYs14w0AQMA0BkdZfosBVjxD_BESE0sxZVM0hAe22NDhzWvH_6VN3or15HD7Li8vVDR0GKZiNDFi39rLoxZxHAYfqXWpKcB6JacW_DPDvT9RJExUGA0TG3qQZ8YbdUrRiKhJFIgMic59fweRoj7_DSInxGijBuBngW0umFiSjhkoxN9qcPsxUQA_V4v20C7fMtR_xVBcQXKYJBOBu6ggWD_Y9FsmHrKHe1ZsMvhyy6G93Kepk8OALkKHAf8wxN_E68Ogr6Qnr29S4U8PUf46IFooTJT8fLuVlvEmYPrxrmYb3_ekS4Pwatio098qZtuvn5-fP758bj6-QNbPS8h6GVTHiu15Oc_ofTADQnZwPospGJUyaY2MtLcg-yQgO0K2_bh9Xv__A2QxaVZsFRNrJtZ5Ce-HlZjRljGJFk3qZILoe6T5GGRIEfyB2jvg0cRpO8iAMHhrR-piisj5BAGltRdQFmVAWlkHH7CTTrNiBzNdF3pVrOQM63xRLubVPOdi1tVzrbGUXFRSzWXLuSrFfJHnZav4Ugmez0wtuKh4la9ywfMyf1rplV5VmOdikee5QlZy7KWxT9ae-icfjjMT44h1XvKqKGdWtmjj9LEQ4rqRhKDvRqgJkLXjMbKSWxNTfJhIJlmsN6QO-RR6wBiNd6xo7m3lHaV6NgZbdykNUx1pq-2OJnVj-6R8z8SOTN7-siH4b6gSE7uJYmRid2N5qsW_AQAA__8UjhnD">