[clang] e69448b - [clang][Interp][NFC] Make Src parameter for move functions const

Timm Bäder via cfe-commits cfe-commits at lists.llvm.org
Mon Jun 5 04:20:52 PDT 2023


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.


        


More information about the cfe-commits mailing list