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.