Calling C++ constructors -- looking for feedback on my approach

Constructor calls are complicated across the various C++ ABIs, and you may need to expose some APIs in Clang in order to handle them correctly.

So you're saying I need to use something like clang::CodeGenTypes::arrangeCXXConstructorCall() instead of just naively passing the this pointer as the first argument (which may not be correct for all ABIs)? That makes sense.

Along the same lines, it looks wrong to me that SignatureExpansion::expandExternalSignatureTypes currently uses clang::CodeGen::arrangeFreeFunctionCall() to call C++ member functions. I think this should be using clang::CodeGenTypes::arrangeCXXMethodCall() to handle all ABIs correctly. Do you agree?

I'll explore this some more and work out how to handle this in IRGen. I'll loop back when I have something concrete to discuss.