This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: RFC: always-inline vs unit-at-a-time


Dale Johannesen <dalej@apple.com> writes:

> Consider the following:
>
> static inline int a() __attribute((always_inline));
> static inline int b() __attribute((always_inline));
>
> static inline int b() { a(); }
> static inline int a() { }
> int c() { b(); }
>
> This compiles fine at -O2.  At -O0 we get the baffling error
>    sorry, unimplemented: inlining failed in call to 'a': function not
>    considered for inlining
>
> It seems undesirable for -O options to affect which programs will
> compile.

Agreed.  Perhaps we should run the inliner at -O0 if we see
always_inline attributes, just for those functions?  I think this
could be done without turning on -funit-at-a-time, even (the inliner
does work in -O2 -fno-unit-at-a-time mode, after all).

> The obvious thing to do about it is turn on -funit-at-a-time always,
> but I'm concerned about the effect on compile speed; has anybody
> measured it?

The problem is not the effect on compile speed (IIRC Honza had it down
to negligible) but the way it breaks assembly hacks such as crtstuff.c.
(I would love to see a solution to that.)

zw


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]