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

            Bug ID: 102059
           Summary: Incorrect always_inline diagnostic in LTO mode with
                    #pragma GCC target("cpu=power10")
           Product: gcc
           Version: 11.2.1
            Status: UNCONFIRMED
          Keywords: diagnostic, rejects-valid
          Severity: normal
          Priority: P3
         Component: lto
          Assignee: unassigned at gcc dot gnu.org
          Reporter: fw at gcc dot gnu.org
                CC: marxin at gcc dot gnu.org
  Target Milestone: ---
            Target: ppc64le-redhat-linux

Created attachment 51354
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=51354&action=edit
basic_op.ii.xz

To reproduce, compile the attached file with:

g++ -c -O2 -flto -mcpu=power8 basic_op.ii

In file included from
/usr/include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProduct.h:18,
                 from /usr/include/eigen3/Eigen/Core:350,
                 from /builddir/build/BUILD/gdl-1.0.0/src/includefirst.hpp:49,
                 from /builddir/build/BUILD/gdl-1.0.0/src/basegdl.hpp:21,
                 from /builddir/build/BUILD/gdl-1.0.0/src/nullgdl.hpp:21,
                 from /builddir/build/BUILD/gdl-1.0.0/src/basic_op.cpp:27:
/usr/include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h: In function 
 Eigen::internal::ploadRhsMMA<float, float __vector(4)>(float const*, float
__vector(4)&)void’:
/usr/include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h:215:46:
error: inlining failed in call to ‘always_inline’
‘Eigen::internal::ploadRhs<float, float __vector(4)>(float const*)float
__vector(4)’: target specific option mismatch
  215 | EIGEN_ALWAYS_INLINE Packet ploadRhs(const Scalar* rhs)
      |                                              ^~~~~~~~
In file included from
/usr/include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProduct.h:38,
                 from /usr/include/eigen3/Eigen/Core:350,
                 from /builddir/build/BUILD/gdl-1.0.0/src/includefirst.hpp:49,
                 from /builddir/build/BUILD/gdl-1.0.0/src/basegdl.hpp:21,
                 from /builddir/build/BUILD/gdl-1.0.0/src/nullgdl.hpp:21,
                 from /builddir/build/BUILD/gdl-1.0.0/src/basic_op.cpp:27:
/usr/include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h:128:34:
note: called from here
  128 |   rhsV = ploadRhs<Scalar, Packet>((const Scalar*)(rhs));
      |          ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~


The reproducer is minimally reduced code from gdl (GNU Data Language) which
uses the Eigen library.

The error does not happen if -flto is removed.

Reply via email to