Author: Timm Bäder Date: 2023-06-05T13:20:18+02:00 New Revision: e69448b1ea96d83bd918fe162ce29b3dddcdf166
URL: https://github.com/llvm/llvm-project/commit/e69448b1ea96d83bd918fe162ce29b3dddcdf166 DIFF: https://github.com/llvm/llvm-project/commit/e69448b1ea96d83bd918fe162ce29b3dddcdf166.diff LOG: [clang][Interp][NFC] Make Src parameter for move functions const Added: Modified: clang/lib/AST/Interp/Descriptor.cpp clang/lib/AST/Interp/Descriptor.h Removed: ################################################################################ diff --git a/clang/lib/AST/Interp/Descriptor.cpp b/clang/lib/AST/Interp/Descriptor.cpp index 31554dddb30a0..a6bef77bf8c16 100644 --- a/clang/lib/AST/Interp/Descriptor.cpp +++ b/clang/lib/AST/Interp/Descriptor.cpp @@ -28,8 +28,8 @@ static void dtorTy(Block *, char *Ptr, const Descriptor *) { } template <typename T> -static void moveTy(Block *, char *Src, char *Dst, const Descriptor *) { - auto *SrcPtr = reinterpret_cast<T *>(Src); +static void moveTy(Block *, const char *Src, char *Dst, const Descriptor *) { + const auto *SrcPtr = reinterpret_cast<const T *>(Src); auto *DstPtr = reinterpret_cast<T *>(Dst); new (DstPtr) T(std::move(*SrcPtr)); } @@ -55,9 +55,10 @@ static void dtorArrayTy(Block *, char *Ptr, const Descriptor *D) { } template <typename T> -static void moveArrayTy(Block *, char *Src, char *Dst, const Descriptor *D) { +static void moveArrayTy(Block *, const char *Src, char *Dst, + const Descriptor *D) { for (unsigned I = 0, NE = D->getNumElems(); I < NE; ++I) { - auto *SrcPtr = &reinterpret_cast<T *>(Src)[I]; + const auto *SrcPtr = &reinterpret_cast<const T *>(Src)[I]; auto *DstPtr = &reinterpret_cast<T *>(Dst)[I]; new (DstPtr) T(std::move(*SrcPtr)); } @@ -104,18 +105,19 @@ static void dtorArrayDesc(Block *B, char *Ptr, const Descriptor *D) { } } -static void moveArrayDesc(Block *B, char *Src, char *Dst, const Descriptor *D) { +static void moveArrayDesc(Block *B, const char *Src, char *Dst, + const Descriptor *D) { const unsigned NumElems = D->getNumElems(); const unsigned ElemSize = D->ElemDesc->getAllocSize() + sizeof(InlineDescriptor); unsigned ElemOffset = 0; for (unsigned I = 0; I < NumElems; ++I, ElemOffset += ElemSize) { - auto *SrcPtr = Src + ElemOffset; + const auto *SrcPtr = Src + ElemOffset; auto *DstPtr = Dst + ElemOffset; - auto *SrcDesc = reinterpret_cast<InlineDescriptor *>(SrcPtr); - auto *SrcElemLoc = reinterpret_cast<char *>(SrcDesc + 1); + const auto *SrcDesc = reinterpret_cast<const InlineDescriptor *>(SrcPtr); + const auto *SrcElemLoc = reinterpret_cast<const char *>(SrcDesc + 1); auto *DstDesc = reinterpret_cast<InlineDescriptor *>(DstPtr); auto *DstElemLoc = reinterpret_cast<char *>(DstDesc + 1); @@ -162,7 +164,8 @@ static void dtorRecord(Block *B, char *Ptr, const Descriptor *D) { DtorSub(F.Offset, F.Desc); } -static void moveRecord(Block *B, char *Src, char *Dst, const Descriptor *D) { +static void moveRecord(Block *B, const char *Src, char *Dst, + const Descriptor *D) { for (const auto &F : D->ElemRecord->fields()) { auto FieldOff = F.Offset; auto FieldDesc = F.Desc; diff --git a/clang/lib/AST/Interp/Descriptor.h b/clang/lib/AST/Interp/Descriptor.h index 5b86ffb7957a0..657dbafb23805 100644 --- a/clang/lib/AST/Interp/Descriptor.h +++ b/clang/lib/AST/Interp/Descriptor.h @@ -41,7 +41,7 @@ using BlockDtorFn = void (*)(Block *Storage, char *FieldPtr, /// blocks are persisted: the move function copies all inline descriptors and /// non-trivial fields, as existing pointers might need to reference those /// descriptors. Data is not copied since it cannot be legally read. -using BlockMoveFn = void (*)(Block *Storage, char *SrcFieldPtr, +using BlockMoveFn = void (*)(Block *Storage, const char *SrcFieldPtr, char *DstFieldPtr, const Descriptor *FieldDesc); /// Inline descriptor embedded in structures and arrays. _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits