Experiment with using first-class aggregates to represent member function

pointers.  I find the resulting code to be substantially cleaner, and it
makes it very easy to use the same APIs for data member pointers (which I have
conscientiously avoided here), and it avoids a plethora of potential
inefficiencies due to excessive memory copying, but we'll have to see if it
actually works.

llvm-svn: 111776
This commit is contained in:
John McCall
2010-08-22 10:59:02 +00:00
parent 131d97d809
commit a1dee5300b
13 changed files with 229 additions and 321 deletions

View File

@@ -77,7 +77,7 @@ const llvm::Type *CodeGenFunction::ConvertType(QualType T) {
bool CodeGenFunction::hasAggregateLLVMType(QualType T) {
return T->isRecordType() || T->isArrayType() || T->isAnyComplexType() ||
T->isMemberFunctionPointerType() || T->isObjCObjectType();
T->isObjCObjectType();
}
void CodeGenFunction::EmitReturnBlock() {