<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/62989>62989</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang-17 crashes at CodeGen::CodeGenFunction::EmitAtomicExpr
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
wierton
</td>
</tr>
</table>
<pre>
When compile below code with `clang-17 -O0`, clang-17 crashes:
```
typedef enum memory_order {
memory_order_relaxed,
memory_order_consume,
memory_order_acquire,
memory_order_release,
memory_order_acq_rel,
memory_order_seq_cst
} memory_order;
typedef struct X {
} X;
X fs(_Atomic(X) *c) {
return __c11_atomic_exchange(c, (X){2}, memory_order_seq_cst);
}
X fsa(X *c, X *d) {
X ret;
__atomic_exchange(c, d, &ret, memory_order_seq_cst);
return ret;
}
```
Output of `clang-17` is shown below:
```
$ clang-17 -O0 small.c
small.c:13:39: warning: excess elements in struct initializer [-Wexcess-initializers]
return __c11_atomic_exchange(c, (X){2}, memory_order_seq_cst);
^
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: /home/xfou/disk/llvm-project-trunk.obj/bin/clang-17 -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -mrelax-all -dumpdir a- -disable-free -clear-ast-before-backend -main-file-name small.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/home/xfou/bugs/7 -resource-dir /home/xfou/disk/llvm-project-trunk.obj/lib/clang/17 -internal-isystem /home/xfou/disk/llvm-project-trunk.obj/lib/clang/17/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -O0 -fdebug-compilation-dir=/home/xfou/bugs/7 -ferror-limit 19 -fgnuc-version=4.2.1 -fcolor-diagnostics -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/small-9f83ee.o -x c small.c
1. <eof> parser at end of file
2. small.c:16:3: LLVM IR generation of declaration 'fsa'
3. small.c:16:3: Generating code for declaration 'fsa'
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0 libLLVMSupport.so.17git 0x00007f8258a8c67c llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 60
1 libLLVMSupport.so.17git 0x00007f8258a8a5e4 llvm::sys::RunSignalHandlers() + 52
2 libLLVMSupport.so.17git 0x00007f8258a8a766
3 libc.so.6 0x00007f82566a0520
4 libclangCodeGen.so.17git 0x00007f82573c0eb0 clang::CodeGen::CodeGenFunction::EmitAtomicExpr(clang::AtomicExpr*) + 816
5 libclangCodeGen.so.17git 0x00007f825765b8e9
6 libclangCodeGen.so.17git 0x00007f8257661424 clang::CodeGen::CodeGenFunction::EmitScalarExpr(clang::Expr const*, bool) + 132
7 libclangCodeGen.so.17git 0x00007f82575ea49e clang::CodeGen::CodeGenFunction::EmitAnyExpr(clang::Expr const*, clang::CodeGen::AggValueSlot, bool) + 254
8 libclangCodeGen.so.17git 0x00007f82575fca6b clang::CodeGen::CodeGenFunction::EmitIgnoredExpr(clang::Expr const*) + 235
9 libclangCodeGen.so.17git 0x00007f82577953ab clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*, llvm::ArrayRef<clang::Attr const*>) + 507
10 libclangCodeGen.so.17git 0x00007f825779cddc clang::CodeGen::CodeGenFunction::EmitCompoundStmtWithoutScope(clang::CompoundStmt const&, bool, clang::CodeGen::AggValueSlot) + 156
11 libclangCodeGen.so.17git 0x00007f825780968a clang::CodeGen::CodeGenFunction::EmitFunctionBody(clang::Stmt const*) + 202
12 libclangCodeGen.so.17git 0x00007f825781b056 clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl, llvm::Function*, clang::CodeGen::CGFunctionInfo const&) + 614
13 libclangCodeGen.so.17git 0x00007f8257864de7 clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::GlobalDecl, llvm::GlobalValue*) + 471
14 libclangCodeGen.so.17git 0x00007f825786052d clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl, llvm::GlobalValue*) + 637
15 libclangCodeGen.so.17git 0x00007f82578686da
16 libclangCodeGen.so.17git 0x00007f82578f6af1
17 libclangCodeGen.so.17git 0x00007f8257802289
18 libclangParse.so.17git 0x00007f82544ec894 clang::ParseAST(clang::Sema&, bool, bool) + 564
19 libclangFrontend.so.17git 0x00007f8256e8c4d9 clang::FrontendAction::Execute() + 201
20 libclangFrontend.so.17git 0x00007f8256e15b26 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 342
21 libclangFrontendTool.so.17git 0x00007f8256d75cf4 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 468
22 clang-17 0x0000562adb437744 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) + 2244
23 clang-17 0x0000562adb4321d3
24 clang-17 0x0000562adb433591 clang_main(int, char**, llvm::ToolContext const&) + 4641
25 clang-17 0x0000562adb42e8f3 main + 51
26 libc.so.6 0x00007f8256687d90
27 libc.so.6 0x00007f8256687e40 __libc_start_main + 128
28 clang-17 0x0000562adb42e935 _start + 37
clang-17: error: unable to execute command: Floating point exception
clang-17: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 17.0.0 (wierton@114.212.81.121:~/llvm-project-trunk 806dea46be4c49dc587b98dab5e4d9d242a6abdb)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
clang-17: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-17: note: diagnostic msg: /tmp/small-4a1660.c
clang-17: note: diagnostic msg: /tmp/small-4a1660.sh
clang-17: note: diagnostic msg:
********************
```
My clang version is:
```
$ clang-17 --version
clang version 17.0.0 (git@github.com:llvm/llvm-project 806dea46be4c49dc587b98dab5e4d9d242a6abdb)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMWVtv2zj2_zTKywENibo_5MGx4zZA-2_R5D_t7otBkUc2pxLpIalc9mE_-4KSfM1l4s4ssEGQSOQ55O_cqUNmrVwpxMsgvQrS-QXr3FqbyweJxml1UWnxdPl9jQq4bjeyQaiw0Q_AtUB4kG4NQRbyhqkViXIgX8IgCwM6g90QN8yu0QbxNAjnQTj188Nv_-qeNiiwBlRdCy222jwttRFoIMivBpKj4aXBhj2iCOhsnD2e5lrZrsX99NEs43900uBrzAYbZPYNZk_xGrPFP5bculHKfH40G8SjMMdSW2c67uDHXljP-GNH_QNqG9BiOXW6lTygxY-AlhDQKe__7zRk0HVGwXLJo2jJeuIlPvI1UysMaMG9RUbuIL-iQT73Iy_Cp-Ueaz4_BO3BML_KCGAG_ZM4hgI_PJrdGgDL1wCJAVXmyd-BBrZSHi6_h3jsVsPfL53bdA50feikQRaCtGDX-kENzvyabwY0gUPXBtuyppnwYXb7Ek-jOIincRnEU3hgRkm18o_4yNFawAZbVM6CVFtzSyWdZI38l_fy9Ip8H0jJwbgN0vl_1bYQpNfD09dP19Pba7Bd1UoHDKpuBQY32jhwGtbObfrgpYuALlbSrbtqwnUb0EXT3G__kY3RvyN3AV1Iazu0AV0AUwKk4k0nENwah0wAFeM_nWHcRxlsDG6M9sKjAKs7Mwx7Tmat5pI5FGA6BZYbuXGTAfKtY_wniK7d7EwXTuCr0SvDWmBm1fUq91YI6GKtfT5YPNa6C-hCSPvzBDVxplM_J7r6PaCLSqqALvZm5zwC4ozcNAiPRbbMEtKpn0o_KNJI1T2SleqAYCsd0dXvQNo-QRHWNEA8QiENMAJESMuqBkltEIHwBpkhzDpSYa0NEq8WVAJIy6QitWyQKNbi1uWGdTVnTmpFWi2wgY3kQDaSkwbvsQE6vEhLNhKBtLVhLZKNlsr5_DPvEdUtc2uCxigNpK43hGvlreGCeK4VkFppYnSnhFQr4mmBtD6l9o6rDWGNZBYtkLpTD1IJ4rxQNojnFIhjZoWO8E3nNUWyBIjrFPYDK1RoPGCBVbdaofFTfaTMV6ICUnN9j4atkAx1ZhBUSI_8mQ2rbuU9LAdicPAaT3m-rRtZbW0d0IW3dq8sxRoi7ZN12P71NX1IjEHw4uqdNZ5Lc9a8j3Rw0Mlkt9eKcw9v8M2dT_rN6Zbw5M8LtM83xkf_wJ8DGElfWOdt7vO36JMuqXuXOc8vajRGG9JIn9OiEki9Uh0n92is1CqI58mETqLe7RptiJBspbR1knvXZkIYK1dA5svlh9ls-XH62_Vy_n36bUGXs8XNcnr7OYjnERDtEbt2E9BFH6ekrIsYcaKBPAI_LhfRBIJ4hroO4mvYMGPRAHPgY17X4AN-oKMT6H8Oykvmy4tPZp8-_fYZbr4NwdRrwvMK5A0bXwOa90U6HxaL31jsw7iIWg2HuVqbt5ba59z-2Kc7B_aprXQDPk9ZX4JQ2c4gPOkO1uweoY-RgaivdVL5OQNfp3cfQRuw6PrCgOpeGq18zoZ7Znyx9pIub__x-erLp5t_Xn9behZfuJ2GPqP5BzkUtG0BAGhk5fluu42vXhOrJ1G-km5QAYSPYRiGeV3QtGAFz3LeA_QLxFP7ZIeHr0Yq18t6NxSpYk9k2MNSW2eQtQHNfKGSyg0HsivYHhqis2CwFJOXYHzr1K1cKdZ8ZEo0_jxAi-1OKR095XWJTzbJs2z0h56Fe8LskCjLWJjSUYJkIPIZbKYFfkB1IsMBYx7zEKtwOCYN0Eeeo5dFp7jrA88PXrfSDSfa68eN8WeYPffh-HQrcRGN-NNzoGVpVWA5MGbn8GVRsj35nSPSLWcNM89F8iPQF9FepBlUWjdb0aJ4tGZ-jmgpsqTEX9C6enoHvteWna5Wv7Gmw9tGu1M5aJoMchRvyHEkQs1ZVp0vws1KaYPiT8UYYcXpAKs8R715mcbsF7DdutYdg_IjR7rdx_rUGPb0Desgnh35vzuQIr7eBX045uEofJ9-85ILwc-XYabbjT8AeuTfh0R_y_UGj-U6pNrCzfY-8V4fGmMgHcM7is4wUhGWWcHOF3A7cqXF05vGGj0oHAM0oueAi6owzc4DNxZk9JPHwD40umLNHHlz7EI7_rfjdvZhS3ijan1grrFyRWPoRvE5EmaJwPzPJPysRdfgXvmDJFs4c6z7b14vwXvkHcZ7_zmwUJJHI_7kfaFRZGFKxa9B_3sgZ_E2mtP3Qi4ywUaeN4rZEU-dsXqrmvydPCGlxVgzo2LH89WfV09PMoeMSYK8KI-KZs8zvb07iTFs2UmqOCwjabb1xXK3-cJo5VCJ4_0PTy9Y8ESUh5tveaaHwf-IvHN4cJKi4ageGr6x29FOUVrRk7ju26LmRlnHFMejvcbtjzRwAm0fh3GyPdhFz9Dcad28jEjkKa-PFD_uvQd2P_YNnqfwI-AHEZUVIxK6b4C9-DMgSTPKRJXEeZ4kwHm0bJn_SC1eLnZrdlLhZnA8Rmdwr6U4TMI0Gf2CxntEx5vTSMQjTXIW6jgto4Fhi7s_1g-oehAnldsbY-bt8uieJdMkS7Y-lb6ClGJRx-C3Glx-S5-9djYvclGOZ3OaHxC9LtqOEZMQlkvPsrSOGbfcbRvRrY2LV3GWcQoD3-CgY9LadVLjKfTf2f6hU6xq0H-X4eB_wHXbMiX85KLRw5fm8PGGjxw3vUe-vl4_CPXo_9vFoGayQQGi67ey_TeS__bsLAK578cQQR74fHmwCYwNAIjySTgJPeN40REkYRQlExrRSRFNIhoF8fTfL_Z5oAgzgSzJKkx4UgqeFnlVFoJVKSaiFDShLGOVqHZb3_V9MS_Uaw3EkW5tkAnou3ueeqOtfBym-iBtGhRzaca25r4b9EyJSjufh2Df1oDWrvZtbvoXfg_a62PneHp3N519hLuP17D48unTl-83__cBFjefrm_h7ks_fPX_H-Db9dcv3-52GL6-1PktrA-jV7u_OwKD0PdCUQBzuyXfpYHTjk3CoiwLt02av7KEXZ9viL_LHC9dfnx-gmOfl69ewh1fdOy6ZG_GzUq6IAkPLgTi6QsXAv-jwXIi_4W4jEUZl-wCL6OsSOOsjIrsYn0ZJRinZR6LOk4wjpEXVcJznpdZXdOkLi_kJQ1pHKa0jJIwo9kkz1Oa8IxGaRyVUVQGSYgtk83Ea2WizeqivyC5zGhZlBcNq7Cx_dUrpQofoJ8MKA3S-YW57DXZNzWTsJHW2f0qTroGL09vWYE5OLf_ctGZ5vLXr3l6Qf4TAAD__wTdOdg">