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

    <tr>
        <th>Summary</th>
        <td>
            mangleCXXCtorVTable mangles an incorrect name
        </td>
    </tr>

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

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

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

<pre>
    ```C++

namespace A {

class VBase {
 public:
  virtual ~VBase() {};
};

struct Wrap {};

template <typename T>
class Impl : public virtual VBase {
 public:
};

}  // namespace A

struct Inst : public A::Impl<A::Wrap> {};

void Test() { Inst a; }
```
The code above will generate a `CtorVTable` with the name `_ZTC4Inst0_N1A4ImplINS_4WrapEEE`. After demangling, the result is `construction vtable for A::Impl<Inst::Wrap>-in-Inst`. However, `Inst::Wrap` is incorrect.

https://github.com/llvm/llvm-project/blob/b0ffaa79050460d724eec1b12363c439b43d5ae5/clang/lib/AST/ItaniumMangle.cpp#L7327-L7338

 because `mangleNameOrStandardSubstitution` never adds `RD` as a substitution




</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUlMmO4zYQhp-GuhTa4KLFOujg9oI0MOkAaWMyyKVRoso2A1oSSMqeySHPHpDujjULEAwgUBbrd9VfXxFE782xJ2pY8ciKTYZTOA2uCfr69-fPWTt0XxpW8tuzZvIxPnzD-Oq29ngmP6ImWAGrvgppi97Dx0f0dA_BOLXWaKbeRAAX48KEFv5JSiaXTNZJX22Yek84_51WH9ykA_zhcPxOnNZA59FiIGBqHb6MFI3Cnqnt3NzTebTA1Lur_7z8j-nvq7FqA8DkjskdzJD8wPFT78O85CpmVavohKn121dsi6ntjzu7DKaDPflwZ3XLikw9QtTfxO9Tu33uTwR66AiwHS4EV2MtHKknFxkhxOmGwX3cY2uJlRyuJpwgnCi1E8Ovf-7XeazDX5_FKo-Gn55fXvPodbvdspIvYHUI5KCjM_ZHa_ojk-uUw5GfbADjYyI99DcWZujhEmJBOAzuGxKx0lcwHkz_kDZjoV-GK13Ixfys5N9oSx4rmV4PzpEOizm8Uwijj9o0q6MJp6ld6OHM5M7ay_vrYXTDX6QDk7vWDm188cMBsap5wfOSd5XMibRohVSl0rmq21x1BVLB5E5bjJ3vrIl_XL3smdw9BezNdP41cqGFHkcm1YdKyerhQ6XUcu4QWtI4-cQ8caRnPNNv7iVg36HrXqbWBxOmiC-22kcQgF2X4P6-iXvoAcHPhfOzOluzrlFdrWrMqBGVLOpKiKLKTg0WqA-qEkvSQleiQFUeyk6WQhyq7lBSZhrJZc5rwYWURVEtOOm65ioXSy2WVa5ZzumMxi4i0MXgjpnxfqJG8CUXRWaxJevTrSNlT1dIUSZlvIRck6bQTkfPcm6ND_6eJphgqbmhWX_6dD-2cNvzgP19-un8ZpOzzU-PPjnyTO7eLF8a-W8AAAD__xMRikA">