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

    <tr>
        <th>Summary</th>
        <td>
            Clang 21 crashes when compiling invalid initializer in C (struct array literal cast)
        </td>
    </tr>

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

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

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

<pre>
    ## Summary 

Clang 21 crashes with a stack dump when compiling a small invalid C program involving a struct array literal being cast and passed as an argument.

## Stack Trace

```
Stack dump:
0.      Program arguments: /usr/local/bin/clang-21 -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -dumpdir a- -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name prueba.cpp -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 -fdebug-compilation-dir=/root -fcoverage-compilation-dir=/root -resource-dir /usr/local/lib/clang/21 -internal-isystem /usr/local/lib/clang/21/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -std=c2x -ferror-limit 19 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fcolor-diagnostics -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/prueba-cf6791.o -x c prueba.cpp
1.      prueba.cpp:7:49: current parser token ')'
2.      prueba.cpp:5:11: parsing function body 'main'
3. prueba.cpp:5:11: in compound statement ('{}')
 #0 0x000055fee950018f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/local/bin/clang-21+0x3c4a18f)
 #1 0x000055fee94fdbd4 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
 #2 0x00007f5adbc08420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #3 0x000055feebe06b44 (anonymous namespace)::InitListChecker::CheckExplicitInitList(clang::InitializedEntity const&, clang::InitListExpr*, clang::QualType&, clang::InitListExpr*, bool) (.constprop.0) SemaInit.cpp:0:0
 #4 0x000055feebe07217 (anonymous namespace)::InitListChecker::InitListChecker(clang::Sema&, clang::InitializedEntity const&, clang::InitListExpr*, clang::QualType&, bool, bool, bool, llvm::SmallVectorImpl<clang::QualType>*) SemaInit.cpp:0:0
 #5 0x000055feebe08f23 clang::InitializationSequence::Perform(clang::Sema&, clang::InitializedEntity const&, clang::InitializationKind const&, llvm::MutableArrayRef<clang::Expr*>, clang::QualType*) (/usr/local/bin/clang-21+0x6552f23)
 #6 0x000055feebe1355e clang::Sema::PerformCopyInitialization(clang::InitializedEntity const&, clang::SourceLocation, clang::ActionResult<clang::Expr*, true>, bool, bool) (/usr/local/bin/clang-21+0x655d55e)
 #7 0x000055feebc70d36 clang::Sema::GatherArgumentsForCall(clang::SourceLocation, clang::FunctionDecl*, clang::FunctionProtoType const*, unsigned int, llvm::ArrayRef<clang::Expr*>, llvm::SmallVectorImpl<clang::Expr*>&, clang::Sema::VariadicCallType, bool, bool) (/usr/local/bin/clang-21+0x63bad36)
 #8 0x000055feebc718af clang::Sema::ConvertArgumentsForCall(clang::CallExpr*, clang::Expr*, clang::FunctionDecl*, clang::FunctionProtoType const*, llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, bool) (/usr/local/bin/clang-21+0x63bb8af)
 #9 0x000055feebc73760 clang::Sema::BuildResolvedCallExpr(clang::Expr*, clang::NamedDecl*, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*, bool, clang::CallExpr::ADLCallKind) (/usr/local/bin/clang-21+0x63bd760)
#10 0x000055feebc6f052 clang::Sema::BuildCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*, bool, bool) (/usr/local/bin/clang-21+0x63b9052)
#11 0x000055feebc7456b clang::Sema::ActOnCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*) (/usr/local/bin/clang-21+0x63be56b)
#12 0x000055feeb7a6a10 clang::Parser::ParsePostfixExpressionSuffix(clang::ActionResult<clang::Expr*, true>) (/usr/local/bin/clang-21+0x5ef0a10)
#13 0x000055feeb79e5a7 clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, bool&, clang::Parser::TypeCastState, bool, bool*) (/usr/local/bin/clang-21+0x5ee85a7)
#14 0x000055feeb7a072e clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, clang::Parser::TypeCastState, bool, bool*) (/usr/local/bin/clang-21+0x5eea72e)
#15 0x000055feeb7a092d clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState) (/usr/local/bin/clang-21+0x5eea92d)
#16 0x000055feeb7a0d42 clang::Parser::ParseExpressionList(llvm::SmallVectorImpl<clang::Expr*>&, llvm::function_ref<void ()>, bool, bool, bool*) (/usr/local/bin/clang-21+0x5eead42)
#17 0x000055feeb7a7142 clang::Parser::ParsePostfixExpressionSuffix(clang::ActionResult<clang::Expr*, true>) (/usr/local/bin/clang-21+0x5ef1142)
#18 0x000055feeb79e5a7 clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, bool&, clang::Parser::TypeCastState, bool, bool*) (/usr/local/bin/clang-21+0x5ee85a7)
#19 0x000055feeb7a072e clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, clang::Parser::TypeCastState, bool, bool*) (/usr/local/bin/clang-21+0x5eea72e)
#20 0x000055feeb7a092d clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState) (/usr/local/bin/clang-21+0x5eea92d)
#21 0x000055feeb7a5d7d clang::Parser::ParseExpression(clang::Parser::TypeCastState) (/usr/local/bin/clang-21+0x5eefd7d)
#22 0x000055feeb834d3f clang::Parser::ParseExprStatement(clang::Parser::ParsedStmtContext) (/usr/local/bin/clang-21+0x5f7ed3f)
#23 0x000055feeb8286b2 clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::ParsedAttributes&, clang::ParsedAttributes&) (/usr/local/bin/clang-21+0x5f726b2)
#24 0x000055feeb829104 clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/usr/local/bin/clang-21+0x5f73104)
#25 0x000055feeb82a46c clang::Parser::ParseCompoundStatementBody(bool) (/usr/local/bin/clang-21+0x5f7446c)
#26 0x000055feeb82c7e2 clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) (/usr/local/bin/clang-21+0x5f767e2)
#27 0x000055feeb723e83 clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) (/usr/local/bin/clang-21+0x5e6de83)
#28 0x000055feeb76df05 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::Parser::ParsedTemplateInfo&, clang::SourceLocation*, clang::Parser::ForRangeInit*) (/usr/local/bin/clang-21+0x5eb7f05)
#29 0x000055feeb71c62d clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) (/usr/local/bin/clang-21+0x5e6662d)
#30 0x000055feeb71d16e clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (/usr/local/bin/clang-21+0x5e6716e)
#31 0x000055feeb726d73 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (/usr/local/bin/clang-21+0x5e70d73)
#32 0x000055feeb7286a8 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/usr/local/bin/clang-21+0x5e726a8)
#33 0x000055feeb71662a clang::ParseAST(clang::Sema&, bool, bool) (/usr/local/bin/clang-21+0x5e6062a)
#34 0x000055fee9e84e45 clang::CodeGenAction::ExecuteAction() (/usr/local/bin/clang-21+0x45cee45)
#35 0x000055feea1699b8 clang::FrontendAction::Execute() (/usr/local/bin/clang-21+0x48b39b8)
#36 0x000055feea0e7d3b clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/usr/local/bin/clang-21+0x4831d3b)
#37 0x000055feea25bc7b clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/usr/local/bin/clang-21+0x49a5c7b)
#38 0x000055fee6758f51 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/usr/local/bin/clang-21+0xea2f51)
#39 0x000055fee67515fd ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#40 0x000055fee675499f clang_main(int, char**, llvm::ToolContext const&) (/usr/local/bin/clang-21+0xe9e99f)
#41 0x000055fee662730b main (/usr/local/bin/clang-21+0xd7130b)
#42 0x00007f5adb6b6083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#43 0x000055fee675107e _start (/usr/local/bin/clang-21+0xe9b07e)
```

