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

    <tr>
        <th>Summary</th>
        <td>
            [Clang][ASTImporter] llvm::Expected<clang::Decl*> clang::ASTImporter::Import(clang::Decl*): Assertion `ImportedDecls.count(FromD) != 0 && "Missing call to MapImported?"' failed.
        </td>
    </tr>

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

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

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

<pre>
    When running the following on trunk (3d1172813fc640514c6cb421394c34f4b42cb634)

test.sh

```sh
clang++-18 -cc1 -emit-pch -o pythonwriteimports.cpp.oclango pythonwriteimports.cpp
clang++-18 -cc1 -emit-pch -o qvariant.cpp.oclango qvariant.cpp
clang++-18 -cc1 -x c++ -ast-merge pythonwriteimports.cpp.oclango -x c++ -ast-merge qvariant.cpp.oclango /dev/null -ast-dump-all=json
```

pythonwriteimports.cpp

```cpp
template <typename> bool qIsRelocatable = qIsRelocatable<int>;
```

qvariant.cpp

```cpp
template <typename> bool qIsRelocatable = qIsRelocatable<int>;
```

The third command crashes with this backtrace

```console
clang++-18: /data/llvm-project/clang/lib/AST/ASTImporter.cpp:9405: llvm::Expected<clang::Decl*> clang::ASTImporter::Import(clang::Decl*): Assertion `ImportedDecls.count(FromD) != 0 && "Missing call to MapImported?"' 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: clang++-18 -cc1 -x c++ -ast-merge pythonwriteimports.cpp.oclango -x c++ -ast-merge qvariant.cpp.oclango /dev/null -ast-dump-all=json
 #0 0x000055555adf59e8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /data/llvm-project/llvm/lib/Support/Unix/Signals.inc:727:0
 #1 0x000055555adf3524 llvm::sys::RunSignalHandlers() /data/llvm-project/llvm/lib/Support/Signals.cpp:105:0
 #2 0x000055555adf413e SignalHandler(int) /data/llvm-project/llvm/lib/Support/Unix/Signals.inc:403:0
 #3 0x00007ffff7bc6980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
 #4 0x00007ffff67f4e87 raise /build/glibc-CVJwZb/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
 #5 0x00007ffff67f67f1 abort /build/glibc-CVJwZb/glibc-2.27/stdlib/abort.c:81:0
 #6 0x00007ffff67e63fa __assert_fail_base /build/glibc-CVJwZb/glibc-2.27/assert/assert.c:89:0
 #7 0x00007ffff67e6472 (/lib/x86_64-linux-gnu/libc.so.6+0x30472)
 #8 0x000055555dadac8e llvm::SmallVectorTemplateCommon<clang::Decl*, void>::back() const /data/llvm-project/llvm/include/llvm/ADT/SmallVector.h:316:0
 #9 0x000055555dadac8e clang::ASTImporter::ImportPathTy::hasCycleAtBack() const /data/llvm-project/clang/include/clang/AST/ASTImporter.h:165:0
#10 0x000055555dadac8e clang::ASTImporter::Import(clang::Decl*) /data/llvm-project/clang/lib/AST/ASTImporter.cpp:9299:0
#11 0x000055555ba24aae llvm::Expected<clang::Decl*>::operator bool() /data/llvm-project/llvm/include/llvm/Support/Error.h:565:0
#12 0x000055555ba24aae clang::ASTMergeAction::ExecuteAction() /data/llvm-project/clang/lib/Frontend/ASTMerge.cpp:70:0
#13 0x000055555bac0b49 clang::FrontendAction::Execute() /data/llvm-project/clang/lib/Frontend/FrontendAction.cpp:1069:0
#14 0x000055555ba4c470 llvm::Error::setChecked(bool) /data/llvm-project/llvm/include/llvm/Support/Error.h:307:0
#15 0x000055555ba4c470 llvm::Error::operator bool() /data/llvm-project/llvm/include/llvm/Support/Error.h:239:0
#16 0x000055555ba4c470 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) /data/llvm-project/clang/lib/Frontend/CompilerInstance.cpp:1057:0
#17 0x000055555bb515f3 std::__shared_ptr_access<clang::FrontendOptions, (__gnu_cxx::_Lock_policy)2, false, false>::_M_get() const /usr/include/c++/7/bits/shared_ptr_base.h:975:0
#18 0x000055555bb515f3 std::__shared_ptr_access<clang::FrontendOptions, (__gnu_cxx::_Lock_policy)2, false, false>::operator*() const /usr/include/c++/7/bits/shared_ptr_base.h:961:0
#19 0x000055555bb515f3 clang::CompilerInvocation::getFrontendOpts() /data/llvm-project/clang/include/clang/Frontend/CompilerInvocation.h:254:0
#20 0x000055555bb515f3 clang::CompilerInstance::getFrontendOpts() /data/llvm-project/clang/include/clang/Frontend/CompilerInstance.h:291:0
#21 0x000055555bb515f3 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) /data/llvm-project/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:273:0
#22 0x000055555956561e cc1_main(llvm::ArrayRef<char const*>, char const*, void*) /data/llvm-project/clang/tools/driver/cc1_main.cpp:294:0
#23 0x000055555955c8f8 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) /data/llvm-project/clang/tools/driver/driver.cpp:366:0
#24 0x000055555955fd64 clang_main(int, char**, llvm::ToolContext const&) /data/llvm-project/clang/tools/driver/driver.cpp:407:0
#25 0x0000555559571681 main /data/llvm-project/build/tools/clang/tools/driver/clang-driver.cpp:16:0
#26 0x00007ffff67d7c87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#27 0x000055555955bc2a _start (/data/llvm-project/build/bin/clang-18+0x4007c2a)
./test.sh: line 6: 123090 Aborted                 (core dumped) clang++-18 -cc1 -x c++ -ast-merge pythonwriteimports.cpp.oclango -x c++ -ast-merge qvariant.cpp.oclango /dev/null -ast-dump-all=json
```

