[cfe-dev] AST's VTableContext object and the Microsoft C++ ABI

Charles Davis cdavis at mymail.mines.edu
Sun Jun 17 14:08:52 PDT 2012


I'm working on improving support for v-tables under the Microsoft C++ ABI, and while poking around in IRGen, I discovered the VTableContext class that lives in the AST library.

This class is responsible for generally laying out the (single, unless the class needs a construction v-table) v-table for each class that needs one. It is very specific to the Itanium ABI concept of a virtual table, which means it can't be used as-is for the Microsoft ABI. Trouble is, it's used by various pieces of IRGen--which is how I discovered it.

So, I'm asking for your advice. What should I do about this?

- Should I make certain methods of VTableContext virtual, and override them for the Microsoft ABI?
- Should I hide this class behind the CXXABI objects? If I go this route, I'll have to indirect the pieces of IRGen currently using this object through the CGCXXABI object.

I'm leaning towards the first, but I'm open to suggestions. Any ideas?


More information about the cfe-dev mailing list