<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/112004>112004</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang++] Assertion `(t.isNull() || !t->isReferenceType()) && "Expressions can't have reference type"' 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/febehxMPG](https://godbolt.org/z/febehxMPG)
This valid code will crash on Clang Assertion Trunk. It seems that this goes back to clang-6:
```cpp
void *operator new(unsigned long, void *p) { return p; }
template<typename T, typename ...Args>
constexpr void construct_at(void *p, Args &&...args) {
new (p) T((Args&&){}...);
}
```
Stack dump:
```
clang++: /root/llvm-project/clang/include/clang/AST/Expr.h:150: void clang::Expr::setType(clang::QualType): Assertion `(t.isNull() || !t->isReferenceType()) && "Expressions can't have reference type"' 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-trunk/bin/clang++ -gdwarf-4 -g -o /app/output.s -mllvm --x86-asm-syntax=intel -fno-verbose-asm -S --gcc-toolchain=/opt/compiler-explorer/gcc-snapshot -fcolor-diagnostics -fno-crash-diagnostics <source>
1. <source>:4:25: current parser token '...'
2. <source>:3:54: parsing function body 'construct_at'
3. <source>:3:54: in compound statement ('{}')
#0 0x0000000003ba44f8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3ba44f8)
#1 0x0000000003ba21bc llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3ba21bc)
#2 0x0000000003aef418 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
#3 0x0000787be1e42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x0000787be1e969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
#5 0x0000787be1e42476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
#6 0x0000787be1e287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
#7 0x0000787be1e2871b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
#8 0x0000787be1e39e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#9 0x0000000006ba01dc clang::Sema::BuildCompoundLiteralExpr(clang::SourceLocation, clang::TypeSourceInfo*, clang::SourceLocation, clang::Expr*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6ba01dc)
#10 0x0000000006ba0578 clang::Sema::ActOnCompoundLiteral(clang::SourceLocation, clang::OpaquePtr<clang::QualType>, clang::SourceLocation, clang::Expr*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6ba0578)
#11 0x00000000066afcc2 clang::Parser::ParseCompoundLiteralExpression(clang::OpaquePtr<clang::QualType>, clang::SourceLocation, clang::SourceLocation) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x66afcc2)
#12 0x00000000066b86b5 clang::Parser::ParseParenExpression(clang::Parser::ParenParseOption&, bool, bool, clang::OpaquePtr<clang::QualType>&, clang::SourceLocation&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x66b86b5)
#13 0x00000000066ad941 clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, bool&, clang::Parser::TypeCastState, bool, bool*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x66ad941)
#14 0x00000000066aebe7 clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, clang::Parser::TypeCastState, bool, bool*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x66aebe7)
#15 0x00000000066aec79 clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x66aec79)
#16 0x00000000066aefde clang::Parser::ParseExpressionList(llvm::SmallVectorImpl<clang::Expr*>&, llvm::function_ref<void ()>, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x66aefde)
#17 0x00000000066cb886 clang::Parser::ParseCXXNewExpression(bool, clang::SourceLocation) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x66cb886)
#18 0x00000000066ad444 clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, bool&, clang::Parser::TypeCastState, bool, bool*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x66ad444)
#19 0x00000000066aebe7 clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, clang::Parser::TypeCastState, bool, bool*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x66aebe7)
#20 0x00000000066aec79 clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x66aec79)
#21 0x00000000066b3699 clang::Parser::ParseExpression(clang::Parser::TypeCastState) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x66b3699)
#22 0x0000000006736429 clang::Parser::ParseExprStatement(clang::Parser::ParsedStmtContext) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6736429)
#23 0x000000000672c7fc clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::ParsedAttributes&, clang::ParsedAttributes&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x672c7fc)
#24 0x000000000672d710 clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x672d710)
#25 0x000000000672e5e5 clang::Parser::ParseCompoundStatementBody(bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x672e5e5)
#26 0x000000000672fd3a clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x672fd3a)
#27 0x0000000006642b93 clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6642b93)
#28 0x0000000006677f9d clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::Parser::ParsedTemplateInfo&, clang::SourceLocation*, clang::Parser::ForRangeInit*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6677f9d)
#29 0x00000000067416d6 clang::Parser::ParseDeclarationAfterTemplate(clang::DeclaratorContext, clang::Parser::ParsedTemplateInfo&, clang::ParsingDeclRAIIObject&, clang::SourceLocation&, clang::ParsedAttributes&, clang::AccessSpecifier) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x67416d6)
#30 0x000000000674ef9c clang::Parser::ParseTemplateDeclarationOrSpecialization(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::AccessSpecifier) (.part.0) ParseTemplate.cpp:0:0
#31 0x000000000674f2ba clang::Parser::ParseDeclarationStartingWithTemplate(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x674f2ba)
#32 0x0000000006680543 clang::Parser::ParseDeclaration(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::ParsedAttributes&, clang::SourceLocation*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6680543)
#33 0x000000000663e877 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x663e877)
#34 0x000000000663f71d clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x663f71d)
#35 0x0000000006631c3a clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6631c3a)
#36 0x00000000044fcb58 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x44fcb58)
#37 0x00000000047b6459 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x47b6459)
#38 0x0000000004734ffe clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4734ffe)
#39 0x000000000489bf4e clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x489bf4e)
#40 0x0000000000cda85f cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xcda85f)
#41 0x0000000000cd256a ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#42 0x0000000004540829 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
#43 0x0000000003aef8c4 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3aef8c4)
#44 0x0000000004540e1f 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
#45 0x000000000450675d clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x450675d)
#46 0x000000000450784d clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x450784d)
#47 0x000000000450f175 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x450f175)
#48 0x0000000000cd772f clang_main(int, char**, llvm::ToolContext const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xcd772f)
#49 0x0000000000ba7084 main (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xba7084)
#50 0x0000787be1e29d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#51 0x0000787be1e29e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#52 0x0000000000cd201e _start (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xcd201e)
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/eJzsm19z46iWwD8NeaHsktBfP-RBcZLZzPa93dtJ7d43F0JHNtMyaAGlnf70WyA5EYrjJF1xV9fOncrMyBIczvlxOBxAolrztQA4R8kFSi7PaGc2Up0_8L-oiPM4OStl9XCOSIFIcbfhGhvQhlENmGu8BgGKGqhw-YAprrsfP0DN-8IouETB8N-l3La8AYWvdm0jFSgUFRglFxtjWo2iApFrRK7XsiplY-ZSrRG5_oHIdQ0lbHb_-PIHSi4Ryd9enCzGzTu972nDK8xkBfg7bxrMFNUbLAVeNlSscaE1KMOlwHeqE9_m-MZgDbDV2GyowcaKWEvQuKTsGzYSM1ttllp1-qbSoP9jbdvfuZe8wogUsrWQpMICviOSd8IRr3AjxRqRJd6XaxFZYJRdYAWmUwK3KLrAKLvspRnYtg01gKKleWhB0C3gO1v98dd8Pi_UWqPoqq_BpNAGdq3qW3A_VcfMihpE8lGrS2zrYURSRNL5fE6tlEGXXhTG2GqPEcmdlneI5IjkrjlXyxLPLlB2OZ_P7XV0MVDZq_-IZ9wxt8bCrLpt-xzjYIOljMiF_bM-Q66VlAaR66a5385aJf8CZn8O5a65YE1XwehOcXuHyPXVrlXzDYqKMAmsoJ6IKxIVKCrs8_5Kg7l7aAGRfPT4vzra9HcXtvaTs1hFSW7mXP-zaxpHxXJbomyJEQnNDEVXXH-FGhQIBoNkK8aWc-gwIsQ2D1pzKTRmVCCSGbyh94DVvqbrZkQIIhmuKW-gmveEvny6Km6vsO7KLTeY4rJbYwWtVMZ66WTIcLPpyjmT24Hgc5Bc6w40IteYigoPOLHZwDBgrPsbRRlYt2kVtEoy0BoqrGWn-tu2JtVaMu5ig-oE1kzx1sxf7PZgjoLFFyXXim4xVetuC8Looctl67p4CCIz2AeRoZNndN8dembs4EXkuuTiyQes9-DZuvpOVT2L8WyNZ9LKpW1rpXem7cxc49nWssCz2S5PZ1RvZ_pBGLpD0SUXBho8q4Wc3YMqpQb7HM9u8Wy2ZmxmpGzYhnKBosuj-trCWtBWb6TBs5rJRqpZxelaSG04030bjrR3G0XLAe9-cIcWmHc7KmIUFSSx0FinFAiDW6o0KGzkNxAYkcyNzqyXQA5IiFBUJFaMq8nFGtedYM7T7TxgRfhhZJAVHZXFBbYwZCcqrA01YDsXu3GQ9VHDXuxjNkYkCnCwC_b_RCWN4zrHzmH7Mfqg-4svigvj3Omu98n8qZCi31dSGwV06wbaEnNh-mGXf5BTIXIR7Ab1PP3Dif4kLNkh_ZcNUNG1n8UtXwvaPJ8dTqGtVcbTlnjaUqjjMMdL64Rfgcl7UA-9ev9BRdXYRvOBpFdmKYWBnZnb-S8qAvfvYxPR0ESWZyWEEJOEBINpDS8Rud7l6SqNZw0X3W62Fl3_gM21nKdOcVfFUzv2ZS7SRc1wazYKaLX6Zuf4dzXg6nsNJFOl4yzFa-1YvFf5OEs92akvm-RZHWFa2rD9Lsmuoic5eyY5LN8tMyw9mbkvM1rAIn2fTFfFk7kYe11a0iCs2HhKvoUt7a8uOt5UyyGCfOIGFG3chO3N0bcu9nySjNpxYMf76KGdePsCN6KWLkP1nh-t3LdVnGA0DmY_5askCoMplyTLD3MpmPksJlzeweRzS_-3gy9GoWh5KNeJrn4fSEmWe5C8AJumtGaMjLX54ia-0fUB9-kTLh_YxzKZPvx4NL3lHhrioynztEyOovlCFYiXgExKg3A3Pre9QW5aLaVsxv9_J870FWjpSbg5LB63aOJS1SIOj7sU1eYt2Gw59_s_uaieA5vaP65qIdnqtzZrel71JKOtt9xDE0_QQAnZadH8VjysuR6PZMqDZYujPAq3y2LT3rdQmVh5EpNYtvBMSqcm1RUcNenJkE9cGy_zvt3SpvlvYEaqm23b-GN_P088Dv2nevu1xkpBjaLlsEPhAn8fd_3ePgmXugKPS-ZzYWWep8dd_1__-id897r5gFP_gpnBqerZkk8jXBzHf9MIF8exh2bx7wg35kGC_3cRjkxSxjJKF8dN-j0McXp6hvgJXhalMXndkNv9vsvR9E5DdWu2ZljKn8KeXl3PHj_xygjLanbUnkdbPqtLYA1VLogWtQFVGKN42RnQL81I_mxkrR1WgxHpDuajryA6Gtany8y-_ljJg61NS5ygGxxlrxviSTdUWRj8RDf8LtxPwcwi8ZglE2aQwPG11n4Z-sjuQlYPjynCKXS2Knk6pxOd6yqiR3W-HtKyqc6jOrb_X_B2z2OYbOFkHm0N8Syd5G4xKRfRmyy9hJoLbg5Gfi7We2-X6i1eezcc3N2IWvaHcMdrfaIGnqJAn1yfZtp3QDxikwwxy-pFddQ6i-IPJbv2RVC3LbDnBj8hPDyg3xgoXwT9-rbCMWe9luorFWu4Efxk8B1bD76fg2ZxmFbHlxrTyW8P4PnYfBX1O0CO-vZrcXPzuexPDt-wjfPOHi4YA62t__CaW8gnCBoO8rgX_KOnNIuhXhzPRva0Rr3xWTmtacN_0OdR5LUOORW5eUuVmdsJDHuKPz-xsRzCCYealMeniZH9t4Yqw8X6f7jZ_JxT_hSDU_iHNdvzj8n2ah4k8fFJxc-NfqkfvF7ilyROPSSP4mSzNYI8O77evtoZUII2L9L8CBrPpq3T4HDWejgmG6xRnYXH59072X6Ce2j6xOsNJxiPE_VXqA9vuz8eK_1DVl0DN9tWqv269jR78M5Mj8NkYzUK2YHc1L3Rk09VP3QWcQqdrUqezl4-Hcc1KxPvvG4pK_gDROEyy_0eKLDOwHBreGnoYzUdFPE09fLhOCvTOPE2Dq6VjUOiOqDqiZTsdfCUzH0lo7iuwcfZN3sjtKGCwWGiL1t1El8e9PQM8dK5OF-UdQz-galT-cme-8conB-z9yRBadBvbEDsZUIBq2ie1JixcLWl3F_mF0rRBxdYlmxD1X6VU-yPS717wxuPp7Gj19IzI5yYQZKU4j38ZXjnIsXx04tnNk0OLqyMYQ4frfAWuFL8HtTB_Cr28og4iYOcLPrXEt96IOKKMNo0JWXfVrXwA37f9uBDy3Apt1sqqumgPtiH2gzlpDvmpZbBiI9RXKyHaaTv4McKqxXb7cKw_1FSzdlKu-IDRa-wvbEyinKj948n4mjT2DHRbx4Nz22RYrIh3jN3VRDJGrotK-peKXs8O8r3r1P9KcvD_RFNX4LKWTzqikOvOvVPvnbiltbQPHg4XznL-vj3unqNPc-Ppy4GYY3_zi4yWQW96AuJDy5Is6R6EZzrO_psxtzT9IL5pKIt8NKW0JGihZfsjGz70BmhN9tzqHTCJcvjd3P5U5b6ZSh_yvIT18aDciw0P_pBS7l1Afdi4ts5Ds7yS2haWB7NbEKzDrPkJc0vR9de4nAgY3ipF34hzY_PT3o8Hr98MrFnGRnC2z5D2evvwkoxBIXXp-0Pz0msZp7qXm4YlDQL8hhbpT-67V70uO0kmLwfuqgW73wV11XxZIZTmRAHeLWy1VbaUGVWI-Pe3ArEfitkmskFIeBe_sf3mRX-2Pr4cVRgUEq6b5jcfVwPKwzMhhHRf6CBv3OzwbDjpv_sKIxiq2anAc_usZFYA2A-SvsXk6-l-u-AwI5JW3nygcxZdR5Vi2hBz-A8zEieJhlZhGeb8yQCEmdVXEUZY3nJaJKXlFAWl2EaZGV2xs9JQOIwCMMwjuIknMdZvWBVWJclYWEahSgOYEt5M7djZS7V-sx9FnIehiQI4rOGltBo98UYIQMagpLLM3XuviYpu7VGcdBwbfSTCMNN4z4zG8NMLn-Tj2nOOtWc__zXMgOZ-3PyfwEAAP__aF_93A">