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

    <tr>
        <th>Summary</th>
        <td>
            Clang crash in clang::CodeGen::CodeGenFunction::EmitCallArgs
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    This example from Richard's twitter https://twitter.com/zygoloid/status/1407816961740869638?s=20

https://godbolt.org/z/bTxxzvfzK

```console
clang++: /root/llvm-project/clang/lib/CodeGen/CGCall.cpp:4372: void clang::CodeGen::CodeGenFunction::EmitCallArgs(clang::CodeGen::CallArgList&, clang::CodeGen::CodeGenFunction::PrototypeWrapper, llvm::iterator_range<clang::Stmt::CastIterator<clang::Expr, const clang::Expr* const, const clang::Stmt* const> >, clang::CodeGen::CodeGenFunction::AbstractCallee, unsigned int, clang::CodeGen::CodeGenFunction::EvaluationOrder): Assertion `(isGenericMethod || Ty->isVariablyModifiedType() || Ty.getNonReferenceType()->isObjCRetainableType() || getContext() .getCanonicalType(Ty.getNonReferenceType()) .getTypePtr() == getContext().getCanonicalType((*Arg)->getType()).getTypePtr()) && "type mismatch in call argument!"' 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 -S --gcc-toolchain=/opt/compiler-explorer/gcc-snapshot -fcolor-diagnostics -fno-crash-diagnostics -std=c++20 <source>
1.      <eof> parser at end of file
2.      <source>:3:6: LLVM IR generation of declaration 'g'
3.      <source>:3:6: Generating code for declaration 'g'
 #0 0x000055eb7949230f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3bb530f)
 #1 0x000055eb7949007c llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3bb307c)
 #2 0x000055eb793d9788 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x00007f5fa65ad420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #4 0x00007f5fa607a00b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
 #5 0x00007f5fa6059859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
 #6 0x00007f5fa6059729 (/lib/x86_64-linux-gnu/libc.so.6+0x22729)
 #7 0x00007f5fa606afd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
 #8 0x000055eb79aefe3a clang::CodeGen::CodeGenFunction::EmitCallArgs(clang::CodeGen::CallArgList&, clang::CodeGen::CodeGenFunction::PrototypeWrapper, llvm::iterator_range<clang::Stmt::CastIterator<clang::Expr, clang::Expr const* const, clang::Stmt const* const>>, clang::CodeGen::CodeGenFunction::AbstractCallee, unsigned int, clang::CodeGen::CodeGenFunction::EvaluationOrder) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4212e3a)
 #9 0x000055eb79b6970d clang::CodeGen::CodeGenFunction::EmitCall(clang::QualType, clang::CodeGen::CGCallee const&, clang::CallExpr const*, clang::CodeGen::ReturnValueSlot, llvm::Value*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x428c70d)
