Author: Timm Baeder
Date: 2025-08-08T14:57:38+02:00
New Revision: 8d26252eece6510e62cc657d3e8b2cdcc97bdbea

URL: 
https://github.com/llvm/llvm-project/commit/8d26252eece6510e62cc657d3e8b2cdcc97bdbea
DIFF: 
https://github.com/llvm/llvm-project/commit/8d26252eece6510e62cc657d3e8b2cdcc97bdbea.diff

LOG: [clang][bytecode][NFC] Dead blocks are always uninitialized (#152699)

We always call the descriptor dtor before, so they are never
initialized.

Added: 
    

Modified: 
    clang/lib/AST/ByteCode/InterpBlock.cpp
    clang/lib/AST/ByteCode/InterpState.cpp

Removed: 
    


################################################################################
diff  --git a/clang/lib/AST/ByteCode/InterpBlock.cpp 
b/clang/lib/AST/ByteCode/InterpBlock.cpp
index b0e048bc867e9..8b7f6a750040b 100644
--- a/clang/lib/AST/ByteCode/InterpBlock.cpp
+++ b/clang/lib/AST/ByteCode/InterpBlock.cpp
@@ -133,8 +133,7 @@ DeadBlock::DeadBlock(DeadBlock *&Root, Block *Blk)
 }
 
 void DeadBlock::free() {
-  if (B.IsInitialized)
-    B.invokeDtor();
+  assert(!B.isInitialized());
 
   if (Prev)
     Prev->Next = Next;

diff  --git a/clang/lib/AST/ByteCode/InterpState.cpp 
b/clang/lib/AST/ByteCode/InterpState.cpp
index f7f03e593301f..5593531bdabe3 100644
--- a/clang/lib/AST/ByteCode/InterpState.cpp
+++ b/clang/lib/AST/ByteCode/InterpState.cpp
@@ -85,6 +85,7 @@ void InterpState::deallocate(Block *B) {
   if (B->IsInitialized)
     B->invokeDtor();
 
+  assert(!B->isInitialized());
   if (B->hasPointers()) {
     size_t Size = B->getSize();
     // Allocate a new block, transferring over pointers.
@@ -94,10 +95,7 @@ void InterpState::deallocate(Block *B) {
     // Since the block doesn't hold any actual data anymore, we can just
     // memcpy() everything over.
     std::memcpy(D->rawData(), B->rawData(), B->getSize());
-    D->B.IsInitialized = B->IsInitialized;
-
-    // We moved the contents over to the DeadBlock.
-    B->IsInitialized = false;
+    D->B.IsInitialized = false;
   }
 }
 


        
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to