Author: Vlad Serebrennikov Date: 2023-10-06T07:50:07-04:00 New Revision: 99e6ef3e7c6e342beb2ad6b5e64d1e5fd2f24d2b
URL: https://github.com/llvm/llvm-project/commit/99e6ef3e7c6e342beb2ad6b5e64d1e5fd2f24d2b DIFF: https://github.com/llvm/llvm-project/commit/99e6ef3e7c6e342beb2ad6b5e64d1e5fd2f24d2b.diff LOG: [clang][NFC] Add missing placement-new after Allocate() calls (#68382) While working on #68377 inspecting `Allocate()` calls, I found out that there are couple of places where we forget to use placement-new to create objects in the allocated memory. Added: Modified: clang/lib/AST/DeclCXX.cpp clang/lib/AST/DeclObjC.cpp clang/lib/Serialization/ASTReaderDecl.cpp Removed: ################################################################################ diff --git a/clang/lib/AST/DeclCXX.cpp b/clang/lib/AST/DeclCXX.cpp index 42bab4ed51b7290..a92b788366434ce 100644 --- a/clang/lib/AST/DeclCXX.cpp +++ b/clang/lib/AST/DeclCXX.cpp @@ -1484,7 +1484,8 @@ void CXXRecordDecl::setCaptures(ASTContext &Context, if (Captures[I].isExplicit()) ++Data.NumExplicitCaptures; - *ToCapture++ = Captures[I]; + new (ToCapture) LambdaCapture(Captures[I]); + ToCapture++; } if (!lambdaIsDefaultConstructibleAndAssignable()) diff --git a/clang/lib/AST/DeclObjC.cpp b/clang/lib/AST/DeclObjC.cpp index e934a81d086e3c0..e1eef2dbd9c3d28 100644 --- a/clang/lib/AST/DeclObjC.cpp +++ b/clang/lib/AST/DeclObjC.cpp @@ -931,8 +931,8 @@ void ObjCMethodDecl::setParamsAndSelLocs(ASTContext &C, unsigned Size = sizeof(ParmVarDecl *) * NumParams + sizeof(SourceLocation) * SelLocs.size(); ParamsAndSelLocs = C.Allocate(Size); - std::copy(Params.begin(), Params.end(), getParams()); - std::copy(SelLocs.begin(), SelLocs.end(), getStoredSelLocs()); + std::uninitialized_copy(Params.begin(), Params.end(), getParams()); + std::uninitialized_copy(SelLocs.begin(), SelLocs.end(), getStoredSelLocs()); } void ObjCMethodDecl::getSelectorLocs( diff --git a/clang/lib/Serialization/ASTReaderDecl.cpp b/clang/lib/Serialization/ASTReaderDecl.cpp index d553b3c6d78dedc..6a2f607d916c472 100644 --- a/clang/lib/Serialization/ASTReaderDecl.cpp +++ b/clang/lib/Serialization/ASTReaderDecl.cpp @@ -2002,13 +2002,16 @@ void ASTDeclReader::ReadCXXDefinitionData( case LCK_StarThis: case LCK_This: case LCK_VLAType: - *ToCapture++ = Capture(Loc, IsImplicit, Kind, nullptr,SourceLocation()); + new (ToCapture) + Capture(Loc, IsImplicit, Kind, nullptr, SourceLocation()); + ToCapture++; break; case LCK_ByCopy: case LCK_ByRef: auto *Var = readDeclAs<VarDecl>(); SourceLocation EllipsisLoc = readSourceLocation(); - *ToCapture++ = Capture(Loc, IsImplicit, Kind, Var, EllipsisLoc); + new (ToCapture) Capture(Loc, IsImplicit, Kind, Var, EllipsisLoc); + ToCapture++; break; } } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits