<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/111845>111845</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang++] Assertion `Init < getNumInits() && "Initializer access out of range!"' failed.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
yijan4845
</td>
</tr>
</table>
<pre>
**This testcase is generated by a fuzzer.**
Compiler Explorer: [https://godbolt.org/z/Mjn1qfszx](https://godbolt.org/z/Mjn1qfszx)
This code will crash on Clang Assertion Trunk, it seems that this goes back to **clang-17**:
```cpp
struct S {};
union U {
S x;
float y;
};
void f() {
new U{.y=1, .x = S{}};
}
```
Stack dump:
```
clang++: /root/llvm-project/clang/include/clang/AST/Expr.h:4881: clang::Expr* clang::InitListExpr::getInit(unsigned int): Assertion `Init < getNumInits() && "Initializer access out of range!"' failed.
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: /opt/compiler-explorer/clang-assertions-17.0.1/bin/clang++ -gdwarf-4 -g -o /app/output.s -mllvm --x86-asm-syntax=intel -fno-verbose-asm -S --gcc-toolchain=/opt/compiler-explorer/gcc-13.2.0 -fcolor-diagnostics -fno-crash-diagnostics <source>
1. <source>:9:25: current parser token ';'
2. <source>:8:10: parsing function body 'f'
3. <source>:8:10: in compound statement ('{}')
#0 0x00000000036e7558 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x36e7558)
#1 0x00000000036e53dc llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x36e53dc)
#2 0x0000000003632918 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
#3 0x0000703ae7642520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x0000703ae76969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
#5 0x0000703ae7642476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
#6 0x0000703ae76287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
#7 0x0000703ae762871b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
#8 0x0000703ae7639e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#9 0x000000000651b5f4 clang::InitListExpr::getInit(unsigned int) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x651b5f4)
#10 0x000000000654613f (anonymous namespace)::InitListChecker::CheckDesignatedInitializer(clang::InitializedEntity const&, clang::InitListExpr*, clang::DesignatedInitExpr*, unsigned int, clang::QualType&, clang::DeclContext::specific_decl_iterator<clang::FieldDecl>*, llvm::APSInt*, unsigned int&, clang::InitListExpr*, unsigned int&, bool, bool) SemaInit.cpp:0:0
#11 0x00000000065422ed (anonymous namespace)::InitListChecker::CheckStructUnionTypes(clang::InitializedEntity const&, clang::InitListExpr*, clang::QualType, llvm::iterator_range<clang::CXXBaseSpecifier const*>, clang::DeclContext::specific_decl_iterator<clang::FieldDecl>, bool, unsigned int&, clang::InitListExpr*, unsigned int&, bool) SemaInit.cpp:0:0
#12 0x000000000654075d (anonymous namespace)::InitListChecker::CheckListElementTypes(clang::InitializedEntity const&, clang::InitListExpr*, clang::QualType&, bool, unsigned int&, clang::InitListExpr*, unsigned int&, bool) (.constprop.0) SemaInit.cpp:0:0
#13 0x00000000065308fa (anonymous namespace)::InitListChecker::CheckExplicitInitList(clang::InitializedEntity const&, clang::InitListExpr*, clang::QualType&, clang::InitListExpr*, bool) (.constprop.0) SemaInit.cpp:0:0
#14 0x000000000653127e (anonymous namespace)::InitListChecker::InitListChecker(clang::Sema&, clang::InitializedEntity const&, clang::InitListExpr*, clang::QualType&, bool, bool, bool, llvm::SmallVectorImpl<clang::QualType>*) SemaInit.cpp:0:0
#15 0x0000000006532788 clang::InitializationSequence::Perform(clang::Sema&, clang::InitializedEntity const&, clang::InitializationKind const&, llvm::MutableArrayRef<clang::Expr*>, clang::QualType*) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x6532788)
#16 0x000000000646ac0f clang::Sema::BuildCXXNew(clang::SourceRange, bool, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceRange, clang::QualType, clang::TypeSourceInfo*, std::optional<clang::Expr*>, clang::SourceRange, clang::Expr*) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x646ac0f)
#17 0x000000000646bf06 clang::Sema::ActOnCXXNew(clang::SourceLocation, bool, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceRange, clang::Declarator&, clang::Expr*) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x646bf06)
#18 0x0000000005e6eb1b clang::Parser::ParseCXXNewExpression(bool, clang::SourceLocation) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5e6eb1b)
#19 0x0000000005e514ca clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, bool&, clang::Parser::TypeCastState, bool, bool*) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5e514ca)
#20 0x0000000005e5389a clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, clang::Parser::TypeCastState, bool, bool*) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5e5389a)
#21 0x0000000005e53a39 clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5e53a39)
#22 0x0000000005e57bc9 clang::Parser::ParseExpression(clang::Parser::TypeCastState) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5e57bc9)
#23 0x0000000005ed35d9 clang::Parser::ParseExprStatement(clang::Parser::ParsedStmtContext) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5ed35d9)
#24 0x0000000005ec9c83 clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::ParsedAttributes&, clang::ParsedAttributes&) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5ec9c83)
#25 0x0000000005ecab51 clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5ecab51)
#26 0x0000000005ecbaa9 clang::Parser::ParseCompoundStatementBody(bool) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5ecbaa9)
#27 0x0000000005ecd37a clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5ecd37a)
#28 0x0000000005dfbe81 clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5dfbe81)
#29 0x0000000005e22648 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::SourceLocation*, clang::Parser::ForRangeInit*) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5e22648)
#30 0x0000000005defc4a clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5defc4a)
#31 0x0000000005df04df clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (.part.0) Parser.cpp:0:0
#32 0x0000000005df6b51 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5df6b51)
#33 0x0000000005df7452 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5df7452)
#34 0x0000000005deb76a clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5deb76a)
#35 0x0000000004939258 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x4939258)
#36 0x00000000041a1c09 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x41a1c09)
#37 0x00000000041278ce clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x41278ce)
#38 0x0000000004281de6 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x4281de6)
#39 0x0000000000bc67eb cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0xbc67eb)
#40 0x0000000000bbefaa ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#41 0x0000000003f83419 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::'lambda'()>(long) Job.cpp:0:0
#42 0x0000000003632dc4 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x3632dc4)
#43 0x0000000003f83a0f clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (.part.0) Job.cpp:0:0
#44 0x0000000003f4b275 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x3f4b275)
#45 0x0000000003f4bcdd clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x3f4bcdd)
#46 0x0000000003f5385d clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x3f5385d)
#47 0x0000000000bc4a87 clang_main(int, char**, llvm::ToolContext const&) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0xbc4a87)
#48 0x0000000000abef61 main (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0xabef61)
#49 0x0000703ae7629d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#50 0x0000703ae7629e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#51 0x0000000000bbea8e _start (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0xbbea8e)
clang++: error: clang frontend command failed with exit code 134 (use -v to see invocation)
Compiler returned: 134
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkW12T2yiz_jXMDWWXhL4v5sLjifdkT3aTE8-eyp0LIeRhI4MW0MSTX_8WINtC_kgmO06l6k1NZmwETT9PN03zIawUW3NKb0FyB5L7G9zpRyFvn9nfmMd5nNyUonq-BWgG0OzhkSmoqdIEKwqZgmvKqcSaVrB8hhjW3devVE5dZRDcg6D_PRebljVUwjfbthGSShDNIEjuHrVuFYhmAC0AWqxFVYpGT4VcA7T4CtDij795-E-tvm5Bcg9Q_v3VUTHs3upNREXhF9Y0kEisHqHgcN5gvoYzpajUTHD4IDv-GaA5ZBoqSjcK6kesoTbN14IqWGLyGWoBHUJimk_CrMcb7SCngfshbetKlJYd0XAJQXYHsnsQ3Q2167jp-y_70BZACJdwu68F60ZgDZ8PzY5EPAlWwRqgHKDCk8PpF_gXyO6mzyC6Dw206RaC6B4ue1WsKHiQ6yMY9rHUBnzVbdpjpO6r5QOgO_Nj7IsWUggN0KJpnjaTVoq_KTFf-3oLxknTVXRQMls-ALR4s23l9BFEszjPQyPJPY4MxeYZQF7RW870O6a0fWRL1lSbQoDyjlvvriDj2jhFNBuYG6SBqQZBNIdrqv_sNuar2tGIUoBSCBAypQw37CuVEBNClYKi01DUUGK-pgCFACGAMlhj1tBq6tj48O7NbPkGqq7cMA0xLLs1lLQVUhsPGrky049dOSVi07N1TBpTqqMKoAXE3MCx1EH9SHt3Nq6pJSbUGLmVtJXCaEorqEQnXbFpiZUShNkxKzsOFZGs1dOzJg6mICg-SLGWeAOxXHcbyrXqzStaa85-cE_obnD3Bp3gHdVqEmbTYBoCtCgZPxjcuAqcrKsvWNaTGE7WcGIG1wK3rRHf6bbTUwUnG0MGnEy2eTrBajNRz1zjLYjuGde0gZOai8kTlaVQ1DyHkyWcTNaETLQQDXnEjIPo_qLCpnIYTdE0gJOaiEbIScXwmgulGVGuB0u0Vwyiec9u9MbxFRq-vOJoZtwOJdaROykp17DFUlEJtfhMOQQoM8MZZU4COiEhB9EsDIwE05LxNaw7TqwTm_BsRNR7AdFFAYxDg190vIJKY02NQaH1-ayPCSjbx08IUBTAYBvs_kUpzZIkh9ZJ7WBTz8p9-CAZ19aFHpwf5odKEn9ZCaUlxRs7rub9gHQdv44jAXQXbHv9PADhCEASVeQUgHlDMe_a93zJ1hw3w_DRCNPLVdQ12njqIl_dCBVhDufG9z5SIp6ofHb6_Q_mVWN6zXsuvTpzwTXd6qmZhKJZYP_vu4j6LrIgwjRLY5SgoMfWsBKgxTZPV2k8aRjvtpM179wDMlVimlrFbRNP7diXWaRFTWCrHyXF1eqzmXdf1IFt73WQjJWOsxSuleXipcrHWerJTn3ZKM_qCOLSBOsXSbYNPcnZkeSwfLHMsPRk5r7MqKBF-jKZtoknsxh6XZqEZVLHPzjLvvoo6dU5ZHUoCgNf3zgNo9p0jLngzxvRKcjxhqrWRqLCxzB_pOQz7WHYL_fU-pGm1WCyBygfEeAeVG-4ZvoZEsGV7sPZOaZMaug99Xsa1PFJ9Nr8X4ebh-eWHvd1T0nTj_Q-mLWUsJqRVUVJs2LapOdCgmg-aLRgtKlMSzM3uM4P0XD2YfnWKHBCp-8AeqJBKURz-FvAJd1g0_I4MhmzhiOzIkSrHzfr0ibef5kE2_CnrmLRg3WGPO6oX7kc0TPA_NOnO6zo0tmKyl2_M2uQ1zbwwQSvZ85vmRGNzBhkyb8wo9WqsZnKzzBjei3OAMqnVrdWinYafJvGyKcxCvIa_ziNZvHNCNO7Gj-DxsvtfpiYeERMiDL6Q8SMCz1KjA6ncVzP38Z_DxFlucFN8_-UaCHfbtrGH_J7aX1I_xaByYhAlOX5SZDYzNBL-k9HuVlM2ESfylrIzatzdejvfxmvvJoHFv7oNC4bOpMSP3-ktc_CjumjMHoge3adBMUS6CUoqcdwnGIS1HBMmP1017Gmmn_69Cf9MuLUruA-uk2Gg0sc1XgniKXtNZg6lnheoTOT4KDYFLlGb3kt-kGgdOWeitb0gZsXqXaq9_0Iu4JpneU802Yj05Z1kJ427Yzo9_y8aYc0_8rWNbkEdonG0ci9LveGWo_7fMh9QlNahuVQnQ92a2Xw2bFvtKRKWdD5d1D9-mB6XT0whQ8mCWOCL4PBbjrZQzlT2dSz300kPZ5WxjYcNjVD1jRfaqzpcdOrGLqHPuQGBSNuory4Mje_FiEGr0dIOCYER8VFQmb2aMdkzd9DywjmdTDhqPAwoRGmrCSXMf0qSIyiHpLIR1JFSfVtJMvdBux5MPZztdQbvVsGXgWQ1dcDFPuASEHy6CKgPZj3cjdfMMFntaZyprVkZaft0u1kRuvPXwZunyxEqLPT2KWQdYKji8F9nIq79kMlT_Y2rnENO1iaPTskIzvgMgl_wA6_CvFXIc1w4pGWjkgrMb48Guf9mcievDtRPe9ThasobXTylM5GSldRdnnGW_SHQGOlR5nbGYf3fIaIfiV6FagGiQfVz-KquqT5ZafeQb2nNTNLxVPxn_H1pUT12HEf6KZtsLZrk3ML02Grd1jTQyRwWyjXcWnHiEfZKFdEKI3zi_AMF79J0bVnmVq2lJzeU3Ycnh7U346W3xVve1UXQtoVhztKuFKAsGQN2fQPNZOK1iS-PNYMK-_lwA3fck2lOyb891PJUY2LFprZSwj77ePreKClxOMsHA3aIK7qb3LWTz8edWdH8KszN_a808xNWyy123Z0GE7umfkHs0lVp9-aid9snYv40_BPwHyViJSOJtkoGvGRxQm6yMeDaN_RJ9q4SWlIxPsW_9PRD3qUjuxDmN3hOJGMHHZa_hBV19C3m1bIXeJ_ndnM4fSIiEfBpMzS42Bi7zad2TEdn5FdYTQbnTylvbwyLqICJd58MhcV_Y3ymR20u60eSjpN-6LdNanXVbXXxFPVy-biEIck8LK5hTQTFa9O6HotLZ0SnpaZryXKckJ9Ql2_b7nSeL-ZPub0PKzr-HOvqIfEy85ilIcVTf0tP6vzAdDTfqrPLwG-TmjqFfQQeMlSUJI0oyUkJFxtMPOXQsMN1Ed8fBTrlaE5fBKsuhIQp-YQRxz4OEpaYwx39M_DBxsvTi_sdmdER6BGBypGRp_oDXLgAlaSPZ2ZCWP_RlWdR3FYWGYGcnc31FbSkmufutHorqSBaEZw05SYfF7V3I_7ru_ei-bhXGw2mFfjgX3SiKcOFwb8aMn4up9NnIX3DVYrst2GoftSYsXIStnqPYteZVOw0hIzrXaPR-Jw05hR4VbY_fP9fYvB1qHj3DYBKGvwpqywvYK3owrlu9tnv4vytD2OroxVJB6Y4tTFMPfkY8eXuKbNs0fnZdNd5RqcVdlz_WjsY9g_P_uv85FRpnrWGWKfuLhEWXKWOGs8fDRt7tj04vmooalwbtV8oepsdClij-11Pcrh9jwqGRNDquqlxPwuSnWeld9F-Y4pfebo-jg47x2hxcz4wPHVr4tE9t7yk-gkVeXRmfp0JlGenKXzfvDZyx5OpA3nzPAT6bxChHP8eARmoyQlxnnmlN2lKTsANrLMju7qnZu6Xz8xMap5unspYoBLWqchNFq_eudOttd5MbpTW1TFC68v2yZDmUkwlknjAK5WptlKaSz1aoDuu3uhsd9LOM7ncE6hk__6VrPS990PH0czSKUUcv9yDaz7tQYk_ahw77LAL0w_Qrpl2r0_FUax0bNTFE6eoBZQUQrZIP8vRi98Sao7yakZl6bx6L2hm-o2qoqowDf0NsxQnmRhmqQ3j7dJEYVBQKuSVAGJihpFcYWDPMvjrEJpkN-wWxSgOAzCIIzjLEqmcUCDMMlLnFVJntcViAO6wayZmuEyFXJ9Y9-guQ3DMI-TmwaXtFH2pTeEemoQSO5v5K198abs1grEQcOUVgcRmunGvik3JDO5_wnvFN10srn98ZeGetRPt-g_AQAA__-OBfak">