[Bug target/82012] [8 Regression] libitm build fails for s390x-linux-gnu

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Aug 29 08:26:00 GMT 2017


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  <rguenther@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.


More information about the Gcc-bugs mailing list