Message ID | 1429622658-9034-2-git-send-email-tbsaunde+gcc@tbsaunde.org |
---|---|
State | New |
Headers | show |
On 04/21/2015 07:24 AM, tbsaunde+gcc@tbsaunde.org wrote: > From: Trevor Saunders <tbsaunde+gcc@tbsaunde.org> > > gcc/ChangeLog: > > 2015-04-21 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> > > * defaults.h: New definition of EH_RETURN_DATA_REGNO. > * except.c: Remove definition of EH_RETURN_DATA_REGNO. > * builtins.c (expand_builtin): Remove check if > EH_RETURN_DATA_REGNO is defined. > * df-scan.c (df_bb_refs_collect): Likewise. > (df_get_exit_block_use_set): Likewise. > * haifa-sched.c (initiate_bb_reg_pressure_info): Likewise. > * ira-lives.c (process_bb_node_lives): Likewise. > * lra-lives.c (process_bb_lives): Likewise. This one wasn't as obvious as the others, but is clearly OK once the full loops being guarded by EH_RETURN_DATA_REGNO are examined. Jeff
On Tue, Apr 21, 2015 at 07:40:37AM -0600, Jeff Law wrote: > On 04/21/2015 07:24 AM, tbsaunde+gcc@tbsaunde.org wrote: > >From: Trevor Saunders <tbsaunde+gcc@tbsaunde.org> > > > >gcc/ChangeLog: > > > >2015-04-21 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> > > > > * defaults.h: New definition of EH_RETURN_DATA_REGNO. > > * except.c: Remove definition of EH_RETURN_DATA_REGNO. > > * builtins.c (expand_builtin): Remove check if > > EH_RETURN_DATA_REGNO is defined. > > * df-scan.c (df_bb_refs_collect): Likewise. > > (df_get_exit_block_use_set): Likewise. > > * haifa-sched.c (initiate_bb_reg_pressure_info): Likewise. > > * ira-lives.c (process_bb_node_lives): Likewise. > > * lra-lives.c (process_bb_lives): Likewise. > This one wasn't as obvious as the others, but is clearly OK once the full > loops being guarded by EH_RETURN_DATA_REGNO are examined. Except that the bb_has_eh_pred predicate might burn CPU time for basic blocks with many predecessors. Though, the question is if there are any important targets that don't define EH_RETURN_DATA_REGNO already. Jakub
On 04/21/2015 08:00 AM, Jakub Jelinek wrote: > On Tue, Apr 21, 2015 at 07:40:37AM -0600, Jeff Law wrote: >> On 04/21/2015 07:24 AM, tbsaunde+gcc@tbsaunde.org wrote: >>> From: Trevor Saunders <tbsaunde+gcc@tbsaunde.org> >>> >>> gcc/ChangeLog: >>> >>> 2015-04-21 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> >>> >>> * defaults.h: New definition of EH_RETURN_DATA_REGNO. >>> * except.c: Remove definition of EH_RETURN_DATA_REGNO. >>> * builtins.c (expand_builtin): Remove check if >>> EH_RETURN_DATA_REGNO is defined. >>> * df-scan.c (df_bb_refs_collect): Likewise. >>> (df_get_exit_block_use_set): Likewise. >>> * haifa-sched.c (initiate_bb_reg_pressure_info): Likewise. >>> * ira-lives.c (process_bb_node_lives): Likewise. >>> * lra-lives.c (process_bb_lives): Likewise. >> This one wasn't as obvious as the others, but is clearly OK once the full >> loops being guarded by EH_RETURN_DATA_REGNO are examined. > > Except that the bb_has_eh_pred predicate might burn CPU time for basic > blocks with many predecessors. Though, the question is if there are any > important targets that don't define EH_RETURN_DATA_REGNO already. Probably not since they'll blow up elsewhere (I was recently helping someone with a private port that didn't define EH_RETURN_DATA_REGNO) :-) jeff
diff --git a/gcc/builtins.c b/gcc/builtins.c index 9263777..028d793 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -6510,10 +6510,8 @@ expand_builtin (tree exp, rtx target, rtx subtarget, machine_mode mode, expand_builtin_eh_return (CALL_EXPR_ARG (exp, 0), CALL_EXPR_ARG (exp, 1)); return const0_rtx; -#ifdef EH_RETURN_DATA_REGNO case BUILT_IN_EH_RETURN_DATA_REGNO: return expand_builtin_eh_return_data_regno (exp); -#endif case BUILT_IN_EXTEND_POINTER: return expand_builtin_extend_pointer (CALL_EXPR_ARG (exp, 0)); case BUILT_IN_EH_POINTER: diff --git a/gcc/defaults.h b/gcc/defaults.h index 1d54798..911c2f8 100644 --- a/gcc/defaults.h +++ b/gcc/defaults.h @@ -377,6 +377,12 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see #endif #endif +/* Provide defaults for stuff that may not be defined when using + sjlj exceptions. */ +#ifndef EH_RETURN_DATA_REGNO +#define EH_RETURN_DATA_REGNO(N) INVALID_REGNUM +#endif + /* If we have named section and we support weak symbols, then use the .jcr section for recording java classes which need to be registered at program start-up time. */ diff --git a/gcc/df-scan.c b/gcc/df-scan.c index 1700be9..b2e2e5d 100644 --- a/gcc/df-scan.c +++ b/gcc/df-scan.c @@ -3332,7 +3332,6 @@ df_bb_refs_collect (struct df_collection_rec *collection_rec, basic_block bb) return; } -#ifdef EH_RETURN_DATA_REGNO if (bb_has_eh_pred (bb)) { unsigned int i; @@ -3346,7 +3345,6 @@ df_bb_refs_collect (struct df_collection_rec *collection_rec, basic_block bb) bb, NULL, DF_REF_REG_DEF, DF_REF_AT_TOP); } } -#endif /* Add the hard_frame_pointer if this block is the target of a non-local goto. */ @@ -3751,7 +3749,6 @@ df_get_exit_block_use_set (bitmap exit_block_uses) bitmap_set_bit (exit_block_uses, i); } -#ifdef EH_RETURN_DATA_REGNO /* Mark the registers that will contain data for the handler. */ if (reload_completed && crtl->calls_eh_return) for (i = 0; ; ++i) @@ -3761,7 +3758,6 @@ df_get_exit_block_use_set (bitmap exit_block_uses) break; bitmap_set_bit (exit_block_uses, regno); } -#endif #ifdef EH_RETURN_STACKADJ_RTX if ((!HAVE_epilogue || ! epilogue_completed) diff --git a/gcc/except.c b/gcc/except.c index 833ec21..7573c88 100644 --- a/gcc/except.c +++ b/gcc/except.c @@ -174,12 +174,6 @@ along with GCC; see the file COPYING3. If not see #include "cfgloop.h" #include "builtins.h" -/* Provide defaults for stuff that may not be defined when using - sjlj exceptions. */ -#ifndef EH_RETURN_DATA_REGNO -#define EH_RETURN_DATA_REGNO(N) INVALID_REGNUM -#endif - static GTY(()) int call_site_base; struct tree_hash_traits : default_hashmap_traits diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c index ad2450b..d47cb8c 100644 --- a/gcc/haifa-sched.c +++ b/gcc/haifa-sched.c @@ -1070,7 +1070,6 @@ initiate_bb_reg_pressure_info (basic_block bb) if (NONDEBUG_INSN_P (insn)) setup_ref_regs (PATTERN (insn)); initiate_reg_pressure_info (df_get_live_in (bb)); -#ifdef EH_RETURN_DATA_REGNO if (bb_has_eh_pred (bb)) for (i = 0; ; ++i) { @@ -1082,7 +1081,6 @@ initiate_bb_reg_pressure_info (basic_block bb) mark_regno_birth_or_death (curr_reg_live, curr_reg_pressure, regno, true); } -#endif } /* Save current register pressure related info. */ diff --git a/gcc/ira-lives.c b/gcc/ira-lives.c index b29f572..2837349 100644 --- a/gcc/ira-lives.c +++ b/gcc/ira-lives.c @@ -1319,7 +1319,6 @@ process_bb_node_lives (ira_loop_tree_node_t loop_tree_node) curr_point++; } -#ifdef EH_RETURN_DATA_REGNO if (bb_has_eh_pred (bb)) for (j = 0; ; ++j) { @@ -1328,7 +1327,6 @@ process_bb_node_lives (ira_loop_tree_node_t loop_tree_node) break; make_hard_regno_born (regno); } -#endif /* Allocnos can't go in stack regs at the start of a basic block that is reached by an abnormal edge. Likewise for call diff --git a/gcc/lra-lives.c b/gcc/lra-lives.c index 9dfffb6..47a9ba2 100644 --- a/gcc/lra-lives.c +++ b/gcc/lra-lives.c @@ -954,7 +954,6 @@ process_bb_lives (basic_block bb, int &curr_point, bool dead_insn_p) add_reg_note (curr_insn, REG_UNUSED, regno_reg_rtx[j]); } -#ifdef EH_RETURN_DATA_REGNO if (bb_has_eh_pred (bb)) for (j = 0; ; ++j) { @@ -964,7 +963,6 @@ process_bb_lives (basic_block bb, int &curr_point, bool dead_insn_p) break; make_hard_regno_born (regno, false); } -#endif /* Pseudos can't go in stack regs at the start of a basic block that is reached by an abnormal edge. Likewise for call clobbered regs,
From: Trevor Saunders <tbsaunde+gcc@tbsaunde.org> gcc/ChangeLog: 2015-04-21 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> * defaults.h: New definition of EH_RETURN_DATA_REGNO. * except.c: Remove definition of EH_RETURN_DATA_REGNO. * builtins.c (expand_builtin): Remove check if EH_RETURN_DATA_REGNO is defined. * df-scan.c (df_bb_refs_collect): Likewise. (df_get_exit_block_use_set): Likewise. * haifa-sched.c (initiate_bb_reg_pressure_info): Likewise. * ira-lives.c (process_bb_node_lives): Likewise. * lra-lives.c (process_bb_lives): Likewise. --- gcc/builtins.c | 2 -- gcc/defaults.h | 6 ++++++ gcc/df-scan.c | 4 ---- gcc/except.c | 6 ------ gcc/haifa-sched.c | 2 -- gcc/ira-lives.c | 2 -- gcc/lra-lives.c | 2 -- 7 files changed, 6 insertions(+), 18 deletions(-)