Re: How to diagnose inlining failure?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Henrik Mannerström <henrik.mannerstrom@xxxxxxxxx> writes:

> Ian Lance Taylor wrote:
>>> I get the following warning from the compiler:
>>>
>>> header.h:10: warning: inlining failed in call to ‘double hill(double,
>>> double, double)’: call is unlikely and code size would grow
>>>
>>> I know that the "--param" option has many variables controlling inlining
>>> but I don't know which ones to change. Can I get some kind of diagnostic
>>> of the specific decision the compiler makes when not inlining?
>> To my eyes, that is the diagnostic right there: "the call is unlikely
>> and code size would grow."  What kind of diagnostic are you looking for?
> I tried the following:
>
> -finline-limit=100000 --param large-function-growth=100000 --param
> inline-unit-growth=100000 ,
>
> but the messages did not go away. I have organized my code in small
> functions but I wish the compiler would flatten most of it to avoid
> function call overhead (when it is reasonable). The function in question
> is called in three places from a function that is called only from one
> place, inside a function that is called in two main loops. I hoped the
> compiler might be able to tell me something like "inlining function X
> would result in code growth Y%, which is prohibited by parameter Z".

I see.  A call that is unlikely and would cause code size to grow is
never a good choice for inlining.  Adjusting parameters isn't going to
change that.

You may want to look at the always_inline and flatten function
attributes.

Ian



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux