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

    <tr>
        <th>Summary</th>
        <td>
            improve the AST for the synthesized deduction guide
        </td>
    </tr>

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

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

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

<pre>
    Given the following CTAD code:

```
template <typename T>
struct C {
    template <typename U>
    C(U);
};
C c(1);
```

The synthesized deduction guide from the constructor is:

```
|-FunctionTemplateDecl  implicit <deduction guide for C>
| |-TemplateTypeParmDecl <line:1:11, col:20> col:20 typename depth 0 index 0 T
| |-TemplateTypeParmDecl <line:3:15, col:24> col:24 typename depth 0 index 1 U
| `-CXXDeductionGuideDecl <line:4:5, col:8> col:5 implicit <deduction guide for C> 'auto (type-parameter-0-1) -> C<T>'
| `-ParmVarDecl 0x555d18fe4638 <col:7> col:8 'type-parameter-0-1'
```

Note that the function parameter type is canonicalized to `type-parameter-0-1`, this is suboptimal. I think it is better to show a normal `U`.

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUlFGP4yYQxz_N-GXkCINtnAc_5JzLqS9VpWareyX2JKaHwQK8d9tPX-Fks7vtdtWTEkKAmd__PxpQIeiLJWqh-gTVPlNLHJ1vR_eNtM1Obnhqv-hHshhHwrMzxn3X9oLdcbfH3g0EYgdsD-x5rNnts_6NNM1GRUIQXXyayaqJ8Aji83U7RL_0ETsE-em6goj4btDDPSgd6YA3D8C3IG5xIPf3eYc98KZ4s_1W1nU8joThycaRgv6LBhxoWPqoncXLogfCs3fTart39qrUedThY8cgu_yw2DXP8WZkT71B1NNsdK9jsvUvlPPY3R2CTBXp8uf449NMvyk_rXlAdEbbVPcifQvgHfbOgNhxBuLzfY730g00xxEZajvQD2R4_CmKSJTqFaV8RSn_i1LgwytKzfLu69f9s-kvyfM_MCWI3StK8wKp_lflELhUS3QIvEma8ll5NVEkn7M89QLm6VQHolv7j8u3-pLzP5RfVbEfVVUNRXOmshZNol6VyBdRTeK9x5EfNNyvLhLGUcXrZbp1Cd4zrMVEHbBX1lndK7P2ZTJVs3dgNUsFi6MOKSgsJzdHPSmzwV_Sqv2GOqadE8U1u8Mwuu-o0Do_KZOyPkDNNld12dCKYSu2KqO2kKyuOBNcZmN7qoeyrxpBdaNI9bzoSclCKNlIweptk-mWM16ygm_ZlldcbpgkVjUlVXRuzmcaoGQ0KW02xjxOG-cvmQ5hoVZu5bbJjDqRCesDxHlvlL2A2J29s5HsAJynZ8m3KTQ_LZcAJTM6xPCSLOpoqNXT7N0jrbXd_X5cOyN-fMWzxZt2jHFeLzU_AD9cdByX06Z3E_BDItx-8tm7P6mPwA-r9gD8sMr_OwAA___BfZbk">