<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/75173>75173</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            clang hangs building with -std=gnu2x, __attribute((__counted_by__()))
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          arndb
      </td>
    </tr>
</table>

<pre>
    Trying to build the linux kernel with -std=gnu2x ended up never finishing as one file ended up in an endless loop:

```
clang-18 --target=x86_64-unknown-linux-gnu -S -O2 -D__KERNEL__ -std=gnu2x -Wno-address-of-packed-member -Wno-gnu-variable-sized-type-not-at-end -Wno-constant-logical-operand -fsanitize=array-bounds policy-e3a9a0.c
```

[policy-e3a9a0.c.gz](https://github.com/llvm/llvm-project/files/13648089/policy-e3a9a0.c.gz)

Sending SIGABRT shows
```
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-18 --target=x86_64-unknown-linux-gnu -S -O2 -D__KERNEL__ -std=gnu2x -Wno-address-of-packed-member -Wno-gnu-variable-sized-type-not-at-end -Wno-constant-logical-operand -fsanitize=array-bounds policy-e3a9a0.c
1.      /home/arnd/arm-soc/net/netlink/policy.c:485:1: current parser token 'void'
2.      /home/arnd/arm-soc/net/netlink/policy.c:430:5: LLVM IR generation of declaration 'netlink_policy_dump_write'
3.      /home/arnd/arm-soc/net/netlink/policy.c:430:5: Generating code for declaration 'netlink_policy_dump_write'
 #0 0x0000ffff2df64b40 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0xd44b40)
 #1 0x0000ffff2df62de8 llvm::sys::RunSignalHandlers() (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0xd42de8)
 #2 0x0000ffff2deb4ae8 (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0xc94ae8)
 #3 0x0000ffff383307fc (linux-vdso.so.1+0x7fc)
 #4 0x0000ffff36431810 clang::CodeGen::CodeGenFunction::BuildCountedByFieldExpr(clang::Expr const*, clang::ValueDecl const*) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x1cc1810)
 #5 0x0000ffff36431d84 clang::CodeGen::CodeGenFunction::EmitBoundsCheck(clang::Expr const*, clang::Expr const*, llvm::Value*, clang::QualType, bool) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x1cc1d84)
 #6 0x0000ffff364419c8 (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x1cd19c8)
 #7 0x0000ffff3643404c clang::CodeGen::CodeGenFunction::EmitArraySubscriptExpr(clang::ArraySubscriptExpr const*, bool) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x1cc404c)
 #8 0x0000ffff3643486c clang::CodeGen::CodeGenFunction::EmitLValueHelper(clang::Expr const*, clang::CodeGen::KnownNonNull_t) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x1cc486c)
 #9 0x0000ffff3642bf08 clang::CodeGen::CodeGenFunction::EmitLValue(clang::Expr const*, clang::CodeGen::KnownNonNull_t) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x1cbbf08)
#10 0x0000ffff36479fe0 (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x1d09fe0)
#11 0x0000ffff364797c0 (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x1d097c0)
#12 0x0000ffff3646ee30 clang::CodeGen::CodeGenFunction::EmitScalarExpr(clang::Expr const*, bool) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x1cfee30)
#13 0x0000ffff3642ba9c clang::CodeGen::CodeGenFunction::EmitAnyExpr(clang::Expr const*, clang::CodeGen::AggValueSlot, bool) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x1cbba9c)
#14 0x0000ffff3642b994 clang::CodeGen::CodeGenFunction::EmitIgnoredExpr(clang::Expr const*) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x1cbb994)
#15 0x0000ffff3654cd60 clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*, llvm::ArrayRef<clang::Attr const*>) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x1ddcd60)
#16 0x0000ffff365560d8 clang::CodeGen::CodeGenFunction::EmitCompoundStmtWithoutScope(clang::CompoundStmt const&, bool, clang::CodeGen::AggValueSlot) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x1de60d8)
#17 0x0000ffff365a2184 clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl, llvm::Function*, clang::CodeGen::CGFunctionInfo const&) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x1e32184)
#18 0x0000ffff365c001c clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x1e5001c)
#19 0x0000ffff365b9d70 clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x1e49d70)
#20 0x0000ffff365bd83c clang::CodeGen::CodeGenModule::EmitGlobal(clang::GlobalDecl) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x1e4d83c)
#21 0x0000ffff365b8ad0 clang::CodeGen::CodeGenModule::EmitTopLevelDecl(clang::Decl*) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x1e48ad0)
#22 0x0000ffff3664fe6c (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x1edfe6c)
#23 0x0000ffff36595124 clang::BackendConsumer::HandleTopLevelDecl(clang::DeclGroupRef) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x1e25124)
#24 0x0000ffff352cb3d8 clang::ParseAST(clang::Sema&, bool, bool) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0xb5b3d8)
#25 0x0000ffff36f4aea0 clang::FrontendAction::Execute() (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x27daea0)
#26 0x0000ffff36edc8c8 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x276c8c8)
#27 0x0000ffff36fc07f4 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x28507f4)
#28 0x0000aaab84c71f90 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/usr/lib/llvm-18/bin/clang+0x11f90)
#29 0x0000aaab84c6fb64 (/usr/lib/llvm-18/bin/clang+0xfb64)
#30 0x0000ffff36bf1c18 (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x2481c18)
#31 0x0000ffff2deb485c llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0xc9485c)
#32 0x0000ffff36bf1534 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x2481534)
#33 0x0000ffff36bc11e8 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x24511e8)
#34 0x0000ffff36bc13f0 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&, bool) const (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x24513f0)
#35 0x0000ffff36bd8a14 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x2468a14)
#36 0x0000aaab84c6f304 clang_main(int, char**, llvm::ToolContext const&) (/usr/lib/llvm-18/bin/clang+0xf304)
#37 0x0000aaab84c7a8f4 main (/usr/lib/llvm-18/bin/clang+0x1a8f4)
#38 0x0000ffff2cd37780 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#39 0x0000ffff2cd37858 call_init ./csu/../csu/libc-start.c:128:20
#40 0x0000ffff2cd37858 __libc_start_main ./csu/../csu/libc-start.c:347:5
#41 0x0000aaab84c6c9b0 _start (/usr/lib/llvm-18/bin/clang+0xc9b0)
clang-18: error: clang frontend command failed with exit code 134 (use -v to see invocation)
Debian clang version 18.0.0 (++20231211112323+3c1e7fb95e44-1~exp1~20231211112338.393)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
clang-18: note: diagnostic msg: 
********************
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcWlFv47bS_TXKCyFDIiVLesiD48Tbbbf99tsE7aNAkSObNzIpkFQ27kN_-wUlOTYVp41T34viAkESS-TMOYfDmREtaoxYS4DrIL0J0tsr2tmN0tdUS15dVYrvrh_0Tsg1sgpVnWg4shtAjZDdM3oELaFB34XdoNBYHpDbtezwMwLJgaOuRRKeQKNaSGE2zgg1SElAtWjgMEhIRKX72IAxqFGqDcgiiG6DaP97Ho0__UfWULkO4xyFoaV6DTYgt8_5vJwnYScfpfouwx5fuJYdCu9R-H8Yhbdl-dPdt1_uvpSljzX8TaqQcq7BmFDVYUvZI_BwC9sK9HB3LbvwiWpBqwZCI34HHtpdC6FUNqQ2BMmHcUxJY6m0YaPWgtEmVC1o6u7Whkphxe8QkFuqNd2FleokN6hVjWC7EAgtaDRjJ_mOv9ObyeDZ-vcgvQ1wvrG2NU4zvArwai3spqtmTG0DvGqap_2fsNXqX8BsgFdOfxPgVUzmSR7lRYBXJ2zj4tj_PUjulvD-86fFzbcHZDbquzmJ9-uXu8X9HTJdtRUWUVR1a6ShVdq6IDobrDCm69EiJ6WQrOk49FHINDUbVFH2aDVlEOAlajW0WjEwBjgyqtPDZTeTGqOYoBY40p1EhmnR2tlIzlL2iHi3PYReNAui4qtWa023iOp1twVpHXD0Px9_saMe4NVGbSHAK5cL-j_b0CgW4JUEO_xuhHx8iZ0ZC8giydOALOJepk5rkBa1VBvQyKpHkCjA2ZMSPMDZ4Ar_DVckCsjCuUNfvvz6M_r8Da1BgqZWKIlUjTiwho4fA5yNRsrBROkWu_yuhYUXMOQiYD6NIOQaMcUB1UqfDwUFmEQoeo6iKKrrusa8nidVEqF-j5BFQBZmZ4Z_vmohbR_BD8M2yA-DNP1eKmM10G2A524rCGkDXKAA5wFedUa7DSeq_baL3dVKyACvZrPDLVE5icM4nxk1iwN8Ez3zxOF5SRIOcDwBjDnkpwB_6-S9WEva_EBd0temB3MRTM6lhwl7mKBKKOR_3xErnB3PETlyRHJCoqxmztGQCp64UYfpWc28ucnx3HlC4jyOhjQzCLZUHD6B9D6sOslcPA0Xb1xpXqpOWuA3u5WAht89tzrA-ZEZdwX1SSLACxcLR_d-pU0Ht8CaowHnr8iQGlnb9lzznmzMmOPjEU6nhHmenEf4bivsTZ_Dlhtgj-8n-ureIUB7DV7P-P-ONg-7ti8klVLNJYXheeIJM_eFSeKCnR-up51xZ8tzlk1WIYkSdv4qLFw9ue-qoaC-jrrX9z35L6yo4-CRzKck8_kHSH7pY-MHaFo4Y1N5tn9yncEvSv7SNU35oRz8FuV87lMufMq4qqP8o5T_YWQrx-XQmWISRz7ZrKghuowzHjlbnrN46ixjl3OWMd8Z9p3NAciZVcEt4z2jDdXvKAaX3Yi1Q-vRIdOopMVHso3cnVfYPLOL9bqP6vtG2ctzrhwlj3My5VwUH6hzn9dSafjrgn45HkWReDz8ep0mjM8_Eop2a30C7sobxbgvG9-gDsjyuJhYe8SY3F2MNOeOk0far8VpOo_4B9LoUm1b16c4qr8Ju1GdvWeqnSTW41F7fvNDhL43oi8lBjiunhh-r5BSHJ_bsY3PReBu-uQ_NaqijWs-_RB4mf_nm3r5aT_ws6zVkXoXUgOII-up4TcVKYui-C9z2c-Kdw0cAmNgvYd-C7Vwj-iO7Xu0Ga4fOtZLcU0dFY-r302kVcGzv9z7p7n-UzgmjsIxRxxNOPKcfHA932Z2MfQOnIc-nqDPKT97hR5U-wWeYMR6zGG4ckn5HT6PgN_pzJMa5uxCzriz5Tnz-5C0SGPsZbIbyh5B8qWSptuCHi4OJxV_LtInrbrWVayLKYUdNg-811CkmFXEr0lfqTawuH-YlFnY0kk9uWTnU6UOhofTbxjqhAL1QnKllbQg-eK4Wj4D6yx88DDoFDCccefYQ-ZXdeAsZ5Oqvm1FA_pzf5bKwMM2wvXEnVC5XOHB2dyB89D7ZbhmUVYn_ulGj_NA4kkx-hrzK5KX2984Tx0oD_W-XFJKqzxhWVwXEWIsLrfUWc1Pd30bOmn1lsi_hpdoOEx-J_hBgH5rOQQexMKHOK-reXKWSTfh2CLxa0pVxyy-zFEOTnJny3MWT48585QdVdKlpmbzDZh6Ar1bunh9toezWFpDs_OWoR67klL3S-FUHqAXH-y5T52g5qmXmAmeCpYSL7a5Fk_7fLxcxku13VLJp7njZCz1X7i4a6p1tGgTkOVh4L3VQq77kXdojLSXGWXJnp_jePhQUSNYafrxY4h6g92F0moqrNnfnpijTeN2pNKH-4PLo2fwPpz7KL9YvKTED06_CFYsjiF_U-s-WdBXiXq_AF5mmUx0A7znmfcNXXjV6rJipI6rJ0YyFYPU0bli_Kgq87YSP6rqizD-k91R_G1p0_wKzCr9eds2x_HaUuEipf_S5v3i7WPqP6ghqb38OTnRr3hO4zc37-3R_17BOlGp3tL-v6nhhQpjMneieKrNp1WHRKNq-9K4R91nmsWrU5IHpZoxn5_54HtUuUjko8om5ZrmdYIcnvNqrJvm2T1-asaMkyzLI1SWTq_SWKptyWjT9MyRk5OZbq-s2RkOrQnwSra2GUWeTpptArLIkoAsyMFpMXWapznqp7hn0amf4V9nPOyN91_uxjgPyAJHL0aT6JRRj8kpEieNkyTrvzl-sR1PYoIVVYQGq2fp7-a9yL9_ZyEgCwRau_IzvsiA6rF_RWzcAjUVDfDhtR54Fnb4GjsmfT_UGUDhE7IKGQAkjvrL0dMtVILK0fYTaCOURHE-i2bjSflNgG9whEmM4ziO3QNZgG8IiyGrqyKFJAnjP-C5jf84HkTyGSnIi5OH8b2LBXrrxYtx3EYD5WirODRudKuMeB5u9a1v0wC_Fb0YL7o6HV9pJpV1TwKIC7qWyljB0Nas-3njwv2NH_8lmit-TXhBCnoF13EWYZInWUGuNtcp56zmeQZZmhakyjCpszzJKprOCxYBvRLXo2Q4xqRIo1mGMVRxXBTzLCKY1kESwZaKZuaiZqb0-qp_ueY6S-OMXDW0gsb0L4JhPMYRDtLbK33dR1nVrU2QRI0w1hwsWGEbuB6We0Pl2gyviQm5fv1imMtdZUmt1aLaP-nlZcmG763LaleWY5fZ_1x1urn--PtCPat_BwAA__9Bxp5F">