[clang] 6e547ce - [clang][Interp][NFC] Add const InterpBlock::deref() overload

Timm Bäder via cfe-commits cfe-commits at lists.llvm.org
Mon Nov 20 08:53:39 PST 2023


Author: Timm Bäder
Date: 2023-11-20T17:53:30+01:00
New Revision: 6e547ce1c072f6f086a4f44fb8168df23413f597

URL: https://github.com/llvm/llvm-project/commit/6e547ce1c072f6f086a4f44fb8168df23413f597
DIFF: https://github.com/llvm/llvm-project/commit/6e547ce1c072f6f086a4f44fb8168df23413f597.diff

LOG: [clang][Interp][NFC] Add const InterpBlock::deref() overload

Added: 
    

Modified: 
    clang/lib/AST/Interp/Interp.h
    clang/lib/AST/Interp/InterpBlock.h

Removed: 
    


################################################################################
diff  --git a/clang/lib/AST/Interp/Interp.h b/clang/lib/AST/Interp/Interp.h
index 64b376e101c8720..4f7778bdd2ff333 100644
--- a/clang/lib/AST/Interp/Interp.h
+++ b/clang/lib/AST/Interp/Interp.h
@@ -1004,7 +1004,7 @@ bool SetThisField(InterpState &S, CodePtr OpPC, uint32_t I) {
 
 template <PrimType Name, class T = typename PrimConv<Name>::T>
 bool GetGlobal(InterpState &S, CodePtr OpPC, uint32_t I) {
-  auto *B = S.P.getGlobal(I);
+  const Block *B = S.P.getGlobal(I);
   if (B->isExtern())
     return false;
   S.Stk.push<T>(B->deref<T>());

diff  --git a/clang/lib/AST/Interp/InterpBlock.h b/clang/lib/AST/Interp/InterpBlock.h
index 9d0c4859fd06c15..9db82567d2d5d63 100644
--- a/clang/lib/AST/Interp/InterpBlock.h
+++ b/clang/lib/AST/Interp/InterpBlock.h
@@ -98,6 +98,9 @@ class Block final {
   /// Returns a view over the data.
   template <typename T>
   T &deref() { return *reinterpret_cast<T *>(data()); }
+  template <typename T> const T &deref() const {
+    return *reinterpret_cast<const T *>(data());
+  }
 
   /// Invokes the constructor.
   void invokeCtor() {


        


More information about the cfe-commits mailing list