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

    <tr>
        <th>Summary</th>
        <td>
            [[Clang]] Don't traverse parameter list twice in `RequiresExpr`.
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          16bit-ykiko
      </td>
    </tr>
</table>

<pre>
    https://github.com/llvm/llvm-project/blob/3c3094b60d3587b1db8ef35b3bf54e73ac5894d9/clang/include/clang/AST/RecursiveASTVisitor.h#L2985-L2991

Currently, ASTVisitor traverses parameter list twice in `RequiresExpr`. First, and then it is when traverse `decls` of the body of `RequiresExpr`,  another is when traversing `S->getLocalParameters()`. This is unnecessary and could be optimized.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyUkj9v2zAQxT8NtRAWqCMpiYMGJ46mDEUSdOefi8SGFl2Scup--kJGAhftlIkH4t4Pd_eeztlPC-JA5B2Rh0qvZY5paFrjy-7y5t9iZaK7DHMpp0z4nsBIYJx8mVdT23gkMIZw_nx2pxR_oC0ERhOiITByy5kSpmWOy74zjTM9vnJpuHmVAjuureyVcIrAaINeJgKjX2xYHf71s39-ITA-oV1T9mfcP79899mXmOqZAH8E1cvdIyjVELYnbH-_poRLCRcC9_TWTEvSZ0wZMz3ppI9YMNHgc6Hl3VukfqGkZU_4c_UJ88OvUyItq-noUy4bSS-OlhkX6gv1mb5v5SdyUzq0IZOW0fi69dHtblv9P3SjUb3EMmP6F-WXaVM87wh_mLA8RqvDt89xM4GegLrO9TL7vInXZUGLOet0uY5o4xocNUjjqfij_42urtzAneJKVzg0HRdcqk7Jah6MFqZhjjd9a7QQ0AkrWA8Ns87KroXKD8BANNC0jeAtl3UnHe-VYqKxAq3gRDA8ah_qzf46pqnyOa84NMCYgipogyFfwwXwYSdsOUvDNS9mnTIRbHMh3xDFl_CRyLv7q0geiDzQQ1wIdOV29S_4WK0pfD3F12UygfFjn_MAfwIAAP__MgkGog">