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