aboutsummaryrefslogtreecommitdiff
path: root/COPYING3.LIB
diff options
context:
space:
mode:
authorSegher Boessenkool <segher@kernel.crashing.org>2016-11-29 03:19:04 +0100
committerSegher Boessenkool <segher@gcc.gnu.org>2016-11-29 03:19:04 +0100
commit08dd2b683f98c6a721329f02f16a9a815a143f48 (patch)
treeca3c425636e87de9510053dab45590b1ad003c86 /COPYING3.LIB
parenta001d4f9b912362c78e38ba3ea6aeddaa97f8eb8 (diff)
downloadgcc-08dd2b683f98c6a721329f02f16a9a815a143f48.zip
gcc-08dd2b683f98c6a721329f02f16a9a815a143f48.tar.gz
gcc-08dd2b683f98c6a721329f02f16a9a815a143f48.tar.bz2
shrink-wrap: New spread_components
This patch changes spread_components to use a simpler algorithm that puts prologue components as early as possible, and epilogue components as late as possible. This allows better scheduling, and also saves a bit of code size. The blocks that run with some specific component enabled after this patch is a strict superset of those that had it before the patch. It does this by finding for every component the basic blocks where that component is not needed on some path from the entry block (it reuses head_components to store this), and similarly the blocks where the component is not needed on some path to the exit block (or the exit can not be reached from that block) (stored in tail_components). Blocks that then are not in both of those two sets get the component active. * shrink-wrap.c (init_separate_shrink_wrap): Do not clear head_components and tail_components. (spread_components): New algorithm. (emit_common_tails_for_components): Clear head_components and tail_components. (insert_prologue_epilogue_for_components): Write extra output to the dump file for sibcalls and abnormal exits. From-SVN: r242948
Diffstat (limited to 'COPYING3.LIB')
0 files changed, 0 insertions, 0 deletions