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

    <tr>
        <th>Summary</th>
        <td>
            [clang-tidy] Performance regression when enabling c++20
        </td>
    </tr>

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

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

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

<pre>
    We are seeing some large performance regressions in clang-tidy when comparing C++17 and C++20. Some translation units go from 8 seconds to 6 minutes.

Profiling is pointing to clang-tidy.exe!clang::tooling::ExpandModularHeadersPPCallbacks::parseToLocation as the culprit. Which was added with https://reviews.llvm.org/D59528.

Is there a way to make that machinery an opt-in/out?

@alexfh @gribozavr 
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxsksFupDgQhp_GXEqNoICGPnBI0ot2pV2ppR0p58IuwBNjI9uk0_P0I-jJJJHmAi7bf1X9ro9C0KNlbkX1KKpzQmucnG-jptHNJMlrF5LeqVv7zECeITBrO0JwM4MhPzIs7AfnZ7KSwfPoOQTtbABtQRqy4yFqdYPrxBakmxfym_5J4KPAx7wGsuo9wiyF_7fE0ZMNhqJ2FlarY4DRweDdDA0Els6qANHBEWZt18ghFdlZZA_378W7QZutiA6wOG3jto7uUzcpv7HAfN8QxYMoHqJzm-Qe_PW2kFX_ObUa8n8zKfbhcnkiY3qSL-F-aSEf-Jv718l7nxQgTgxyNYvXMYXnScsJrhSAlGIFVx0nmGJcdj12AjvPr5qvITXmdU6dHwV25-pUYfPFzz97Ys9AcKXbZmSmF4Y4UYSZ5KQt-xuQBbfEg7YCO7dGUXSfc4gyI8NvwwSizEave_eDXj0kqi3UqThRwm1-bLCosarzZGpV0_OprsumHhqFRXPkcqjyfMhOiHWdYaJbzLDISiwxL7HK01PGODS1VFktsT7Vosx4Jm1-m0t0CCu3RyyKOjHUswk7dIiWr7AfCsSNQd9umkO_jkGUmdEhfjxREnU0O60f0xTVGS5_hPBOHVvqdx7kO2bJ6k37dRajjtPap9LNArut2q_fYfHuO8sosNt7DAK73cPPAAAA___8sg5V">