https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115403

--- Comment #2 from Sergei Trofimovich <slyfox at gcc dot gnu.org> ---
`cvise` came up with this example:

    //$ cat float_test.cc.cc
    template <typename> __attribute__((always_inline)) inline void
AssertEqual() {}
    void TestAllF16FromF32() { AssertEqual<float>(); }
    #pragma GCC target "sse4.1"

Looks valid?

gcc-14 can handle it, gcc-15 can't:

$ g++-14 -O2 -std=c++17 -c float_test.cc.cc

$ g++-15 -O2 -std=c++17 -c float_test.cc.cc
float_test.cc.cc: In function 'void TestAllF16FromF32()':
float_test.cc.cc:1:64: error: inlining failed in call to 'always_inline' 'void
AssertEqual() [with <template-parameter-1-1> = float]': target specific option
mismatch
    1 | template <typename> __attribute__((always_inline)) inline void
AssertEqual() {}
      |                                                               
^~~~~~~~~~~
float_test.cc.cc:2:46: note: called from here
    2 | void TestAllF16FromF32() { AssertEqual<float>(); }
      |                            ~~~~~~~~~~~~~~~~~~^~

Reply via email to