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

    <tr>
        <th>Summary</th>
        <td>
            HeaderSearch crashes with Microsoft search rules
        </td>
    </tr>

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

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

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

<pre>
    To reproduce:
tar zxvf ../repro.tar.gz
clang -cc1 -E -fms-compatibility -o - -x c -Ishared -Ishared/driver v.c

Started failing after:
https://reviews.llvm.org/D119721/
https://github.com/llvm/llvm-project/commit/17c9fcd6f6fc0926c1096242a2ddced9b523decd

In file included from v.c:1:
In file included from shared/version/v.h:1:
In file included from shared/diag/d.h:1:
shared/syntax/t.h:1:10: warning: #include resolved using non-portable Microsoft search rules as: shared/diag/mc.h [-Wmicrosoft-include]
#include "mc.h"
         ^
In file included from v.c:1:
In file included from shared/version/v.h:1:
In file included from shared/diag/d.h:1:
In file included from shared/syntax/t.h:1:
shared/diag/mc.h:1:9: warning: including diag/mc.h [-W#pragma-messages]
#pragma message "including diag/mc.h"
        ^
clang: ws/llvm-project/clang/include/clang/Lex/HeaderSearch.h:196: clang::detail::Qualified<IsConst, clang::DirectoryLookup>& clang::detail::SearchDirIteratorImpl<IsConst>::operator*() const [with bool IsConst = true; clang::detail::Qualified<IsConst, clang::DirectoryLookup> = const clang::DirectoryLookup]: Assertion `*this && "Invalid iterator."' failed.
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.      Program arguments: clang -cc1 -E -fms-compatibility -o - -x c -Ishared -Ishared/driver v.c
 #0 0x00007f60ea9ff261 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) ws/llvm-project/llvm/lib/Support/Unix/Signals.inc:565:22
 #1 0x00007f60ea9ff318 PrintStackTraceSignalHandler(void*) ws/llvm-project/llvm/lib/Support/Unix/Signals.inc:632:1
 #2 0x00007f60ea9fd2d4 llvm::sys::RunSignalHandlers() ws/llvm-project/llvm/lib/Support/Signals.cpp:94:20
 #3 0x00007f60ea9feca9 SignalHandler(int) ws/llvm-project/llvm/lib/Support/Unix/Signals.inc:407:1
 #4 0x00007f60e9280dd0 __restore_rt sigaction.c:0:0
 #5 0x00007f60e493370f raise (/lib64/libc.so.6+0x3770f)
 #6 0x00007f60e491db25 abort (/lib64/libc.so.6+0x21b25)
 #7 0x00007f60e491d9f9 _nl_load_domain.cold.0 loadmsgcat.c:0:0
 #8 0x00007f60e492bcc6 .annobin___GI___assert_fail.end assert.c:0:0
 #9 0x00007f60dd453fe1 clang::detail::SearchDirIteratorImpl<true>::operator*() const ws/llvm-project/clang/include/clang/Lex/HeaderSearch.h:196:5
#10 0x00007f60dd44ebd4 llvm::iterator_facade_base<clang::detail::SearchDirIteratorImpl<true>, std::forward_iterator_tag, clang::DirectoryLookup const, long, clang::DirectoryLookup const*, clang::DirectoryLookup const&>::operator->() const ws/llvm-project/llvm/include/llvm/ADT/iterator.h:206:59
#11 0x00007f60dd4409b6 clang::HeaderSearch::LookupFile(llvm::StringRef, clang::SourceLocation, bool, clang::detail::SearchDirIteratorImpl<true>, clang::detail::SearchDirIteratorImpl<true>*, llvm::ArrayRef<std::pair<clang::FileEntry const*, clang::DirectoryEntry const*> >, llvm::SmallVectorImpl<char>*, llvm::SmallVectorImpl<char>*, clang::Module*, clang::ModuleMap::KnownHeader*, bool*, bool*, bool, bool) ws/llvm-project/clang/lib/Lex/HeaderSearch.cpp:999:37
#12 0x00007f60dd4c5caf clang::Preprocessor::LookupFile(clang::SourceLocation, llvm::StringRef, bool, clang::detail::SearchDirIteratorImpl<true>, clang::FileEntry const*, clang::detail::SearchDirIteratorImpl<true>*, llvm::SmallVectorImpl<char>*, llvm::SmallVectorImpl<char>*, clang::ModuleMap::KnownHeader*, bool*, bool*, bool) ws/llvm-project/clang/lib/Lex/PPDirectives.cpp:903:53
#13 0x00007f60dd4c959d clang::Preprocessor::LookupHeaderIncludeOrImport(clang::detail::SearchDirIteratorImpl<true>*, llvm::StringRef&, clang::SourceLocation, clang::CharSourceRange, clang::Token const&, bool&, bool, bool&, clang::detail::SearchDirIteratorImpl<true>, clang::FileEntry const*, llvm::StringRef&, llvm::SmallVectorImpl<char>&, llvm::SmallVectorImpl<char>&, clang::ModuleMap::KnownHeader&, bool) ws/llvm-project/clang/lib/Lex/PPDirectives.cpp:1879:53
#14 0x00007f60dd4ca455 clang::Preprocessor::HandleHeaderIncludeOrImport(clang::SourceLocation, clang::Token&, clang::Token&, clang::SourceLocation, clang::detail::SearchDirIteratorImpl<true>, clang::FileEntry const*) ws/llvm-project/clang/lib/Lex/PPDirectives.cpp:2049:74
#15 0x00007f60dd4c92b5 clang::Preprocessor::HandleIncludeDirective(clang::SourceLocation, clang::Token&, clang::detail::SearchDirIteratorImpl<true>, clang::FileEntry const*) ws/llvm-project/clang/lib/Lex/PPDirectives.cpp:1844:79
#16 0x00007f60dd4c67d8 clang::Preprocessor::HandleDirective(clang::Token&) ws/llvm-project/clang/lib/Lex/PPDirectives.cpp:1106:36
#17 0x00007f60dd477eec clang::Lexer::LexTokenInternal(clang::Token&, bool) ws/llvm-project/clang/lib/Lex/Lexer.cpp:4093:7
#18 0x00007f60dd4753f0 clang::Lexer::Lex(clang::Token&) ws/llvm-project/clang/lib/Lex/Lexer.cpp:3307:40
#19 0x00007f60dd51a996 clang::Preprocessor::Lex(clang::Token&) ws/llvm-project/clang/lib/Lex/Preprocessor.cpp:898:36
#20 0x00007f60e65dbb07 clang::DoPrintPreprocessedInput(clang::Preprocessor&, llvm::raw_ostream*, clang::PreprocessorOutputOptions const&) ws/llvm-project/clang/lib/Frontend/PrintPreprocessedOutput.cpp:1006:15
#21 0x00007f60e65a35ca clang::PrintPreprocessedAction::ExecuteAction() ws/llvm-project/clang/lib/Frontend/FrontendActions.cpp:1050:27
#22 0x00007f60e65924bf clang::FrontendAction::Execute() ws/llvm-project/clang/lib/Frontend/FrontendAction.cpp:980:38
#23 0x00007f60e6455ed0 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) ws/llvm-project/clang/lib/Frontend/CompilerInstance.cpp:1036:42
#24 0x00007f60e5edb0ed clang::ExecuteCompilerInvocation(clang::CompilerInstance*) ws/llvm-project/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:263:38
#25 0x000000000045031a cc1_main(llvm::ArrayRef<char const*>, char const*, void*) ws/llvm-project/clang/tools/driver/cc1_main.cpp:248:40
#26 0x0000000000444e7f ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) ws/llvm-project/clang/tools/driver/driver.cpp:317:20
#27 0x00000000004454f0 main ws/llvm-project/clang/tools/driver/driver.cpp:388:26
#28 0x00007f60e491f6a3 __libc_start_main (/lib64/libc.so.6+0x236a3)
#29 0x00000000004437ee _start (/localdisk2/mprice1/community6/llvm-project/build/bin/clang-14+0x4437ee)


</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzNWdlu4zgW_RrnhbAhUftDHlJOMm1MFSpTycw8GhRJ2ZpIokFKWfrr-5K01tixU8kAHVTZNJfLc8_dKCoV7PXyQSDJd1KwhvKZdzVzrmfOVU0k-vPlKUOLxQzfmvEF9C02f9pxWpBqg-aUumh-g-ZZqeZUlDtS52le5PUrmgs0R_MXRNF8pbZEctY1QCCT-ROX6GlBrTj7eQ871DAxIyADxJOs5rKDtK3rndK_8K2B9JTzZ7UoiqdyIeQGuq5dN4mwq8cPLNjk9bZJF4ASfuhV-685qPY_Tmv4CWNlrhtuRJOMsjALM-okOKSuk4TYxwQzRjlL0gB7jFM2BL-qUJYXHOUVLRqmtZCiNBp6V26nxOFZHS9AispFpVuL7UcWspxoCthkVTeuXquavECj7ma4DnygZyIr4Fo3Z9jbSweHUKJ4gl0apQ1RiWq-E7ImKSD4kVMplMhqpDiRdItkU3CFiKb6DaCSLrZoFnyb_7dsl833m8yC6z1__b4zjPUK-LJDqP2bBTd_Y5pPrDpA_sQ8A7b2E5KJcaxobYw3zAJ_O0k2JZmXXCmy4WpIrR1C-yHN8EFRbyjvGDehbtCoAyFjBvFta9O-5zvXGv_BCePy3jiK1S0JtaxWKPxjvIZ4t-1_NaTIsxw48ZYrtRSVgk2Ww9nXuYSdhXz9LsRjs5t5NzMcHhNn94UlK0gkBFatyl0xEA2LzTyxs8MzDIzFM5wgqsc1vc-QNlAqRIH2i9DMu0a1bCBXfvtKNYxcu-0788CwwN6VUlzW4MFoFjoAut7mCiwbairAkKvqCfZnKN9rvdDGxZHJq5wtrFnvvt9c3d8g1aSQ8xBBabPRdQCiHNUCjXMnjI0yLSIVa50d1VuOqCQKaCL0sZYEyggouzNFg4LbQTwo0UjbrVcSpQTNiU71sqmQojLf1YuuBtBHxJpy10WJA0PJnRQbSUpE5KYpeVWrzou-rgrpDOgg58WBvygLHU6SLMOhi0y5MPZQr8o27mRe1Qbsg9U47idJ8rwWqpaclMYoS-Cq1l51KILaUpSn8Hnf7LQFoPXvKtfxc59vKlKoBZANgoMwgM8uUgGuO4XruTGaYLMy_gDmCyinOH4SOTOe_nlAoYdNvurw4Akehpl_iL5fTTWCpfZx9wFALRK6066S-JoZp0fiTZBwShI0peKL7OI70ZgGf7h5gmOHMQet11BWIRz5GmJM5RtCdQibyuWY_93yYLjcTzwvcjIkSa50_o4tqtC333ShxAKc7Jvz4kUwD_TpBYVjQS5LcYBIqoP8PUHYhXkjQdFUUJIlaF0V60IQtmaiJDloIgq2cJDuKtWGkvqQbvFYEk4pDdGCVJVI82q9Xv9jBR_EJLi1TlgLbjMG_D4kLhmIY8wPvIy7Hy0HNpufqAVfWP2Crji7zhi-z9NRvLQZHJigIGqdEgVIl7-pHyQiVTM7NxMSThds3e1Q66PAezXK8qDnFKI6c-7VedPCN-zPDd4T9O9DtGd_33F1_aC72-q3NZnBEJ_0zLsT5p0kHZ0jhrazPRbzLdTQUba_ryHdbn7xbKLrval53wXEgTlrLs0xYjLpg-b73ZXGDj3kKynJq0bsLTuH2JFcjl1La3pT1fL1pDUns8xh5ma85X1JiuI_ZvoeHIUyfAjcqZkDAD_goVVb43D_D7KzP_9ZiefK2nM_11ricLP9PlwW2gC3deFAmO_LUaIP8F7U-xse-xsNKMmGmO-685KQB_ztXcc64oxf6m8nveEzDvl_9I7f9ILzrX93Z-MAzpLdYcTxdLbxeut7E-snQcLOsb7Fu7IZ7qdW2RxD4q_ivXeX8GT6GgwugXM74Rf08cnog3jkVZ_bO07Dt0E23fWr_fO4qme51Adnnul84Re5mRtHycTP_ImfET8I3vczexg-w8_edQhj8rcsHOl-V9TXusCnCMaOrwmO_J7gYBrIOD2L4D213Raf5_ZvxJMb-_rxKxocr8IJT2HE4nN4OkJQz8HngLrmHOiFPdBoDDSKOKdDoCCLy65pcKwqYBke_45B_Hhwm032GOEkqqvH4OgQTyDCQ45zHOLniRui8TzzbOs7PZzxI1fgkiQJT9Syr0A1FLsHFyfx2Jp4dH0TBixNnWh0ZBXmcuRucDm1qnbNJNWNNJgWgdHtzvTMMVz5s6lB8s-dDmk1KIfnqHwrBThZxYzeE8BWbuvRjvFot3-mxO6YA-LBUXOMcSLwylxE2MGbF06bmu-7jl_KHIXbNq2ELvCcQD-4496rMR7DTLCfjg7EY0EjdJ_H1R7UYo3Ki3tUo2ujEKonZ6NYW4pyB-kTSqWqSWXfmL1l7bgav-EA0y07Sj1teR_34EfXToA8dfjolLmH2Qt86ipO_J6O5xaIFvSDSX-3R7dry2voTdhvq6v98wPHc8F1qbvW90ujp-7BI6w-gw0fPk1Ijvqg48SlZ6tHDchVdzWsB_abt5D9eJwNcTiG7Ps8ylCr-dK1VMSnzpBj_Cd95A1M22hzthvN-stQDTKagAx8qCBarc_sEsfGhv0uk6s9NwuJh9Zrfbe4VvrdrmHy_ZtHD9Z0N49aaDKB7kGBRlZcKwm8qmC5esTwo9zJnHL9Eli_zW2qvH4N32qYNnmhQyvVXmX1nbu-QWB36CGYzwt26bHES8hFndcFvxw-8duXH1wh86ro8NvRi0YWlx9-H50r1XBtgMD3cXixvXQ5FH8ncaMgZSnzGPUZpSEm5kTAgvSiICkv1OUs-DYLri_yS-xgDDEUYQ8a8cIjPuNhmqQZDZ3MZTPf4aW-Y23f7VzIS4NBv_CBwSJXdf_i54IolW8qzlv5pKm3Ql6W-SM3pCdhcmEwXxrAfwFXVRED">