sh.md (*return_i): Move trap_exit attribute check to ...

* config/sh/sh.md (*return_i): Move trap_exit attribute check to ...
	* config/sh/sh.c (sh_cfun_trap_exit_p): ... this new function.
	* config/sh/sh-protos.h: Declare it.

From-SVN: r189362
This commit is contained in:
Oleg Endo 2012-07-08 22:50:38 +00:00
parent e6d46b5a8f
commit d16202bae3
4 changed files with 17 additions and 2 deletions

View file

@ -1,3 +1,9 @@
2012-07-08 Oleg Endo <olegendo@gcc.gnu.org>
* config/sh/sh.md (*return_i): Move trap_exit attribute check to ...
* config/sh/sh.c (sh_cfun_trap_exit_p): ... this new function.
* config/sh/sh-protos.h: Declare it.
2012-07-08 Steven Bosscher <steven@gcc.gnu.org>
* mcf.c: Do not include tm.h, tree.h, and langhooks.h.

View file

@ -106,6 +106,7 @@ extern void sh_expand_binop_v2sf (enum rtx_code, rtx, rtx, rtx);
extern bool sh_expand_t_scc (rtx *);
extern rtx sh_gen_truncate (enum machine_mode, rtx, int);
extern bool sh_vector_mode_supported_p (enum machine_mode);
extern bool sh_cfun_trap_exit_p (void);
#endif /* RTX_CODE */
extern const char *output_jump_label_table (void);

View file

@ -9309,6 +9309,15 @@ sh_cfun_resbank_handler_p (void)
!= NULL_TREE) && TARGET_SH2A);
}
/* Returns true if the current function has a "trap_exit" attribute set. */
bool
sh_cfun_trap_exit_p (void)
{
return lookup_attribute ("trap_exit", DECL_ATTRIBUTES (current_function_decl))
!= NULL_TREE;
}
/* Implement TARGET_CHECK_PCH_TARGET_FLAGS. */
static const char *

View file

@ -9442,8 +9442,7 @@ label:
&& (crtl->args.info.call_cookie
& CALL_COOKIE_RET_TRAMP (1)))
&& reload_completed
&& lookup_attribute (\"trap_exit\",
DECL_ATTRIBUTES (current_function_decl)) == NULL_TREE"
&& ! sh_cfun_trap_exit_p ()"
{
if (TARGET_SH2A && (dbr_sequence_length () == 0)
&& !current_function_interrupt)