https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82012
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2017-08-29 CC| |rguenth at gcc dot gnu.org Component|libitm |target Version|7.0 |8.0 Target Milestone|--- |8.0 Ever confirmed|0 |1 --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- __attribute__((always_inline)) __int_type fetch_add(__int_type __i, memory_order __m = memory_order_seq_cst) noexcept { return __atomic_fetch_add(&_M_i, __i, __m); } ... __attribute__ ((target("soft-float"))) uint32_t GTM::gtm_thread::begin_transaction (uint32_t prop, const gtm_jmpbuf *jb) { ... so a simpler testcase would be likely (untested) inline int __attribute__((always_inline)) foo () { return 0; } int __attribute__((target("soft-float"))) test () { return foo (); } s390 misses to implement TARGET_CAN_INLINE_P. The change 2017-08-24 Richard Biener <rguent...@suse.de> PR target/81921 * targhooks.c (default_target_can_inline_p): Properly use target_option_default_node when no DECL_FUNCTION_SPECIFIC_TARGET is present and always compare. exposed this as it makes the default hook implementation conservatively correct as opposed to optimistically broken. I would argue all targets that implements TARGET_OPTION_VALID_ATTRIBUTE_P needs to implement this hook.