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

    <tr>
        <th>Summary</th>
        <td>
            Assertion failure and invalid Wunitialized error after
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          ilya-biryukov
      </td>
    </tr>
</table>

<pre>
    After https://github.com/llvm/llvm-project/commit/38b3d87bd384a469a6618ec6a971352cb4f813ba we started seeing invalid  `Wunitialized` errors in some rare cases involving modules with lambdas and an assertion failures. 

See https://gcc.godbolt.org/z/GzP568fxd for the code causing this (it's a result of `-frewrite-imports`, so slightly unreadable, sorry about that).

<details>
<summary>(Click to expand) Assertion `isa<LabelDecl>(D) && "declaration not instantiated in this scope"' failed. )</summary>


```shell
clang-20: /usr/local/google/home/ibiryukov/code/llvm-project/clang/lib/Sema/SemaTemplateInstantiate.cpp:4646: llvm::PointerUnion<Decl *, LocalInstantiationScope::DeclArgumentPack *> *clang::LocalInstantiationScope::findInstantiationOf(const Decl *): Assertion `isa<LabelDecl>(D) && "declaration not instantiated in this
scope"' 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: /usr/local/google/home/ibiryukov/code/llvm-project/build/bin/clang-20 -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -dumpdir a- -disable-free -clear-ast-before-backend -main-file-name all.cc -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -f
no-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fdebug-compilation-dir=/usr/local/google/home/ibiryukov/repro/uninit/foobarbaz -fcoverage-compilation-dir=/usr/local/google/home/ibiryukov/repro/uninit/foobarbaz -resource-dir /usr/local/google/home/ibiry
ukov/code/llvm-project/build/lib/clang/20 -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14 -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/x86_64-linux-gnu/c++/14 -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/backward -internal-isystem
/usr/local/google/home/ibiryukov/code/llvm-project/build/lib/clang/20/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem
/usr/include -fdeprecated-macro -ferror-limit 19 -fgnuc-version=4.2.1 -fmodules -fimplicit-module-maps -fmodules-cache-path=/usr/local/google/home/ibiryukov/.cache/clang/ModuleCache -fmodules-validate-system-headers -fskip-odr-check-in-gmf -fcxx-exceptions -fexceptions -fcolor-diagnostics -faddrsig -D__GCC_HAVE_DWARF2_
CFI_ASM=1 -o /tmp/all-46cd28.o -x c++ all.cc
1.      <eof> parser at end of file
2. /usr/local/google/home/ibiryukov/repro/uninit/foobarbaz/bbb/public/sql_transform_builder.h:18:8: instantiating function definition 'www::SqlTransformBuilder::DoTransform<int>'
3. /usr/local/google/home/ibiryukov/repro/uninit/foobarbaz/bbb/public/sql_transform_builder.h:11:13: instantiating function definition 'www::DecodeHelper2<int, int>'
4. /usr/local/google/home/ibiryukov/repro/uninit/foobarbaz/bitset/set_bits2.h:13:6: instantiating function definition 'aaa::bitset::ForEachSetBit2<(lambda at /usr/local/google/home/ibiryukov/repro/uninit/foobarbaz/bbb/public/sql_transform_builder.h:12:31)>'
 #0 0x0000556d9f07a4c8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /usr/local/google/home/ibiryukov/code/llvm-project/llvm/lib/Support/Unix/Signals.inc:800:13
 #1 0x0000556d9f07807e llvm::sys::RunSignalHandlers() /usr/local/google/home/ibiryukov/code/llvm-project/llvm/lib/Support/Signals.cpp:106:18
 #2 0x0000556d9f07ab58 SignalHandler(int) /usr/local/google/home/ibiryukov/code/llvm-project/llvm/lib/Support/Unix/Signals.inc:417:1
 #3 0x00007f5fb1029590 (/lib/x86_64-linux-gnu/libc.so.6+0x3f590)
 #4 0x00007f5fb10783ac __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #5 0x00007f5fb10294f2 raise ./signal/../sysdeps/posix/raise.c:27:6
 #6 0x00007f5fb10124ed abort ./stdlib/abort.c:81:7
 #7 0x00007f5fb1012415 _nl_load_domain ./intl/loadmsgcat.c:1177:9
 #8 0x00007f5fb1022012 (/lib/x86_64-linux-gnu/libc.so.6+0x38012)
 #9 0x0000556da1f9e6cf dyn_cast<clang::TagDecl, const clang::Decl> /usr/local/google/home/ibiryukov/code/llvm-project/llvm/include/llvm/Support/Casting.h:662:3
#10 0x0000556da1f9e6cf clang::LocalInstantiationScope::findInstantiationOf(clang::Decl const*) /usr/local/google/home/ibiryukov/code/llvm-project/clang/lib/Sema/SemaTemplateInstantiate.cpp:4610:32
#11 0x0000556da2031dce clang::Sema::FindInstantiatedDecl(clang::SourceLocation, clang::NamedDecl*, clang::MultiLevelTemplateArgumentList const&, bool) /usr/local/google/home/ibiryukov/code/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:6216:16
#12 0x0000556da1ffb1a1 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformDeclRefExpr(clang::DeclRefExpr*) /usr/local/google/home/ibiryukov/code/llvm-project/clang/lib/Sema/TreeTransform.h:0:44
#13 0x0000556da1ff0d22 isInvalid /usr/local/google/home/ibiryukov/code/llvm-project/clang/include/clang/Sema/Ownership.h:199:41
#14 0x0000556da1ff0d22 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformBinaryOperator(clang::BinaryOperator*) /usr/local/google/home/ibiryukov/code/llvm-project/clang/lib/Sema/TreeTransform.h:13316:11
#15 0x0000556da1ff1069 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCompoundAssignOperator(clang::CompoundAssignOperator*) /usr/local/google/home/ibiryukov/code/llvm-project/clang/lib/Sema/TreeTransform.h:13400:23
#16 0x0000556da1f9767c clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformStmt(clang::Stmt*, clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::StmtDiscardKind) /usr/local/google/home/ibiryukov/code/llvm-project/clang/lib/Sema/TreeTransform.h:4263:15
#17 0x0000556da1ff3566 isInvalid /usr/local/google/home/ibiryukov/code/llvm-project/clang/include/clang/Sema/Ownership.h:199:41
#18 0x0000556da1ff3566 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCompoundStmt(clang::CompoundStmt*, bool) /usr/local/google/home/ibiryukov/code/llvm-project/clang/lib/Sema/TreeTransform.h:8031:16

``` 
</details>

