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

    <tr>
        <th>Summary</th>
        <td>
            Clang assertion failure: "Unable to find unexpanded parameter packs"
        </td>
    </tr>

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

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

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

<pre>
    We hit this in some new code, so it may not be a Clang regression:

Preprocessed source: [a.ii.gz](https://github.com/user-attachments/files/17378363/a.ii.gz)


```
$ build/bin/clang -cc1 -triple x86_64-unknown-linux-gnu -fsyntax-only -std=c++20 /tmp/a.ii -w
clang: /work/llvm-project/clang/lib/Sema/SemaTemplateVariadic.cpp:456: bool clang::Sema::DiagnoseUnexpandedParameterPack(Expr *, UnexpandedParameterPackContext): Assertion `(!Unexpanded.empty() || Visitor.containsFunctionParmPackExpr()) && "Unable to find unexpanded parameter packs"' 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: build/bin/clang -cc1 -triple x86_64-unknown-linux-gnu -fsyntax-only -std=c++20 /tmp/a.ii -w
1.      <eof> parser at end of file
2.      ../../remoting/host/linux/gvariant_ref.h:709:22: instantiating function definition 'remoting::gvariant::GVariantRef<Type<20UL - 1>{{}, {"(ii{s((xt)(xt))}uv)"}}>::Destructure<int &, int &, std::tuple<std::string &, std::tuple<std::tuple<long &, unsigned long &> &&, std::tuple<long &, unsigned long &> &&> &&>, unsigned int &, std::tuple<remoting::gvariant::GVariantRef<> &>>'
 #0 0x000055cb15dfdc88 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (build/bin/clang+0x3b7fc88)
 #1 0x000055cb15dfb83e llvm::sys::RunSignalHandlers() (build/bin/clang+0x3b7d83e)
 #2 0x000055cb15dfe318 SignalHandler(int) Signals.cpp:0:0
 #3 0x00007f8570e591a0 (/lib/x86_64-linux-gnu/libc.so.6+0x3d1a0)
 #4 0x00007f8570ea70ec __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #5 0x00007f8570e59102 gsignal ./signal/../sysdeps/posix/raise.c:27:6
 #6 0x00007f8570e424f2 abort ./stdlib/abort.c:81:7
 #7 0x00007f8570e42415 _nl_load_domain ./intl/loadmsgcat.c:1177:9
 #8 0x00007f8570e51d32 (/lib/x86_64-linux-gnu/libc.so.6+0x35d32)
 #9 0x000055cb18e057ea (build/bin/clang+0x6b877ea)
#10 0x000055cb18778d7c clang::Sema::ActOnFinishFullExpr(clang::Expr*, clang::SourceLocation, bool, bool, bool) (build/bin/clang+0x64fad7c)
#11 0x000055cb1862032a clang::Sema::ActOnCondition(clang::Scope*, clang::SourceLocation, clang::Expr*, clang::Sema::ConditionKind, bool) (build/bin/clang+0x63a232a)
#12 0x000055cb18d93221 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCondition(clang::SourceLocation, clang::VarDecl*, clang::Expr*, clang::Sema::ConditionKind) SemaTemplateInstantiate.cpp:0:0
#13 0x000055cb18d90126 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformIfStmt(clang::IfStmt*) SemaTemplateInstantiate.cpp:0:0
#14 0x000055cb18d721e2 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCompoundStmt(clang::CompoundStmt*, bool) SemaTemplateInstantiate.cpp:0:0
#15 0x000055cb18d78b30 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformLambdaExpr(clang::LambdaExpr*) SemaTemplateInstantiate.cpp:0:0
#16 0x000055cb18d685e8 (anonymous namespace)::TemplateInstantiator::TransformLambdaExpr(clang::LambdaExpr*) SemaTemplateInstantiate.cpp:0:0
#17 0x000055cb18d6b0f5 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCallExpr(clang::CallExpr*) SemaTemplateInstantiate.cpp:0:0
#18 0x000055cb18d6dcd5 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCXXFoldExpr(clang::CXXFoldExpr*) SemaTemplateInstantiate.cpp:0:0
#19 0x000055cb18cf7ec5 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformStmt(clang::Stmt*, clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::StmtDiscardKind) SemaTemplateInstantiate.cpp:0:0
#20 0x000055cb18d721e2 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCompoundStmt(clang::CompoundStmt*, bool) SemaTemplateInstantiate.cpp:0:0
#21 0x000055cb18d78b30 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformLambdaExpr(clang::LambdaExpr*) SemaTemplateInstantiate.cpp:0:0
#22 0x000055cb18d685e8 (anonymous namespace)::TemplateInstantiator::TransformLambdaExpr(clang::LambdaExpr*) SemaTemplateInstantiate.cpp:0:0
#23 0x000055cb18d6b0f5 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCallExpr(clang::CallExpr*) SemaTemplateInstantiate.cpp:0:0
#24 0x000055cb18cf7ec5 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformStmt(clang::Stmt*, clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::StmtDiscardKind) SemaTemplateInstantiate.cpp:0:0
#25 0x000055cb18d721e2 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCompoundStmt(clang::CompoundStmt*, bool) SemaTemplateInstantiate.cpp:0:0
#26 0x000055cb18cf7e5a clang::Sema::SubstStmt(clang::Stmt*, clang::MultiLevelTemplateArgumentList const&) (build/bin/clang+0x6a79e5a)
#27 0x000055cb18dc1022 clang::Sema::InstantiateFunctionDefinition(clang::SourceLocation, clang::FunctionDecl*, bool, bool, bool) (build/bin/clang+0x6b43022)
#28 0x000055cb18dc40ee clang::Sema::PerformPendingInstantiations(bool) (build/bin/clang+0x6b460ee)
#29 0x000055cb182b992d clang::Sema::ActOnEndOfTranslationUnitFragment(clang::Sema::TUFragmentKind) (build/bin/clang+0x603b92d)
#30 0x000055cb182ba0ac clang::Sema::ActOnEndOfTranslationUnit() (build/bin/clang+0x603c0ac)
#31 0x000055cb18171bee clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (build/bin/clang+0x5ef3bee)
#32 0x000055cb1816dfee clang::ParseAST(clang::Sema&, bool, bool) (build/bin/clang+0x5eeffee)
#33 0x000055cb1685d17f clang::FrontendAction::Execute() (build/bin/clang+0x45df17f)
#34 0x000055cb167ceacd clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (build/bin/clang+0x4550acd)
#35 0x000055cb1693c747 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (build/bin/clang+0x46be747)
#36 0x000055cb1363f56e cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (build/bin/clang+0x13c156e)
#37 0x000055cb1363bb8e ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#38 0x000055cb1363abad clang_main(int, char**, llvm::ToolContext const&) (build/bin/clang+0x13bcbad)
#39 0x000055cb1364ace7 main (build/bin/clang+0x13ccce7)
#40 0x00007f8570e43b8a __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#41 0x00007f8570e43c45 call_init ./csu/../csu/libc-start.c:128:20
#42 0x00007f8570e43c45 __libc_start_main ./csu/../csu/libc-start.c:347:5
#43 0x000055cb13639761 _start (build/bin/clang+0x13bb761)
Aborted
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWl9v2zgS_zTMC2FDIvXPD3lwnHivuCw22KS9fTMocmTzIpE6kkqT_fQHUvIfOa6TFGiBK65IbZkmZ34z85shNTKzVq4VwCVKr1B6fcE6t9Hm8u9GC2guSi1eLv8FeCMddhtpsVTY6gawgq-YawGILLDVWDrcsBestMMlYIYXNVNrbGBtwFqpFaJzFF2jaHi9M9AazcFaENjqznBAdI5ResWmUk7Xf6P0GpFi41xr_VKyRGS5lm7TlVOuG0SWnQUzYc4xvmlAOYvIspI1-Pc4p3lBM4rIciuNzA61D69ZNPz1H0mCy07WApFlKRUiSx5smHAe44kzsq0BPxfZKksmnXpU-qua1FJ1z5O16vCksi_KseeJVvULnlgnEL3miFwhckUijMjSNe0ACE--9iqDgmA3WX7V5hGRZV0_NZPW6H8Dd1sIfliWiCzvoWHD2wM0bc0cfGFGMiH5lLctovMkzby8Uusab6UjOg8Lw9W1ZGulLXxW8NwyJUDcMcMacGDuGH9EpLh5bg1GZO4D-41ZC60cPDvvVTrHc2vBOKkV9r4kBSLxft0Umta9hNEZRvkC5Qv8RVrptJlyrRyTyi47xf36O2YaL94j6FeERSRDJMOIkM-KlTVgp3EllcDdTglut-hwy_ijRYQgkuOKyRrEdGDc7c38_gbbrmykwwyXnadnq43zAs8QzUfkdWCktV0gG2ZKYKl43QnAbgOYG2Y3uGT80RnGQ360J9hOFmEls1ZzyRwIbDqFLTeydQPke8f4IxZd0-6yJ5riO6PXhjWYmXXXM98H_OcSN57i8A_RBegK0RsfAQsGM4dBCawr7JOxn0yGydMpIsvwYqDRTgZib7R1gd-qe_aef_J8Vm5loJpuEJ3nkecYId5Iqaxjyknm1-JqYA0WUEklewKSfCc70H0rr__025f-059QIbp4eGkB0QWJPt_iCY4RvUH5Vfi79tHxV55HhZQov7KBkEVP-t37DOXX3VO4JH5Zfu2l9IkG1pmOu854JVK5nsgLfHAZnO0nu66t_bTdgHXG2_jmvO1ArfezOxUKusC7QXozZNFJYe9de3g1mnvOoveHYyvfO_AGkbwnD0aERjh6jqIoSlNexqmoBC8KHNKy99WL7S_ujFQuJM1Dn3nFfpJhX1faOgOs2cehLy_FieRB5Cp6pmVe8aLYbR4eS3yEpSwonMLyZ6fu5Vqx-h9MiRqM3ZbAs-pEQWGkjhypAxoXeCTYE7S3pB-2w04Qhf87QXQQlFdFmkeQzmLmk7vY7S1DgdgVhv4LPrV6mvXwRMyiEbhkLJPlEXC8WrVuY4CJ1aOs65Vs2hp8mWIhQX32q9bViCwPp02537sSn-_ZXn76CnNE8NoGM4Ok_nJbVeyLFdD6mtxqK301MUxaCLJJjuj8QHQ2Fp2QpCKYlX43CKKc6L0ShoKEIvbo9hLyVxLiFK9Uvao1EyuhGyZ7c6UK5vrhxq4568XFce4hHXizOLI2FpR8MEKpoGQUodkhfQqI0hzYOQpmZZHnwPbHJULjUfYVeV6InJ8-W8y5-0MtpZJ2s-zqetjGD6b2I-FkcSggbIi3mgeK-C_98eX1-9nkyZKKiZyPkI9ytchIRAk7g3yhlZA9hEPQ91y38B7Ubxu607dT9U-pxHstpIxQMo7NqDwUYkYJiQ81PhiAB8OUrbRpfI0lBVNavTS6s1ixBmwbCuVsmD4cKj_tNlptdhvaTs63_HTOIV-YuQZev_bJBz01w4eH3z1OeF31vH_okX-imGQ_3D-fqnvXuLFztmPzD5uQjE3ISQzkJ4S4aXWnxGtDxt_MD7n7IbPSI7OKkkY_3Kxb1pSCva5Lh-Mfj1A2NiUrUijwd-H9CWDzI7BlVKU_nk7s1G6wH_24GcWRGYKLn2DGX38tdS1OWHL4xceNGe_SvMqB_3hjXqf2QUr_IOVew7W0nBnxPeWcRL9kLSTxL1MLCfkfqoWE_hK1kCT_Lx_vc9TxmeMXKR_Zq_in37jNue9K694bud-72slbeIJ6i2Q-dBxvpXWYa2VdaKWcv2th-QzS0V0LOTqD8Dgi5DTgA9u3TeLrXbfvA7cf-8W7e5DvuccsExoRMrLl6CDCkwjgtC13YDwf7kAJqdZ7y6RW1it9l_4sAhjpH58dSDmbEXHmHvdGiT-qwM06aP6spFsatvZhPfLnbuHD5-2MbdadwxjRckbEIcZx_64gJYvYuQ7CKYxvd8-yiPKIjRoA42ZdEedxOQ7OXWhaH1w_6DYwvufJoTv-aNl_OrhzBtHFwbCf-JvRXRt6mDdDa_Gkbb9r0dXwqWm1cfeOOXg7eVKoaDkO-LgjWMSZqE7YNL9_OBHNHtwHCJ8CVNWR_tGmmRWpiPNqlGpGKwdKzEPCbW_ygXfe4LeCmKSiivNqpHC0vWU5B8ZHDPdlVNZg-owKzxH3KgcUI18cIXwzCkmaRoyPKT3aSrIZ5XmSj9saQf0e29OuMB1vASPs_fZ_DkxWQp7kIzCjDYBmtEozwJzHq4b51Qdd8Lkx7KVvt_MNM9siPh86-uMxssBPWoq3McWUx2k2pkl-hKksC8Bbryzih0C-A2T3DavrL8CdNp-atj4JMNB3v8TLGJ5EjnYjYeQTmJN7JS2OYLGSDWTaOis003tXBMvn71N61j0lL9mYP7MxjoRxyHFoGZ_3M-cwin0SHbWhaVkwvFrVsuQr65hxK87qerXrRnPbve6XDx35U4v6h3AJonO6VxofK-VJisMSvzUf6-kvvfBJEN73v0mB6JzsQ5OQU0JHlpwy4qRwmuSIztO9bHoU9lmexbiX-kbkyjyLdw6fl9o4EEc_H7gQl1TM6IxdwGWck2I2yyOaXmwuIc1TTooqL8uIzsosm1VZmZSVSERapklyIS9JRJI4itOYpHmcTgsAKElWzqoqY4LnKImgYbKeegJOtVlfhOfOl3FMaEoualZCbcMPNwjZlpVqKG-IEJReX5jL8OS67NYWJVEtrbN7aU66Gi7732qw3WP8isk6PLacf_Sp-0Vn6svvf5Y-mPV0Sf4bAAD__3n6ngQ">