Closed
Description
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.
llvm-project/clang/lib/AST/ItaniumMangle.cpp
Lines 7327 to 7338 in b0ffaa7
Because mangleNameOrStandardSubstitution
never adds RD
as a substitution.