Hello, The recent change that removed the inclusion of tree.h in several places broke the SH target in one place in sh.md, where stuff from tree.h was used directly. I've moved those lines in question into a new function in sh.c. Tested with make all-gcc.
OK to install? Cheers, Oleg ChangeLog: * 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.
Index: gcc/config/sh/sh-protos.h =================================================================== --- gcc/config/sh/sh-protos.h (revision 189359) +++ gcc/config/sh/sh-protos.h (working copy) @@ -106,6 +106,7 @@ 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); Index: gcc/config/sh/sh.c =================================================================== --- gcc/config/sh/sh.c (revision 189359) +++ gcc/config/sh/sh.c (working copy) @@ -9309,6 +9309,15 @@ != 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 * Index: gcc/config/sh/sh.md =================================================================== --- gcc/config/sh/sh.md (revision 189360) +++ gcc/config/sh/sh.md (working copy) @@ -9442,8 +9442,7 @@ && (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)