#10 0x000055eb79b80a26 clang::CodeGen::CodeGenFunction::EmitCallExpr(clang::CallExpr const*, clang::CodeGen::ReturnValueSlot) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x42a3a26)
#11 0x000055eb79bc997d (anonymous namespace)::ScalarExprEmitter::VisitCallExpr(clang::CallExpr const*) CGExprScalar.cpp:0:0
#12 0x000055eb79bc05bc clang::StmtVisitorBase<std::add_pointer, (anonymous namespace)::ScalarExprEmitter, llvm::Value*>::Visit(clang::Stmt*) CGExprScalar.cpp:0:0
#13 0x000055eb79bc2028 clang::StmtVisitorBase<std::add_pointer, (anonymous namespace)::ScalarExprEmitter, llvm::Value*>::Visit(clang::Stmt*) CGExprScalar.cpp:0:0
#14 0x000055eb79bc8964 clang::CodeGen::CodeGenFunction::EmitScalarExpr(clang::Expr const*, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x42eb964)
#15 0x000055eb79b5c04e clang::CodeGen::CodeGenFunction::EmitAnyExpr(clang::Expr const*, clang::CodeGen::AggValueSlot, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x427f04e)
#16 0x000055eb79b7e34b clang::CodeGen::CodeGenFunction::EmitIgnoredExpr(clang::Expr const*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x42a134b)
#17 0x000055eb797c1447 clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*, llvm::ArrayRef<clang::Attr const*>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3ee4447)
#18 0x000055eb797c8084 clang::CodeGen::CodeGenFunction::EmitCompoundStmtWithoutScope(clang::CompoundStmt const&, bool, clang::CodeGen::AggValueSlot) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3eeb084)
#19 0x000055eb798280ca clang::CodeGen::CodeGenFunction::EmitFunctionBody(clang::Stmt const*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3f4b0ca)
#20 0x000055eb7983bedf clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl, llvm::Function*, clang::CodeGen::CGFunctionInfo const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3f5eedf)
#21 0x000055eb7989fed9 clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3fc2ed9)
#22 0x000055eb7989ae65 clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3fbde65)
#23 0x000055eb7989ba38 clang::CodeGen::CodeGenModule::EmitGlobal(clang::GlobalDecl) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3fbea38)
#24 0x000055eb798a4943 clang::CodeGen::CodeGenModule::EmitTopLevelDecl(clang::Decl*) (.part.0) CodeGenModule.cpp:0:0
#25 0x000055eb7a6dfb36 (anonymous namespace)::CodeGeneratorImpl::HandleTopLevelDecl(clang::DeclGroupRef) ModuleBuilder.cpp:0:0
#26 0x000055eb7a6d0060 clang::BackendConsumer::HandleTopLevelDecl(clang::DeclGroupRef) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4df3060)
#27 0x000055eb7bbd7ac4 clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x62faac4)
#28 0x000055eb7a6dc8f8 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4dff8f8)
#29 0x000055eb79f36329 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4659329)
#30 0x000055eb79ebb2c6 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x45de2c6)
#31 0x000055eb7a0191a6 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x473c1a6)
#32 0x000055eb76957f5c cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x107af5c)
#33 0x000055eb76953c7a ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#34 0x000055eb79d221fd 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
#35 0x000055eb793d9c90 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3afcc90)
#36 0x000055eb79d22a7f 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
#37 0x000055eb79cea07c clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x440d07c)
#38 0x000055eb79ceab0d 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+++0x440db0d)
#39 0x000055eb79cf2bed clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4415bed)
#40 0x000055eb769561da clang_main(int, char**, llvm::ToolContext const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x10791da)
#41 0x000055eb7685d215 main (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xf80215)
#42 0x00007f5fa605b083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#43 0x000055eb7694ea5e _start (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x1071a5e)
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/eJzkWl1z4ygW_TXKC-UUAn0-5MHtfGzPdu_0JqmeR9cVIJlpWagApe359VtIcmwUJ5Ok4qmpnSp3V4TgcM_hcrkCwBhZNUJcBPGnIL48g86ulL7YatVUtWzOCsW3F_craZDYwLqtBSq1WqNbyVageUBSg-xPaa3QaGVtawI6D8h1QK7H0nOm1gG5_mNbqVpJHpBrY8F2JiDXYYTTLEzyJEwjnCV5QrOAXpuAXhIc4MsAz4f_fdxK8ULV9lzpyuEG5Lq432z-eCj_-PdhoyDBw4-pxqhaDKWshqYKyCf3o3MUkGutlA3IdV0_rGetVr8L5h7Hete1LAJyvVBc3IjG_XWzgLo-Z20b0HlEU-JQHpTkaGhB5wGd76ofPlx3DbNSjYVXa2kd0FxXJiDZs22HKl-ksQFJArJ4Wy_ftLLKblvxm4a2FdoBOJ7DW2mFBqv0UkNTiYAuDrDv7NruTDD281jTr3O1aXtEp69FT17MhxdHa_TwjzXoFQro1ZvZzQtjNbBeRyFc867pXZkj2dg3w109QN2Be_5Vc6dV7oZ2bozQrhA5ZyKZNDeiEVqyr8KuFEdBugjSBbrfzgJ6Jc130BKKevtVcVlKwe-3rQhIFpB8X_O8EvY_qrkVpdCiYWJfZ8D4tfh9cSssyAaKWjxFqIRdqMaKjR3LHeACGtVIBvVY_6Vudm1cyTerd-j0MqCXT9CPgfe_-dzNv97mEesR_Ql4j-8cOEEBIc4j0VqaNVi2QrJBDOoaga66tXADFwaEBCRFJcha8PNh4n77cjW_u0KmK9bSIkBFVyEtWqUtsmoSeSppV10xBp7e4Z_Mb2lMJ1wMQtA4f2F1xwWyK4GYBrNCBbAfzrt6v2q1aLViwhjBkVGdHopdSzBGMQlWcKS7BhmmZWtHk-8ssB-Id2sXK4YifB7g_JtWlYb1I2MzRiLV9pFHrVtZCz0Tm7ZW2nniEI1msPNFM7O6a364yCebfbByQQ3NKv4TdDmL0KxCM-VwoW0demfbzp4bNFs7LdBstsmSGZj1zGwbC5uAXsrGihrN7tBsVjE2s0rVbAWyca7xknmusmmgNStl0axkqlZ6xiVUjTJWMoNmZaNmvbB-sbE8oJdsMJ1gFNDFKC-9GgQLnWABXQhVujjRgjZCI7BINBypEpVyF9nJWHMPQOc0oPPEqfvly_ev6PMtqtzk7Se5a8wFq2F8DEhaBSQdsOhLWDcjRlMhprhApdLPI6GAUIzwBmOM41gUaR7lhOLyIA6brdmFa9nY3mnuB8_L9pU0_FwqY7WA9bgS9DHOTavsg1wnIJ_whhZFTHHp5uyj_eHEfoxTdsz-RS2g6dpfmztZNVAHJHsMyLVyvZzCWopT5llLPGspz9MsQwvne7eCqQeht4N5_4KG167TbFTSqzPGwHGhx_2_xy7o2EVaxiUkMfCIYLRcamGs0mKp7chzSB42WbJMolktm24zq5pueNHalRbAz406xz2XMIoI9phEXjc4BYwLpEEa8Qp85pCTHjmiGBcecuwjx3kW5wgK9SrLD5AJyeLcQ06myOnjqL8aMyU-ZupjJlDy5G2YlJY88TAzz0tAlILCPziF84t2mdthCucDT2u4CPk3zOA-Ot5EJCSCgudJuedJRZKn-J0fA74X_bfb5VsvyHAzSLcbjif-BXXtDehLYLfCdrr5DnUn7mplfU_ri3uAE4iasRTzR1HdiuMvmUWGgSTvE3Vw8ezDRDkBfaBAEo--v-IWLM9T7vp1efh2rTqDGlgL0_ZZQj5OSwY1aEfMUbdCjwMnzRuEyNHixhUNYE9XP2ccmRiH44JN40Pfq9KfwLio1Kd57hVwvmyVSzP7sPNmRsddsk_PdlR9iuOH5uuI0Qkxgkn2f0EsmhDL8iR6-2zaW-2b8mQuFUrVJ5koosiTyJsosc8sZjgSb2c2b7avoPUc7LyqvKB5MvppiSPh0U98-qmgUfF2-p-rRmnB_1SCU4S-kEaFRyn1KKUsjKL0Hb7aT4_phPGGcz_f5lrD9laUfm40t_aAvMtuPv7zRYgoilKPfzbhn-HsHXN1odat6hruWP8m7Up19o6pfovGw9rX8lKIwYVf6_Kn0KXAmT_T_TQrIxlm70jYdyWfFN--6B8fz6mMCszgkBPxs5yMFoKXb-M07kUI99Lnc1OrAupLwWrf2R_bvxzUFje7ip-bUh04xwmEiYXgpSeMn_9keSl4_mfCfFW8q8V-qAcBdiwuRSkbORB_jUxD-QmzXloyInju0SYT2iCS-H20_4Z0Cy6S2KNLJ3QLoNn76D5P8hREBNDMI-LnVxlEeUTfSuRetV_EgxjNPqQzlOwG5bwFbc9xn_gdIh3N_IiXH0HCy4Imf5adjrDDfsHndVsPxcN-2ctm3mjVtW4lJTkazPrUyZqL43kpSSbWYZzgQ90-AfshGr5QjenWuw-at9rx0TkLLylOsDf-Xs5SFDwF5q3Z30AbMb-7n6w4Yg2T9fZEqWNCSgDmrackm2jPsvLY5JsfLqAbwTorxqLx1OjD1S2z0p9d_spf0sQVHVh6rVVjRcOPmHoiI5M4p8QL3ZM9flEUhE02LIZuPzfGQsPEcUWfZ3WSpTeKuSDM23rwN_sBh3kIib8_2Ju85_OgGDw1_wnf03xApJSF4BPwFtEkj9MyZoixcLkGh5Edz_tXMEn2F8gvI4v-mP80PEKcQhkzjwed8KAsBbRTfxHe96HigM3dGur6u2CPQfsIqcRf9R3GeNDhZXhcy4dnYjb11zpOSFjy4QLEHrcck66l7sXt344HwbstDQZ1XQD7sSwb_7Nr6Ht0okW4UOs1NHw6q48O4uNujGpd7-A0ONDHatlUfc3dZvVjg-WSbTZhODwUYCRbmr76qKJX2RUsrQZpze71BA7q2k2KYbd9fO-qHOyO9F407p27JgFJa1gXHAKS7qUi2e7g7BdVHB-PeHrcxXJ8MBTHDrXGnc2uuYNS1FtPzpeH7gTpFJSM5d5ySpOpi0HqfRb941xkkvc96wv-3gkTgFP2rHD92MGTJXOnphfNJw1dheeOHF6oOveynQNuH7okRJgfHgk7XbKpLoV_RPMaXX5RhXlelF9U8UUafxPlpdD86ActSOcCT4-7XtRxdJa_Rs3CP5uZHHixkhTiWTUvD_72MocjKcNzo_AXqvnxCUoUxoXw9IvwZGFPQj7uZO1SlJ39fViZP9mvfG7Z_vikJA-5t2MVedlhksWchDFyVn9052WGSehtF0RkcrWgwBlFy2UtCxeKQdvlgSGvvWwQ4Yx6vUzSrkhALNCAfwKBQ4j3O_qH7-kcCa3d8jAffAOV4wcBYqP_Dtfj0E9pV0hspB1uI4U0cnZ2RqDZA7IKGSGQPMjSx852CTrS_QmncDPINZ5cnj3jF5TnNIczcREmWRwllBB6trogKc5pkWHMYgZlQVOIeBanJC2zRBRheiYvCCYUxxSHSUgjep6KtMAMWMQgi3iSBBEWa5D1ufPsc6Wrs_5S3kVCcRid1VCI2vSXkglpxE_UvwwICeLLM33RX-crusoEEa6lsWaPYqWtxcWiF224zCeb91_tOOt0ffH-64U9mf8FAAD__-6F_b8">