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

    <tr>
        <th>Summary</th>
        <td>
            Demangler drops constructor/destructor name in the presence of abi-tags
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            libc++abi
      </td>
    </tr>

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

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

<pre>
    ```
struct [[gnu::abi_tag("Outer")]] S {
   S() {}
   ~S() {}
};

int main() {
    S s;
    return 0;
}
```
Compiled with: `clang++ repro.cpp -std=c++2a -g -O0`
Also tried with LLVM checked out at top-of-tree


In this example the mangling are:
1. Constructor: `_ZN1SB5OuterC2Ev`
2. Destructor: `_ZN1SB5OuterD2Ev`

These demangle to:
```
$ c++filt -n _ZN1SB5OuterC2Ev
S[abi:Outer]:()

$ c++filt -n _ZN1SB5OuterD2Ev
S[abi:Outer]::~()
```

This doesn't look quite right.

Noticed this when debugging someting in LLDB, where the function name in each frame is displayed using the LLVM demangler
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyEVE2PpDYQ_TXmUqJlTAPTBw7NkJYi9e4eOsohl5XBBThrbGIXu9nL_vaIj-np2UQTqeUG8-q53nslyxB0bxFLllUsqyM50-B8-UG3g0STpEXUOPW9ZDnff7xm_BzIzy3BWlP1dmbpmaVn2ejPJHsmnpgQn2ZCz4Rg4sSymmU13IAV1VYPALcVdlr3ivq-_eO_9peHdC_dVm0JRqntA_iFAW4Q7ujl3SPN3gJ_pbjzvlX17MZJG1TwTdPA0jOwnLdG2p6JiokKPE7eHdppgjiQYmndbh-EhLiH-NMr09kEB-T1zgXX6-8foB2w_YIK3EwgCchNseti8oiPyrb1Vws06AD4txwng0ADwihtb7TtQXpcDF-ByQGend3ycH5v-vMfH5Nbla0RPItfvt77Egeo8R1w_Qje1t8GDAgK19MRyN2P_sk9Jo6wG9JpQxBb-FcfK_DGsko2mqXnbUayeqFcg3xjxPt89f_wpecfbzh_anbXpgMoh8EyURAY577AX7MmBK_7gQ6P2I-OdItqi-XbgBYUNnPfL4EENyItD9rC9VpXTDwvEL_l1s22Je0sWDniAkHZDtD59S2A0mEy8jsqmMPCsZSs8_LiuY9UmapTepIRlklePCWcF3kWDSU_CmyTY54opfhRNDlPuk4V8lio05NUItKl4CLlKc-ThOc8O2CWYSJR8tOp6QqRsyPHUWpzMObreHC-j3QIM5Z5IpI0MrJBE9arQQijmz2OxWwhltvCl0td3Mx9YEdudKDwykSaDJb1iwpQ3k0B2odpFRd1n8a7O4v-yWNA2yK4DmSjY5J9iGZvyoFoCuu4XJi49JqGuTm0bmTispy7_8WTd39iS0xcVjmBicuq6J8AAAD__5IdcRU">