## Program

 ``` 
#include <stdlib.h>
#include <stdio.h>

struct Data { int dummy; };

double swap(struct Data *a, struct Data *b) {
}

int main() {
 printf("%lf\n", swap((struct Data[5]){ {}, 1 },
 (struct Data[5]){ {}, 4 }));
}
```

## Command

```
clang -x c -std=c2x test.c
```

## To Reproduce Quickly

https://gcc.godbolt.org/z/dG7sb8oW4

</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzkWltz2za3_TX0CwYaErw_-EGWonyek56kUaZ91IDApoyGBFgQdOz--jMgKfMiWZHctOfrtNMkFIjL2mtvLGyAoHUt9hLg1gnvnHB9QxvzoPRtSbUAAx4h_k2m-POtQ3yH-GjblCXVz8hxl467XBVU7hHxENO0foAafRPmAVFUG8q-It6UFfr2ABIxVVaiEHJv35W0KJCQj7QQHK1QpdVe09KWqOKxr2N0wwyiWtNnVAgDmhYoA_uS0dogKjmqaF0DR7RGVCKq900J0iw6XAewLYwvmjLoyyO3_99dbl8wOr595y5Q-9-nHs-hy9rxl8ghm6bWDtkUitHCIZtMSIdsmLUfEw9hxjyEjRZVAegpiXZRgBv5VapvEhdCNk94LxuEoRQGq-w3hO24XGhEMcJc1DQrAOcaAGFWANWY1gZnkCsNOKPsK0g-1CuKxxI_gha5AN0WM6o5fqRFA1jSEmqESyokzkXRFaBKN5DRBasqhEsN1gojlMSl4lCgSjCEK8FwAY9QINL9EDWuBCBc5pqWgCslpAHt-GvrP5yX1Dxg0FoqhPO8wkxJoykzjr9WEuFcKqxVI7mQe2zrIlwyJTvPKo1pIWhtkeaN_CYkx8baVjv-miBsqN6DwaxqLJk4ChA2jYS2YA8StAXMIWv2e9D2lZB7x1_veYZw3pbjLuQ6K7mwsB2y0UoZhHOmHkHTPZyrpKFWjWZgy4_dX4js4H6HbGwAtORIWmBRP9cGyu-3cchGSFY0HC5pfUnVdoA9Yw7Z9DH4EnsO2aQO2SwWx3-dqHo8GDzZB3Y8aF_1RD_nW18_BMK14Y6_ZuQJ4Ry0VhoXohQGeSnC-V42zM6KWijp-OtgQRYewnn9VVRYcY3ZA7CvWEi8L_M2BgqlMRd0L1VtBLORSDnXtdgjvN7t3q9Wu_8sf3m3W_-6_Lwhu9Xmfrfc_uT4aw9hZcGZsnLIpptZmOVRnHoLhfATYqPp5rhLrxeWUaG_jB1_GaRWWlijNUiDKqpr0MioryCRQ2KHpPZvd0lOtQ8df-l5tr1tZ4UxbySzgYysXNsOrAR0PfiL1xqLTpvtPLWibcAqHnJIYhvGd0687pG4VgN9F7lPruu6YZgDpKHrekmOrBxZCfWX9XPdPXzSQppWYDvxJclQSdNvO1UbDbR0SOSQFRLSOCTtRj0rsw65c598FlAvyQdQ3gRUkPOMB2gr9pIW_6GSF6AdkrRjrFAt9kLmamccsrS_H5Xg7WPat6h7itz2TzcA6QeI85DyjLlJQFy022mojdKw0z1h_fw7MZ0KkVXmQQPli1ot3NYMLwiIOxjhj43IwI2yILDdUqnkc6maGrXCXrVsph2T91KYD6I2KxvZVpltYfvj3VNVCCbMoYZDkk53XtoJWog_gL-TRphn1Apz741ZRdv83VOle8JGb39uaPHluYKL2mVKFb2TF-1olVaVpSJFWyipbXGC-WDGSky8-E2szAsnfFgAp4348Sx1PBz_O8yPrc2PfgG7SN6XVeH4q1O9-e8OYfs6e-GMvSQn_kkL2wVwC783IBn0Mxh0rnT5w4kaxvsfIfmk5kDBT02bDCxt-vcZ8ikFB5otA68wvbxCTqIwJLlNFw8zMZqy5vlhCGhOwpijlaqep6a9cbpt24TjQ5-bzV4uW3H_DHVTmNOEkBUyuoGemGmAXUMHD0MY6IgndLDY5X50mo731DyAXh7S5o3SK1oUswg6Z-KmX8HWwIrjiXR4-0kro6yfDzS2FRvZbmM46oV-CKZLoujC2TdudOS8Fx5-oVpQLpi1vovHt3vDzyj3o8EbycwbXkLz0yhWSj6CNufdYUtOy9bp0j_joes8cjZmrmcxS-goY0hnLPpx5J5m8a4RBf8MtSoegQ9sJd9l6n9pCfw0Tcf2_EBqTgM7hN8p13fjrj_YAqvJ1xHL46jPYmwm5k6JjXI3JGeIPU3olqlexC-IyHNkvm0ZuZbT64MxdUMycObNgjEIo-w0Z0tmPsp_MGfXcARhlA0ckQlHMY2oN5mwn9q90-j5k6pNLp7s0FDbHeG2yXPxNCXtuiX1YvQh5C71RrNimtvHKYQ0Pot-RbtssoM-BT2ubOu1v7t5O4_J-RI1bmrl2Tbf2k3fcdNrvBUCJCGNB3uDmbfcmMBfa-_fYiSNCQxGhnMjU8LPGrlsD1rtWnyJqTPoV-FMCR9wRnOcPCBncQ7o-p3jW5Ojod3haGKnW0Wxm-7OnvRksvpW__BgJKvxzO7Y-47d_8-S4Xlj9Mm_TDLSf4FkEPefIRnEm-EMeXwe51-MLufxCN00F0j8gPv5d9FtD2ebrwNsn_nWlGalpIGna84kwzwG7ucDyOmSn5Akys6rzwvAj9ruGqhuM6llbkAvjdEiawzUr4nxVImsCb0S-aQ5uVn9jt1nc7t5Ntm1H4M8Odq8xjXckigbtJEEM25Tzw3ewO1_C5nXEOF7bjAQEc6IoEHEzotmf9T_Qsid4s8OSa7cwoR5HAQRG4BEMyAshvPRfjgpmAMZtTm9dz72bbfxuTKgohhGATVLFYgPiX8R_DXkQorjE79P3SeZQ7ApfUnQfIGyKqiBe5mr104Ix60-UAPDzOpyteuWp4hD4g80zHKOiOdueBayte-9Vk31qvXbCtixFQMvpyfJhYryKnvfP1k9F1YbpT9TuYd7Ka5mNItzNxwYnWU1Hou-s-BbZj7qUXjd9x9HTyxb10vuUY2zXloyBnVt37X3DK6LrCgaJRT-LPHxuBedz-5GMj2h49XZ9sPZmEfIn2Ij9qIhDfRn6RWJeHxebt49dUEwXbz-BgausDF2eTxoiT87sCFJRJOzNn5R1Qd4hKKT_bFxHyv6ewOfzGxhfhGf9pTq7IH8T4o3BdyXldKH9POq9QJiEtFkMG52nuNFEaFHxi23X179ePbGo8MQIjcidAAyyYRSSAIIJoq9Uhzeg-w2rYdtKrDGQF_U7sEvHT4IGUAwyNv0-yL1ojTNJk7eaCvvkp8Y_8qRk8xPs5EHJgkHdSHmfjY1vKxEAfpe1oa-fNOc2_461KviI0h8j_vDaeX0kxklYcbibHog2uIYQD6-LEzJOSOumpJBSkMWj1BNlvcoDpM89BBj3q67J5Kc_gjxQPXwFac_952UTS9RXAgOKMlDb8CWzrB5Yc7RgaaV96WdJ-cPoo6Azs6gbB99ujHKrlLEtXgEPft67hA_cGeYgjTt95kHxvpPjXbo1vzlZSNeylEKaTpsKYPJshFFJPbdDFkkl3bIY893h4AIptdaoixyEx_tdoXI2K42VJvdqPdzd1vYolaLqB2DBO4opQz8uV_dGFDX-eU0ZG58WD1H1zeHW579hc2uDL3UQV2Nw-Uxx1_VhhciWzzY8DjxTqiXV-6yv4G6poYiJ75DQhrEm7J8dvw75MRrx7_rKnLVZAWg-hu1afCkGVnS9s7RtCxrYyBum8frrhPbex9Uw1tUaSFN3pYRh4RF7oQr2T6vDuNNh3TCu9AJ15as-A4d7m-tkIe6h-7z5yUtgq5F2h7RjqCedMBKlSWV_PiKbevI7kbc6O6egdos2Ku9fVHoM1Ra8YYB-rkR7Gvx3FV4MKZqL5iRTXfPcbFXPFOFWSi9d8jmD4ds-Pu4zhL1a-C4yxt-6_PUT-kN3HpxEKZBGIXk5uEWEu7lxPNj6rOIcz9m1MuShCdhzkmYZzfilrgkdAOSelEYeGQRQ0IiyH0_zQgkNHcCF0oqioWd7nb4G1HXDdx6fpwE4U1BMyjq9ko1IZ2kE-KE6xt9217ezZp97QRuIWpTD10YYQq4Pb5TPb1Bfbg5LV6ulWgkJFqNPDu9N82olZ70ptHF7YxCYR6abMFUaeegFa7uH1xp9Rsw45BNa1btkE1v2eMt-b8AAAD__5ouGpM">