https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98265
--- Comment #5 from Jan Hubicka <hubicka at gcc dot gnu.org> ---
We do not inline CwiseNullaryOp because it uses comdat local symbols.
This is because we do split the function and the .part stays local.
At least we should recompute if function calls comdat local after comdat local
function is inlined.
IPA function summary for Eigen::Matrix<float, 3, 1> should_inline(float, float,
float, float)/2 inlinable fp_expression
global time: 36.000000
self size: 21
global size: 29
min size: 24
self stack: 16
global stack: 20
size:19.000000, time:18.500000
size:4.500000, time:3.500000, executed if:(not inlined)
calls:
operator*.isra/90 inlined
freq:1.00
Stack frame offset 16, callee self size 4
Eigen::CwiseNullaryOp< <template-parameter-1-1>, <template-parameter-1-2>
>::CwiseNullaryOp(long int, long int, Eigen::scalar_constant_op<float>) [with
<template-parameter-1-1> = Eigen::scalar_constant_op<float>; PlainObjectType =
Eigen::Matrix<float, 4, 5, 6, 4, 5>]/20 callee refers to comdat-local symbols
freq:1.00 loop depth: 0 size: 5 time: 14 callee size: 6 stack: 0
op0 is compile time invariant
op0 points to local or readonly memory
op1 is compile time invariant
op2 is compile time invariant
op2 points to local or readonly memory