@dmpolukhin @ChuanqiXu9  any ideas on what might be going wrong here?
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzMWVtz27aX_zTwCwYaEpQo6sEPjBy1nU23mTrd7pvmEDikUIMAC4C-5NPvAKRiWXa7SRsnf48sirgc_M4F5wKA96oziJdk9YZwLvvB6vHmoAzhnKyuLmAMB-sulX4A1ij3MN7Y24vGyofLug3o6CGEwZOiJnxH-K5T4TA2C2F7wnda3x4fbHD2DxSB8J2wfa_ij6JqClmtG1lUS1iWGyjLvEJRwmadFysummVb5UUD9A6pD-ACSuoRlemoMreglaSUlNnvo1FBgVYfUZIyo-icdZ4qQ73tkTpwSAV4jE23Vt_G-b2Vo0ZP71Q4UA19I8FTMJKCoeA9uqCsoS0oPTr0C0qymmT1NeI5u0IsOisbq8PCuo7w3UfCdz98fL8qq_Ze0tY6Gg5IhZURxOjj4uGgPCW8ikJYewrUoR91oLaN7LDW4Z1TAZnqB-uCJ2VG-JZ6S71W3SHoBzoahyCh0Tj1OPdAobFjoOEAgfDNYgJMiq3EAEp7Uryd3v3Y9-Ae4juvtlqJGxosxfsBjCR8Q-tP3JMyUx5IsX0HDeorFHqadBWHEV4SXtJoMCg0OEhTjA1UGR_ABAVRXcpM3HphB4wGxddJqigXlPANKbaE704gTaizOvKcPv6AWpOsFhpMx3hGipoSvhu9i4ZlBeioBWu7KIrdwfbxoY52mqxN4gs2GMnFZtUQvrvGHubHB-wHDQF_euRiIYaBFPWyXJZx9WTURU2K-r1VJqD7zShrSLGNEqKE11El7yKyRxrKmuskgTQvDqxdN_ZownsQN2lS8TY-Jlxp1N-SaJWRT_p-aQmvhDU-0Eccm4j3VRRKsvoFlZKsfv_ubX39lvqx6VWgQJuxow6jHUcz-2Jfobwf0RO-S5tTGaFHidOOcuAPtAFxExyItA8Gh4OzAr2PjsKObmpO29p7KyYO3GioF04NIeK9DlEBcuyjiklWZwua_t472znoKcx68l_J8JpRaRmf0b_ujlZNmRA5ZcGpQSO9r8p9uWSjuTH2zjCtzHjPOjNShr0KzDZ_UBYRS-UoMMqk8tEVRMeBlAmN4Bj4wBpsrUMWZYRGUtaDMqxVGpmBHilovRCCst5h5Cfqm_VWoqaDEpQNSjCNt6gpn16UZ4NCyvrWQY9smKyfFFegNWVtD-HA0DljKWvbgQlromYCKa6soawlWW0sc3Y0UpmOxeGU9clk3SiCdQy0Sm6ataO5U0ayENnypLjilAVwHQYmhjHKh5VLysJoMDV0aNBFzBKbsevQxS4VN9JVJxvK2tTOhO0HpSdGpYrIv0ihybriDKNMil-ttQ24Bj5S1gp7iw46fM1FHE5GHel-pi2SrP4sc5z84NErRoNMyjWgmfIPPmB_smAa2wlB-G421U8mSvguXxK-Wyyef827N65D-Jv02eXL113phVnfbvHTlaKsQdzcgZPPF40B7-u5lnNdPmL6W3bndT9n6D-UzAtjn6-G9_GHeL7qXyv172f_v0ucSv_T4Fbi4FDEiMF6EC46tZRYMq1iZMs3lLWdGQW7RedTAnC1XPBFHj3hnFyyVvWDVkIFNjWxHgb_OIAJEAdkA4TDl7qJRZp6ouafE8ltbD1ZICXJEJBNnLIDgkQXIfgbNTArHRMHFDdMGdb1bfRj9_cM7wUO0YHFgU9ehNXWMamgM9YHJWIbSOm86ii72u9_2G73P9b_83Z_9Xv9647vSVZvdz_t6-ufSXGVU2ajQkI_EL4DrdmyFJJXC0vZPZ03yxyVSFbncyQmxRZtG_OjAZxHRyHQGM5sS2MsI1nNF18Wmf_ax8Zd1ETjHsZGq2jf_k-9Dw6Mb63r92mLoVscSFHnFSnq-H-SIMXsvh2NSLmTxDbST5kXX9_d3U2p2_Wf-sOR4JuJ3pwW2k_tpNgqE1J2tiZZXXwfBvP4VXw5h1cYHdSPqAd0fGaFb-kpR8uvypEKHmOjx7CPL3zCH6GXnw0fACb4M7n0e2fdWxCHawxvVOCpXKmmcjGa4fdQCidFXeQpt59lSQkvMprdZ1mWrVal3LTZGpaiOqlU_IOfSxanTEg574cpa64eBzm421sfHEKfioFJY6k0-Nex6ZjdT-XWOMSCgPDdb0bdxwbVGdB-oYyIeyrLJu1NrOVnrFXZGl9i7dfRTHR-BCM1Ok949broj7Cn-jDPyskrTLD5uUaaVUWfACS8-j4CXubriHQGWsxA1-2qbfKMb1abjCbZzdReCNtaNWLh7aIk_E12X7SrTRYtciK4fEpwXRUg6H4_hINDkPsbpfU-BkaMddVUZsbswAwhsn46bJHQLklRr8uZ-Ooc7bLl1IHymIj4xOgx4fAPXuIQy8fB-iSINDKR5evkHSaq5VOqOV-ipNDEqjXRCXISRWpK06voHI-7b_1ser6ie6P32oLcSxsLLzrlhonH2Nz7TsBEK8_XEcxRftUZizzL-RcqpMpy_qiQzYkpQt5usBQtlQ9mL8AHUmxPDh0-QJfOBfiWTocJJ33zgcFXtNbHlG5ueDTcLfjorJPPK8vk9FKeVuTZS9z8y3OTp0xOrE8nKN_tsCmPTrDgM9OnThB4VuRS4CnTiegUsZ5wiHJS5ymL16mIfDeX_EnVj53_Df1xTn3W9fOog3qHt6iPuI-HWO9UtJRJaClwNNbq7yC8iHsWYMnz5I7LWYD8qdW0TQ75KXMfHOJp-kV4Bcaah96Onhro0Q8pXm7m4c8Wty4G5JnWTCfi-RXbt_eDe25lnzpe1cye8JV2Uzb51EksxZlYMsk5Vf6n-Xj9K6I6KYvnlhnhL3cGnT-oYcpvNpsUoWZ8y5fwvbba3igD7uGXAV3qf6K5875vrLy8KCa7PgpodSagPCs3ry6gre0HOxpZp6ujlwX1V2O-ucCWKZ3kx_BRnoWPdbkWry6w69CHMyecWs5d7NdcPK5wpbwAJ_9LTXc7307sS17G6itfzVJfn5lpsSrL_yQ_U72E71tto-fW8bSn_hYh9bkOq6zIP4XQkys5Ol0kEr57ereY1WSZPV4fU7LMtocRzJ_qf8cNpWAeqJIInlpD7w4QaK-6Q6AN0s7GuvzOWdPRAzokxe5CXhZyU2zgAi_zdVGu-LrYVBeHy3XRrDiuxVIUG8zX6zbL27zg-RJAwGbVXKhLnvFVludZXi6LvFpAiVW12rSAUMhy05Jlhj0ovYhiWVjXXaRbpsuc8-WmuNDQoPbzbfhRJ_OB2nwl7i6TRJux82SZaeWDfyQWVNB4WZ9fIs8XWJO9n15ZT_fVFNqA7mJ0-vKfX5LNHNxe8v8LAAD__zitUds">