<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/76402>76402</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[compiler-rt][builtins][PPC] Compiler-rt builtins divtc3 compilation crashes compiler backend
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
Ubsefor
</td>
</tr>
</table>
<pre>
PowerPC DAG->DAG Pattern Instruction Selection fails to run on __divtc3 function (code example below) with PowerPC targets
After changes, applied in 696ea67f197ff0818cb649db61d51df8e81eb16e
Broken after changes by 7d6c2e18114de9900d1b012cf9c219803b183f63
example of code (from divtc3.c):
```c
long double _Complex __divtc3_test(long double __a, long double __b,
long double __c, long double __d) {
int __ilogbw = 0;
long double __logbw =
__builtin_logbl(__builtin_fmaxl(__builtin_fabsl(__c), __builtin_fabsl(__d)));
if (__builtin_isfinite(__logbw)) {
__ilogbw = (int)__logbw;
__c = __builtin_scalbnl(__c, -__ilogbw);
__d = __builtin_scalbnl(__d, -__ilogbw);
}
return 0;
}
```
Compile command: clang -O3 -std=gnu99 -ffreestanding -fno-short-enums -nostdlib -target powerpc-gnu-linux-eabi -mcpu=e500mc -msoft-float -ffp-contract=off -v -c divtc3.c -o divtc3.o
Full compiler log:
<details>
```sh
clang -O3 -std=gnu99 -ffreestanding -fno-short-enums -nostdlib -target powerpc-gnu-linux-eabi -mcpu=e500mc -msoft-float -ffp-contract=off -v -I./crtextra -c src/llvm-project-17.0.6.src/compiler-rt/lib/builtins/divtc3.c -o divtc3.o
clang version 17.0.6
Target: powerpc-gnu-linux-eabi
Thread model: posix
InstalledDir: /bin
(in-process)
"/bin/clang-17" -cc1 -triple powerpc-gnu-linux-eabi -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name divtc3.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=none -fmath-errno -ffp-contract=off -fno-rounding-math -mconstructor-aliases -ffreestanding -target-cpu e500mc -target-feature -hard-float -msoft-float -mfloat-abi soft -debugger-tuning=gdb -target-linker-version 1022.1 -v -fcoverage-compilation-dir=./ -resource-dir /lib/clang/17 -I ./crtextra -internal-isystem /lib/clang/17/include/ppc_wrappers -internal-isystem /lib/clang/17/include -internal-isystem /usr/local/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O3 -std=gnu99 -fdebug-compilation-dir=./ -ferror-limit 19 -fno-signed-char -fgnuc-version=4.2.1 -fcolor-diagnostics -vectorize-loops -vectorize-slp -faddrsig -o divtc3.o -x c src/llvm-project-17.0.6.src/compiler-rt/lib/builtins/divtc3.c
clang -cc1 version 17.0.6 based upon LLVM 17.0.6 default target arm64-apple-darwin23.2.0
ignoring nonexistent directory "/include"
ignoring nonexistent directory "/usr/include"
#include "..." search starts here:
#include <...> search starts here:
./crtextra
/lib/clang/17/include/ppc_wrappers
/lib/clang/17/include
/usr/local/include
End of search list.
fatal error: error in backend: Do not know how to soften the result of this operator!
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0. Program arguments: clang -O3 -std=gnu99 -ffreestanding -fno-short-enums -nostdlib -target powerpc-gnu-linux-eabi -mcpu=e500mc -msoft-float -ffp-contract=off -v -I./crtextra -c src/llvm-project-17.0.6.src/compiler-rt/lib/builtins/divtc3.c -o divtc3.o
1. <eof> parser at end of file
2. Code generation
3. Running pass 'Function Pass Manager' on module 'src/llvm-project-17.0.6.src/compiler-rt/lib/builtins/divtc3.c'.
4. Running pass 'PowerPC DAG->DAG Pattern Instruction Selection' on function '@__divtc3'
#0 0x0000000105b03acc (/bin/clang-17+0x10121bacc)
#1 0x0000000105b03508 (/bin/clang-17+0x10121b508)
#2 0x0000000105a90bc8 (/bin/clang-17+0x1011a8bc8)
#3 0x0000000105a90b78 (/bin/clang-17+0x1011a8b78)
#4 0x0000000105b004c8 (/bin/clang-17+0x1012184c8)
#5 0x00000001048eeb80 (/bin/clang-17+0x100006b80)
#6 0x0000000105a96f74 (/bin/clang-17+0x1011aef74)
#7 0x0000000105a96e48 (/bin/clang-17+0x1011aee48)
#8 0x0000000106434ce8 (/bin/clang-17+0x101b4cce8)
#9 0x000000010645bc4c (/bin/clang-17+0x101b73c4c)
#10 0x000000010645db70 (/bin/clang-17+0x101b75b70)
#11 0x00000001064fb6f4 (/bin/clang-17+0x101c136f4)
#12 0x00000001064fb3f8 (/bin/clang-17+0x101c133f8)
#13 0x00000001064f9ebc (/bin/clang-17+0x101c11ebc)
#14 0x0000000104ce6520 (/bin/clang-17+0x1003fe520)
#15 0x000000010532b75c (/bin/clang-17+0x100a4375c)
#16 0x00000001055c2768 (/bin/clang-17+0x100cda768)
#17 0x00000001055c5e98 (/bin/clang-17+0x100cdde98)
#18 0x00000001055c2b40 (/bin/clang-17+0x100cdab40)
#19 0x0000000105d48468 (/bin/clang-17+0x101460468)
#20 0x0000000105f8c378 (/bin/clang-17+0x1016a4378)
#21 0x0000000106bfdf90 (/bin/clang-17+0x102315f90)
#22 0x00000001061b76c4 (/bin/clang-17+0x1018cf6c4)
#23 0x0000000106170fb4 (/bin/clang-17+0x101888fb4)
#24 0x0000000106206914 (/bin/clang-17+0x10191e914)
#25 0x00000001048ee7c4 (/bin/clang-17+0x1000067c4)
#26 0x00000001048ec6e4 (/bin/clang-17+0x1000046e4)
#27 0x000000010606d9b0 (/bin/clang-17+0x1017859b0)
#28 0x0000000105a90b50 (/bin/clang-17+0x1011a8b50)
#29 0x000000010606d428 (/bin/clang-17+0x101785428)
#30 0x00000001060496e4 (/bin/clang-17+0x1017616e4)
#31 0x0000000106049800 (/bin/clang-17+0x101761800)
#32 0x0000000106058df0 (/bin/clang-17+0x101770df0)
#33 0x00000001048ec1a4 (/bin/clang-17+0x1000041a4)
#34 0x00000001048f5f74 (/bin/clang-17+0x10000df74)
#35 0x00000001814150e0
clang: error: clang frontend command failed with exit code 70 (use -v to see invocation)
clang version 17.0.6
Target: powerpc-gnu-linux-eabi
Thread model: posix
InstalledDir: /bin
clang: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang: note: diagnostic msg: /tmp/divtc3-784c30.c
clang: note: diagnostic msg: /tmp/divtc3-784c30.sh
clang: note: diagnostic msg: Crash backtrace is located in
clang: note: diagnostic msg: /Users/USER/Library/Logs/DiagnosticReports/clang-17_<YYYY-MM-DD-HHMMSS>_<hostname>.crash
clang: note: diagnostic msg: (choose the .crash file that corresponds to your crash)
clang: note: diagnostic msg:
********************
```
Note: Shorter version of diagnostic files is attached above, some paths are trimmed
</details>
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMWV1v27yS_jXKzYCGRH1f5CK147ZAexo07S56FVDkyOapRAoklaT76xeUbMd0U7t998WeNzBamRw-no9nhhyKWSs3CvE6yt9E-eqKjW6rzfXXxmKrzVWjxY_rO_2E5m4Jq5u3JEpvVzdv4Y45h0bBe2WdGbmTWsE9djg_tUx2FpwGMyrQCh4ehHx0PIV2VLNERCuuBQI-s37oEBrs9FNEa3iSbgv7H3TMbNDZKF5F8c38703r0ADfMrVBG9ElsGHoJAqQCoq6QFaUbVKXbRtXScWbIqtFUyQiT0RbYZVgkxR4jPfG6O-ogB3DQvMDSlFwikmVJJnAuo5jkTRxQnlbc5rUVZw2SZW2RXqMtTdGtzAZF9GqNbqH2fgFj2gdpTfHK6Iinj98_t5ptQGhx6ZDeFhqj_Z88N6DQ-siWgVCD8w7IRxqIrqc8eDiX7iS_wwmfFSi8s0eUCoHDw-y05vmCaJ0BXGUHibDpQeZ3fTDQzPKzkk1zXQRrV5G2p49n4ywxs4jk-PoEl6bE9Pc9HlRQ7YQQEnbSiUdToOTVvOSI7sCkyJaSeUiWu-lX6DBe2kSeoG3nHWNOui6BLJHC9R6eBBnFopfL4So3LsQDLrRqCOnH-YOXDommOeQ7BC47numRJTeAO-Y2gD5lAKxTkTpaqPGugbStgbROqaE9POt0sRutXEE1dhbIEpbJzrZAJnTEgafpQMnGzWSTqrxmSBrJJCeD2OUrjCP454D6a1uHWk7zZz_kYFwrZxh3EXpSrctkEcg_JAjQPT-WR8bsh67zlvhrTHQ6Y03ZSeQLgU6X3Ki9PbV7LLbeeCfaPr7RUTX3Dh8doZ5T1jDI7ruuseeDEb_G7kjSbmIF8Vintk7gRjn5WQT0fWOUDai6187crb-EY31FXjGnGe-TFZ5j75u2E5qa5AJ6LXAbpa18nme8tsA6zoUK2mmwNB1I9WOs1M2eVs4WuuJvR-mOzG6nlQjSRlRCoTzBIgz0pfSXzkae-mIbv4NREjLmg6JDyEQ3iEzhFlHGr9_IWkY_45KvMhNjn1EI1uJZhrmzAjyyLoRiWI9WiA9k4q0spsHjrjZG-w0Z34LI5MfYJAcyCA56fARO6DzF2nJIBFI3xrWIxm0VA5NlK6UVgik7ZnbEjRG6dd54Rlo9DjxkXhhTy2922u1IayTzHpNT5g705PwYYQ9B3dDLTI3GgSy9dbuKBnws5_-J969fhiIwGbcbNAQNyqpNj5dxCEFfDS-oyEHOsWULpKJ0S3Xj2jYBslM1dldwjNj5ckOxKDVo-HoB-FA4okEEV0nJZD3EKbF5D_FOiLtD-uwf21VRNdS8W4UGNH1MPCHJ8OGAY390-Wvy4_W-FWas-5VUXz2D_x4yW8JzbgH0Z-L0xSHX_qyRWO0IZ3spYOk3lUvf6YThG-ZAdJu1Mj3gYrSVbaYItVy3WlDhGQbX98kt0Ae0dNL_g-STushGLDdAKRlQhgrN8fFBcgz_G1VK6jTvhCE5QoaZlHAOGgFHz7818f9sMCWjZ3bHRiBmb7IiD8ZIhHMPElF0wVd7HZGuVHa-HTxyfgsrUPlQEgzmfpjV5cOTKJ_sCgI5WFpRNN9dCNKF4uFr3IWmeFbsI4ZZ2GLBl-Ohkfy6dLLp7fn5INUORTX30-P31pykHk1DebpWyX82XenaietW8wTLXOsg4mofneYHvyBfVec_dhKg9IOviv9BFv95JsHX4VQgdsiGLQ-vLoFt5UW9ICGOW0imsw_cPfh9ub-FuzY-Cxg0IwbMDho4zzQ1rnBenfRdUTXG-m2Y7Pgut8R9oS33iprR99drIEp31nMwfCKcMPsdtLb12v0Z7bB4G5vQwFzXZv6EiWAWau5ZA7F1AlZbuSw98m9Y_w7iLEfDoGMF1Fc3xm9MawHZjZjj8rZf-qZ7f_v4JJ4v0TpEnXrU2FgxqIB5gBnwvmdepakXnLpe68NKs8RX_GmmdTPfB6V38lgYNZCRMv1vh298wMfmWIbNBEtfc_aazF2PmPLv6u00XIX-uw1Xf60yd6pedRRl1EW73tF_22fsmkM8XM8_yVx3sQp49yfyl45fr2Jn5M4oUnDOD8-qqXJKUYeV5cw8rgKMGiAweq44ecxElY1PMRIf8IoL2OUIUZ2YkucXdCDJlV2okd-jJFViE0Vn8OI47hoqjjAKE5sKdoyu2ALtmUWYJSnGJhd8gdiFtpSHWMUWZpxPI_RZJxjiFGHGHnDs_Mca8qUZy8c8xSLTzBEU571adKUeVPGAUYSYrRN0Z73KU_Sos0CDHqKkbbn_cGTNG2rACM9waixOe8PniTYhP4IeJpxLHJ6nmNpizkN_RHwNE9pU-Zn9YhZlpZ5qEfI05zTsjjrj5gLVhahP8oTjBzrSxgC6xCjOtWjyc77gwvWZKE_Ap7mIquy87YkWRFnoS00rKdtxdMLNajwTg0xQp42rWjrs7b4ULZ1YAsNeZo0ZcHPc73ibcEDrtOQp0kZt80FjKpqmxAj4GlB46JOzmPUCdZJiPFTPS3P2-LraXliS3GCwQu8hJEVGGIEPC3iQtTN-RpUVnndhHGpftqj8vMYfo_KQ4z6VI-MnudYWeUZDTgW7vtFnNUX_JGURXLij3Df9xhVfMEfRVLFgS3hvl_EeSXaCxhlLNoQIz2NbcIuxjZhoS1hPa3a_MJ-G8exON5vPcYxT6skS_IY46Om9dDevJzaW6OV8yfV3R3s9HYExfymA5-lm18WzFvdaNEfrn33gwhSPe5umw46_Icu8Q7GKe185wkv1wbQ281R7_p_-Bxd3e4aupsvX26W7-DLu1tYf_rw4dN_v__XW1i__3B7D18-TcNvvr6Fz7d3nz5_Oehw91pDVtmI1r9uyg4CBmG64UMBzB0gL5vvveX64XDeJ2WV8TQObjT-EkBwd30eYRk2pyDtwZbfj6PX46tF41uXr_e3nyO6_iAbw8wP_6Q3fnx1WPR5arLtUe48ROny27dv38jHj2S1Iu_effx4fx-lt358q61TrMcovV1MnfQfKFXxrdZ27sLnxVPfB27LfAYZg3bQSkyvHX_o0cytepg3v0Pgv4vG4duYf-1-9d5352gOCazbY0W8QdaHjTnH-NZzsNGP03WC1T3CwNzWThx1RvY9isMLEE-bwzuQK3Gdijqt2RVeJ2WcFkme5fnV9rqgRYoJq7Iyp7StWF3RJs2RpnmTFJTyK3lN_UmD0iKp0jjPFwwFlmnbxLzKs5TTKIuxZ7Jb-HZ4oc3maroruS6LLKZXHWuws9OrZEoVPsE0GVEa5asrcz210M24sVEWd9I6-4LipOumd9DHzXS-ivI3h056-nZ3t4zyFSxfpGAvsLs0gKOL0pkDaF9eHO1unK5G013_9Wuhydr_DQAA__8WPj07">