diff options
| -rw-r--r-- | clang/lib/CodeGen/CGClass.cpp | 3 | ||||
| -rw-r--r-- | clang/lib/Sema/SemaDeclCXX.cpp | 5 | 
2 files changed, 5 insertions, 3 deletions
diff --git a/clang/lib/CodeGen/CGClass.cpp b/clang/lib/CodeGen/CGClass.cpp index 59d5ef78599..a831ebda84b 100644 --- a/clang/lib/CodeGen/CGClass.cpp +++ b/clang/lib/CodeGen/CGClass.cpp @@ -573,7 +573,8 @@ static void EmitMemberInitializer(CodeGenFunction &CGF,      llvm::Value *ArrayIndexVar = 0;      const ConstantArrayType *Array        = CGF.getContext().getAsConstantArrayType(FieldType); -    if (Array && Constructor->isCopyOrMoveConstructor()) { +    if (Array && Constructor->isImplicitlyDefined() && +        Constructor->isCopyOrMoveConstructor()) {        llvm::Type *SizeTy          = CGF.ConvertType(CGF.getContext().getSizeType()); diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index c197a4ea9fa..6f14e61630f 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -6963,7 +6963,7 @@ void Sema::DefineImplicitDestructor(SourceLocation CurrentLocation,    SourceLocation Loc = Destructor->getLocation();    Destructor->setBody(new (Context) CompoundStmt(Context, 0, 0, Loc, Loc)); - +  Destructor->setImplicitlyDefined(true);    Destructor->setUsed();    MarkVTableUsed(CurrentLocation, ClassDecl); @@ -8301,10 +8301,10 @@ void Sema::DefineImplicitCopyConstructor(SourceLocation CurrentLocation,                                                 MultiStmtArg(*this, 0, 0),                                                  /*isStmtExpr=*/false)                                                                .takeAs<Stmt>()); +    CopyConstructor->setImplicitlyDefined(true);    }    CopyConstructor->setUsed(); -    if (ASTMutationListener *L = getASTMutationListener()) {      L->CompletedImplicitDefinition(CopyConstructor);    } @@ -8464,6 +8464,7 @@ void Sema::DefineImplicitMoveConstructor(SourceLocation CurrentLocation,                                                 MultiStmtArg(*this, 0, 0),                                                  /*isStmtExpr=*/false)                                                                .takeAs<Stmt>()); +    MoveConstructor->setImplicitlyDefined(true);    }    MoveConstructor->setUsed();  | 

