From 357e9c16d92776c4083cc5c5201f9e4f33cb834a Mon Sep 17 00:00:00 2001 From: Braden Ganetsky Date: Thu, 7 Aug 2025 22:37:15 -0500 Subject: [PATCH] Fix pretty-printers not working when constexpr variables are optimized away --- extra/boost_unordered_printers.py | 8 ++++---- include/boost/unordered/unordered_printers.hpp | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/extra/boost_unordered_printers.py b/extra/boost_unordered_printers.py index 5185f03b..f9d95ccc 100644 --- a/extra/boost_unordered_printers.py +++ b/extra/boost_unordered_printers.py @@ -1,4 +1,4 @@ -# Copyright 2024 Braden Ganetsky +# Copyright 2024-2025 Braden Ganetsky # Distributed under the Boost Software License, Version 1.0. # https://www.boost.org/LICENSE_1_0.txt @@ -191,8 +191,8 @@ class BoostUnorderedFoaPrinter: m = group["m"] at = lambda b: BoostUnorderedHelpers.maybe_unwrap_atomic(m[b]["n"]) - N = group["N"] - sentinel_ = group["sentinel_"] + N = 15 # `group["N"]` may be optimized out + sentinel_ = 1 # `group["sentinel_"]` may be optimized out if self.is_regular_layout(group): return pos == N-1 and at(N-1) == sentinel_ else: @@ -234,7 +234,7 @@ class BoostUnorderedFoaPrinter: mask = (self.match_occupied(pc_.cast(groups.type).dereference()) >> (n0+1)) << (n0+1) while mask == 0: pc_ = self.cpo.next(pc_, groups.dereference().type.sizeof) - p_ = self.cpo.next(p_, groups.dereference()["N"]) + p_ = self.cpo.next(p_, 15) # Use 15 because `groups.dereference()["N"]` may be optimized out mask = self.match_occupied(pc_.cast(groups.type).dereference()) n = BoostUnorderedHelpers.countr_zero(mask) diff --git a/include/boost/unordered/unordered_printers.hpp b/include/boost/unordered/unordered_printers.hpp index a7d0d137..2e489d0a 100644 --- a/include/boost/unordered/unordered_printers.hpp +++ b/include/boost/unordered/unordered_printers.hpp @@ -1,8 +1,8 @@ -// Copyright 2024 Braden Ganetsky +// Copyright 2024-2025 Braden Ganetsky // Distributed under the Boost Software License, Version 1.0. // https://www.boost.org/LICENSE_1_0.txt -// Generated on 2024-08-25T17:48:54 +// Generated on 2025-08-08T03:34:52 #ifndef BOOST_UNORDERED_UNORDERED_PRINTERS_HPP #define BOOST_UNORDERED_UNORDERED_PRINTERS_HPP @@ -204,8 +204,8 @@ __asm__(".pushsection \".debug_gdb_scripts\", \"MS\",%progbits,1\n" ".ascii \" m = group[\\\"m\\\"]\\n\"\n" ".ascii \" at = lambda b: BoostUnorderedHelpers.maybe_unwrap_atomic(m[b][\\\"n\\\"])\\n\"\n" - ".ascii \" N = group[\\\"N\\\"]\\n\"\n" - ".ascii \" sentinel_ = group[\\\"sentinel_\\\"]\\n\"\n" + ".ascii \" N = 15 # `group[\\\"N\\\"]` may be optimized out\\n\"\n" + ".ascii \" sentinel_ = 1 # `group[\\\"sentinel_\\\"]` may be optimized out\\n\"\n" ".ascii \" if self.is_regular_layout(group):\\n\"\n" ".ascii \" return pos == N-1 and at(N-1) == sentinel_\\n\"\n" ".ascii \" else:\\n\"\n" @@ -247,7 +247,7 @@ __asm__(".pushsection \".debug_gdb_scripts\", \"MS\",%progbits,1\n" ".ascii \" mask = (self.match_occupied(pc_.cast(groups.type).dereference()) >> (n0+1)) << (n0+1)\\n\"\n" ".ascii \" while mask == 0:\\n\"\n" ".ascii \" pc_ = self.cpo.next(pc_, groups.dereference().type.sizeof)\\n\"\n" - ".ascii \" p_ = self.cpo.next(p_, groups.dereference()[\\\"N\\\"])\\n\"\n" + ".ascii \" p_ = self.cpo.next(p_, 15) # Use 15 because `groups.dereference()[\\\"N\\\"]` may be optimized out\\n\"\n" ".ascii \" mask = self.match_occupied(pc_.cast(groups.type).dereference())\\n\"\n" ".ascii \" n = BoostUnorderedHelpers.countr_zero(mask)\\n\"\n"