Running either of the following commands on their own works fine. It's only when you try to merge them together that the crash occurs

```sh
clang++-18 -cc1 -x c++ -ast-merge pythonwriteimports.cpp.oclango /dev/null -ast-dump-all=json
clang++-18 -cc1 -x c++ -ast-merge qvariant.cpp.oclango /dev/null -ast-dump-all=json
```

CC @jcsxky and @balazske
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcWV9vpLoV_zTOizUjsPn7kIfJTEbd6q662qS3Ul-QMWbwxmCubZKZfvrKBhIgk81surddNYpGcMA-v_M7_2xDtOaHhrFrEN6AcHdFOlNJdf3Ei5ypw1Uui9P1PyrWQNU1DW8O0FQMllII-WTvZAON6poHCFCCC9-PUeLjkkaBF_oBjWgeIB-nAcVBGeQBonmEA4BS4O2At-l_DdNmraupCERe_z-KqSDNAaAbgG5WfgJXlPpwxWpuVi2t4ErC9mQq2TwpbhivW6mMXtO2XUs38K3HF879xyNRnDRmNuNU-J15jpD2Irgi2qxqpg7sPbDnB51FAdC-YI8A7ZtOiP7toqvbFREC4N03LZsFoVOWv0fKYtiz3LC6FcQwCPDWnFrWkJoBfAtzKQX845P-yoSkxJBc2Fd2CxHAW94YgG8BvvkOsNfc_k_h3FcMmoqrAlJZ16QpIFVEV0zDJ24q-0jDnNAHowhl5_HKRkvBzsUJwBvnRWIIQHshHutVq-Q3Rg1A--HVveA5QPvN3X3_-8l5iynHD96kgRfaaexggDcAb26PLaOGFQBv-ymcdMeoAGhj-ZlIJ_P1gv4OoOTMUJRaRRutmTJcNhBE3jC4sK_oNZVdY8fulax3AKUQIN8S70GAIoAiCBD6zLW2tYMSIaCR8DNpx0kA3gOEAIphSbhgxbqn7Mtvt5u7W6i7vOYGEph3B6iYHWLHV8a02uJEe4D2B26qLl9TWQ98vqaVa90xDdAeWmfyhoquYK6wOcdOnIm2sFWsVZIyrVkBtexUL7YjidaScmJYYasj1FTx1gyQ7wyhD9Amo0XmRN4aeOkXJQ-K1JCoQ1ezxljg8FcuHRAg7EHv6HmeF9o_UpRhypJJuOmT7i--KN4YZ_l9T1_y8pIiT5nURjFSu1DYQpt7LkLeiP7ReS7477q2D8v93xt-tAJ-aIjQa95QgDcxigHeeC-Q_QVkHKLgHOSvXdPP9BfSFIIpDVDyEVQjnD4lfZeREzhoASfwMYMzxQAlP5OQwMNzBHhAEJdlWcY5jdLEg1mmmDZSsUwZ6CwfZj8mURYFK8Gb7rg6NF3_oDWVYqRYa7n2ALrxjj5KE--5n1s1wVRNFJcBS2KoCNfM2pV3XBQ2SQXP6Wr7-1-f_pk_36I1igHaa2cHQPv12t6ddMFam6xdb6Y-6UeHpunsrZt6bS0O_bnB4QJJFJc-JLl0ll6GxBQ9G26UU5IslERzJSzCJYFZRlyFzGwRy3Jyue39uOeLXmU6VxkvVQYxusB31Hotcl7DXhCjmdeSaXgWpCA0YZNsuauJEL8zaqS6HzruVta1bM43GLSFj5IXrrFaua2nQ1rZTmjejfChJL8INjvb-iYw1hXAG-xHc2rSc2a83-u-EFPdn3pJRfT2RAXbmJuLUY9t-gX2KHndsi1uP5pUB1urvI_hfqtH_8cLCpSmc4CzapoTFBDCfmC90d_LlilipHKrswvL7KtIeCl7t0oNcRAu-UTn4M75_Gw744baVcxoA6OdGUXvoJvzuFeyMawpejLdzAOTsTcHhufAqJcH6RTYONMZYB-GNJ_zuUFFCxcHc2gBDWJv6mLL9tA7mdlWjD6wAqCk9-VPciT24jmo8GJQf1pwIbwgKjqHaeLDraxbLpj61GhDGsrOh9fbTreLo4_4ean3ZSmyIDWeGZCHflhiqE3Ro8kyXRHFiqw1KiPULnznaT2q_Ftr4Wpb7QFKsuzQdBk9HodZfpP0IWul4PQEUIrsWyURmr1cjGUh-5wdmFlW2k6reUXtl7UA7W2fzLmxS4IJUttlnb_SeFEMkl_L3DFQXan-WTZH_tzm9JzNZ2P00W6Gn2vNgZmJve-uhd9ufGfjctTV51UYzDAj72LM07z6cxEPmeTwpnOOkf8O3iHjz1A9y_5XZv1QCx9R37uqt39T51AMUIznRsw6ZRpGYeQzSKmf1YQ3s_3bRily-spKmx0VUX3UDu0dbeFcNq4AL7TFSClsbBeKP9qd0H5EMMJOF7GC57BDmpQJHI3f-j0bydkF7Ke6FWdtcHvSlyF2jq0l92jG9y4rzK-M6S8GU3AUzU0JFqaURRT0YTT6wG0Le4YdoZv_CtBg0YtROAca-1HiQwvxbU3jlmfU9La_7YPVTL-_4Gmx0ypimsQwy-zOJtOGKJONWC7ZaFHdjTvM_tI9dPO4TRcOFhEXL9yUU0Rgr3jYfH2fgty6crDTT9w2LPC8mCLyvBGzYMbDcLyBgjcMWhKgj7CXenCTuzMyuPyz9UQq5g6b7Jos_aXPk84esX4dPi4wbiqmoCwXnxmGg1ftvjdUjCsonxr4JNWDhiVv2Bp-MgDF9rk4waeKNfAkO2jUCRoJe9SmYjU08sCcClMRMznyk5R2Sv_4N4iPkHopU5cr_PkO2W4hCLxvVB8fTu6sEwReTgT5l35gV8U1LlKckit27ccewjjyk_Cqug4JSlGaeyUpAkriMIo9QoOgLBijCfW9K36NPLs9811EB-G6jGPkRygt_CII_IKBwGM14WJts2gt1eHKndVex6HvB1eC5Exo96UKoYEdBMLdlbp2WZd3Bw0CT3Bt9MsMhhvhPm9t3YhwB8Kb6YY63P1fnpxfdUpcf_xo3DH-7wAAAP__CxGcpw">