On 10/24/23 04:50, Richard Sandiford wrote:
In order to save (a lot of) memory, RTL-SSA avoids creating
individual clobber records for every call-clobbered register.
It instead maintains a list & splay tree of calls in an EBB,
grouped by ABI.

This patch takes these call clobbers into account in a couple
more routines.  I don't think this will have any effect on
existing users, since it's only necessary for hard registers.

gcc/
        * rtl-ssa/access-utils.h (next_call_clobbers): New function.
        (is_single_dominating_def, remains_available_on_exit): Replace with...
        * rtl-ssa/functions.h (function_info::is_single_dominating_def)
        (function_info::remains_available_on_exit): ...these new member
        functions.
        (function_info::m_clobbered_by_calls): New member variable.
        * rtl-ssa/functions.cc (function_info::function_info): Explicitly
        initialize m_clobbered_by_calls.
        * rtl-ssa/insns.cc (function_info::record_call_clobbers): Update
        m_clobbered_by_calls for each call-clobber note.
        * rtl-ssa/member-fns.inl (function_info::is_single_dominating_def):
        New function.  Check for call clobbers.
        * rtl-ssa/accesses.cc (function_info::remains_available_on_exit):
        Likewise.
OK
jeff
---

Reply via email to