[cfe-dev] Constructor & destructor name mangling for MS ABI.

Michael Spencer bigcheesegs at gmail.com
Wed Nov 30 21:49:19 PST 2011


On Mon, Nov 7, 2011 at 1:42 AM, r4start <r4start at gmail.com> wrote:
> Here is a patch with test cases.
>
>  - Dmitry.

This patch breaks with the following test case:

struct A {
  A();
};

A::A() {}

The reason is that the Itanium ABI has different manglings for the
different types of constructors (base, complete, and some other weird
one). This patch mangles both the same way, thus later in the code
clang gets a GlobalAlias when it expects a Function.

I have looked into properly handling this, but it requires changing
how CGCXX generates constructors. It also requires that we figure out
exactly how the ms-abi handles base vs complete constructors. I
believe that when a base constructor is possibly different from the
complete constructor, you add an argument to the constructor which
specifies if it should construct everything.

- Michael Spencer




More information about the cfe-dev mailing list