diff options
author | Fei Gao <gaofei@eswincomputing.com> | 2023-09-06 09:39:08 +0000 |
---|---|---|
committer | Kito Cheng <kito.cheng@sifive.com> | 2023-09-12 09:54:40 +0800 |
commit | 66d89a43a7b6bafca1d4675744808be53ef2736f (patch) | |
tree | 100ba41ea7078c79cd81fc5cf903521a110beacd | |
parent | fb4b53d964b797e5f3380726175c95110c4ff9ff (diff) | |
download | gcc-66d89a43a7b6bafca1d4675744808be53ef2736f.zip gcc-66d89a43a7b6bafca1d4675744808be53ef2736f.tar.gz gcc-66d89a43a7b6bafca1d4675744808be53ef2736f.tar.bz2 |
Allow targets to check shrink-wrap-separate enabled or not
No functional changes but restructure and expose use_shrink_wrapping_separate
to the TARGETs.
gcc/ChangeLog:
* shrink-wrap.cc (try_shrink_wrapping_separate):call
use_shrink_wrapping_separate.
(use_shrink_wrapping_separate): wrap the condition
check in use_shrink_wrapping_separate.
* shrink-wrap.h (use_shrink_wrapping_separate): add to extern
-rw-r--r-- | gcc/shrink-wrap.cc | 22 | ||||
-rw-r--r-- | gcc/shrink-wrap.h | 1 |
2 files changed, 16 insertions, 7 deletions
diff --git a/gcc/shrink-wrap.cc b/gcc/shrink-wrap.cc index b8d7b55..28301f04 100644 --- a/gcc/shrink-wrap.cc +++ b/gcc/shrink-wrap.cc @@ -1776,16 +1776,13 @@ insert_prologue_epilogue_for_components (sbitmap components) commit_edge_insertions (); } -/* The main entry point to this subpass. FIRST_BB is where the prologue - would be normally put. */ -void -try_shrink_wrapping_separate (basic_block first_bb) +bool +use_shrink_wrapping_separate (void) { - if (!(SHRINK_WRAPPING_ENABLED - && flag_shrink_wrap_separate + if (!(SHRINK_WRAPPING_ENABLED && flag_shrink_wrap_separate && optimize_function_for_speed_p (cfun) && targetm.shrink_wrap.get_separate_components)) - return; + return false; /* We don't handle "strange" functions. */ if (cfun->calls_alloca @@ -1794,6 +1791,17 @@ try_shrink_wrapping_separate (basic_block first_bb) || crtl->calls_eh_return || crtl->has_nonlocal_goto || crtl->saves_all_registers) + return false; + + return true; +} + +/* The main entry point to this subpass. FIRST_BB is where the prologue + would be normally put. */ +void +try_shrink_wrapping_separate (basic_block first_bb) +{ + if (!use_shrink_wrapping_separate ()) return; /* Ask the target what components there are. If it returns NULL, don't diff --git a/gcc/shrink-wrap.h b/gcc/shrink-wrap.h index 1616477..82386c2 100644 --- a/gcc/shrink-wrap.h +++ b/gcc/shrink-wrap.h @@ -26,6 +26,7 @@ along with GCC; see the file COPYING3. If not see extern bool requires_stack_frame_p (rtx_insn *, HARD_REG_SET, HARD_REG_SET); extern void try_shrink_wrapping (edge *entry_edge, rtx_insn *prologue_seq); extern void try_shrink_wrapping_separate (basic_block first_bb); +extern bool use_shrink_wrapping_separate (void); #define SHRINK_WRAPPING_ENABLED \ (flag_shrink_wrap && targetm.have_simple_return ()) |