mirror of
https://github.com/intel/llvm.git
synced 2026-01-30 22:53:05 +08:00
Get the base class addresses before calling EmitClassCopyAssignment.
llvm-svn: 102676
This commit is contained in:
@@ -778,13 +778,16 @@ void CodeGenFunction::SynthesizeCXXCopyAssignment(const FunctionArgList &Args) {
|
||||
|
||||
for (CXXRecordDecl::base_class_const_iterator Base = ClassDecl->bases_begin();
|
||||
Base != ClassDecl->bases_end(); ++Base) {
|
||||
// FIXME. copy assignment of virtual base NYI
|
||||
if (Base->isVirtual())
|
||||
continue;
|
||||
|
||||
|
||||
llvm::Value *Dest = GetAddressOfBaseClass(ThisPtr, ClassDecl,
|
||||
CXXBaseSpecifierArray(Base),
|
||||
/*NullCheckValue=*/false);
|
||||
llvm::Value *Src = GetAddressOfBaseClass(SrcPtr, ClassDecl,
|
||||
CXXBaseSpecifierArray(Base),
|
||||
/*NullCheckValue=*/false);
|
||||
CXXRecordDecl *BaseClassDecl
|
||||
= cast<CXXRecordDecl>(Base->getType()->getAs<RecordType>()->getDecl());
|
||||
EmitClassCopyAssignment(ThisPtr, SrcPtr, ClassDecl, BaseClassDecl);
|
||||
EmitClassCopyAssignment(Dest, Src, 0, BaseClassDecl);
|
||||
}
|
||||
|
||||
for (CXXRecordDecl::field_iterator Field = ClassDecl->field_begin(),
|
||||
|
||||
Reference in New Issue
Block a user