https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125699

--- Comment #10 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-16 branch has been updated by Andrew Pinski
<[email protected]>:

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)

Reply via email to