From 9b8ae254913be85bed15da64acfe22ae0d59c740 Mon Sep 17 00:00:00 2001 From: LC Date: Mon, 13 Jul 2026 08:00:22 -0400 Subject: [PATCH] Common/BitSet: Amend byte size retrieval This needs to divide by 8 to get a proper byte size for all type sizes. The only usage of this is currently a uint64_t, so it worked by coincidence, since sizeof(uint64_t) == 8. --- FEXCore/Source/Common/BitSet.h | 12 ++++++------ FEXCore/Source/Interface/IR/Passes/IRValidation.cpp | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/FEXCore/Source/Common/BitSet.h b/FEXCore/Source/Common/BitSet.h index e7e306514..c8c417b0a 100644 --- a/FEXCore/Source/Common/BitSet.h +++ b/FEXCore/Source/Common/BitSet.h @@ -50,8 +50,8 @@ struct BitSet final { memset(Memory, 0xFF, ToBytes(Elements)); } [[nodiscard]] - uint32_t ToBytes(size_t Elements) const { - return AlignUp(Elements, MinimumSizeBits) / MinimumSize; + static size_t ToBytes(size_t Elements) { + return AlignUp(Elements, MinimumSizeBits) / 8; } // This very explicitly doesn't let you take an address @@ -65,8 +65,8 @@ struct BitSet final { template struct BitSetView final { using ElementType = T; - constexpr static size_t MinimumSize = sizeof(ElementType); - constexpr static size_t MinimumSizeBits = sizeof(ElementType) * 8; + constexpr static size_t MinimumSize = BitSet::MinimumSize; + constexpr static size_t MinimumSizeBits = BitSet::MinimumSizeBits; ElementType* Memory {}; @@ -86,10 +86,10 @@ struct BitSetView final { Memory[Element / MinimumSizeBits] &= ~(1ULL << (Element % MinimumSizeBits)); } void MemClear(size_t Elements) { - memset(Memory, 0, AlignUp(Elements / MinimumSizeBits, MinimumSizeBits)); + memset(Memory, 0, BitSet::ToBytes(Elements)); } void MemSet(size_t Elements) { - memset(Memory, 0xFF, AlignUp(Elements / MinimumSizeBits, MinimumSizeBits)); + memset(Memory, 0xFF, BitSet::ToBytes(Elements)); } // This very explicitly doesn't let you take an address diff --git a/FEXCore/Source/Interface/IR/Passes/IRValidation.cpp b/FEXCore/Source/Interface/IR/Passes/IRValidation.cpp index be1ac861e..1d32618f5 100644 --- a/FEXCore/Source/Interface/IR/Passes/IRValidation.cpp +++ b/FEXCore/Source/Interface/IR/Passes/IRValidation.cpp @@ -46,7 +46,7 @@ void IRValidation::Run(IREmitter* IREmit) { OffsetToBlockMap.clear(); EntryBlock = nullptr; - uint32_t Count = CurrentIR.GetSSACount(); + const auto Count = CurrentIR.GetSSACount(); if (Count > MaxNodes) { NodeIsLive.Realloc(Count); }