https://gcc.gnu.org/g:98237ff9aad0ee1ae13dc27d6b3b7c2cc0eb9acd
commit r16-9118-g98237ff9aad0ee1ae13dc27d6b3b7c2cc0eb9acd Author: Andrew Pinski <[email protected]> Date: Tue Jun 9 18:12:52 2026 -0700 ipa: Fix lifetime issue with hash_map::put in prepare_debug_expressions [PR125699] Here the code was originally: tree *d = m_dead_ssa_debug_equiv.get (value); m_dead_ssa_debug_equiv.put (dead_ssa, *d); but hash_map::put's 2nd argument is a reference. So if the hashmap decides it needs to resize, the argument is freed. So the fix is simple change the type of d to tree and dereference the get. Since tree is a pointer there is not enough data to care about the extra copy. r12-5630-gb3f60112edcb85 was a similar fix in the same function in fact. Pushed as obvious after a bootstrapped and tested on x86_64-linux-gnu. PR ipa/125699 gcc/ChangeLog: * ipa-param-manipulation.cc (ipa_param_body_adjustments::prepare_debug_expressions): Fix lifetime issue with m_dead_ssa_debug_equiv usage. Signed-off-by: Andrew Pinski <[email protected]> (cherry picked from commit 225fb1e771972091445019f490b9a487b8b821fb) Diff: --- gcc/ipa-param-manipulation.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gcc/ipa-param-manipulation.cc b/gcc/ipa-param-manipulation.cc index 024db825977a..d86d2e32a605 100644 --- a/gcc/ipa-param-manipulation.cc +++ b/gcc/ipa-param-manipulation.cc @@ -1386,8 +1386,8 @@ ipa_param_body_adjustments::prepare_debug_expressions (tree dead_ssa) } gcc_assert (TREE_CODE (value) == SSA_NAME); - tree *d = m_dead_ssa_debug_equiv.get (value); - m_dead_ssa_debug_equiv.put (dead_ssa, *d); + tree d = *m_dead_ssa_debug_equiv.get (value); + m_dead_ssa_debug_equiv.put (dead_ssa, d); return true; }
