diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2023-10-17 23:45:43 +0100 |
---|---|---|
committer | Richard Sandiford <richard.sandiford@arm.com> | 2023-10-17 23:45:43 +0100 |
commit | aeb3f0436f8ae84e593eda9641fe4e6fdf0afb3e (patch) | |
tree | 884b646cf720144c0767d6ca90c65bbca772ebcf /libcpp/charset.cc | |
parent | 5e4abf4233cd34212680cca700d6438445e6a16a (diff) | |
download | gcc-aeb3f0436f8ae84e593eda9641fe4e6fdf0afb3e.zip gcc-aeb3f0436f8ae84e593eda9641fe4e6fdf0afb3e.tar.gz gcc-aeb3f0436f8ae84e593eda9641fe4e6fdf0afb3e.tar.bz2 |
Handle epilogues that contain jumps
The prologue/epilogue pass allows the prologue sequence to contain
jumps. The sequence is then partitioned into basic blocks using
find_many_sub_basic_blocks.
This patch treats epilogues in a similar way. Since only one block
might need to be split, the patch (re)introduces a find_sub_basic_blocks
routine to handle a single block.
The new routine hard-codes the assumption that split_block will chain
the new block immediately after the original block. The routine doesn't
try to replicate the fix for PR81030, since that was specific to
gimple->rtl expansion.
The patch is needed for follow-on aarch64 patches that add conditional
code to the epilogue. The tests are part of those patches.
gcc/
* cfgbuild.h (find_sub_basic_blocks): Declare.
* cfgbuild.cc (update_profile_for_new_sub_basic_block): New function,
split out from...
(find_many_sub_basic_blocks): ...here.
(find_sub_basic_blocks): New function.
* function.cc (thread_prologue_and_epilogue_insns): Handle
epilogues that contain jumps.
Diffstat (limited to 'libcpp/charset.cc')
0 files changed, 0 insertions, 0 deletions