diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2023-10-25 10:39:52 +0100 |
---|---|---|
committer | Richard Sandiford <richard.sandiford@arm.com> | 2023-10-25 10:39:52 +0100 |
commit | cc15a0f49d3c4d37d5177572d4209e907d1503ab (patch) | |
tree | a5a4dafb8df559807756c0706bbfce60fe81cc57 /gcc/value-range.h | |
parent | ba97d0e3b9660e2499b9f2500a2d837cfb9cc184 (diff) | |
download | gcc-cc15a0f49d3c4d37d5177572d4209e907d1503ab.zip gcc-cc15a0f49d3c4d37d5177572d4209e907d1503ab.tar.gz gcc-cc15a0f49d3c4d37d5177572d4209e907d1503ab.tar.bz2 |
rtl-ssa: Handle call clobbers in more places
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.
Diffstat (limited to 'gcc/value-range.h')
0 files changed, 0 insertions, 0 deletions