This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
LTO and C99 inline functions broken (was: Type-generic macros with C)
- From: Jörg Leis <joerg at joergleis dot com>
- To: Ian Lance Taylor <iant at google dot com>
- Cc: gcc-help at gcc dot gnu dot org
- Date: Sat, 10 Jul 2010 12:54:04 +0200
- Subject: LTO and C99 inline functions broken (was: Type-generic macros with C)
- References: <1272643259.4438.39.camel@maria> <mcrljc4onal.fsf@dhcp-172-17-9-151.mtv.corp.google.com> <1272657309.4438.50.camel@maria> <mcr4oisod3q.fsf@dhcp-172-17-9-151.mtv.corp.google.com> <1272701167.4212.8.camel@maria> <mcr39ybmu81.fsf@dhcp-172-17-9-151.mtv.corp.google.com>
On Sat, 2010-05-01 at 10:01 -0700, Ian Lance Taylor wrote:
> JÃrg Leis <joerg@joergleis.com> writes:
>
> > A related question: Is it expected that in C99-mode GCC might not be
> > able to compile a program because of the use of an inline function? I
> > defined an inline function like this:
> >
> > inline int do()
> > {
> > // ...
> > }
>
> C99 mode should support inline functions just fine. If you are having
> trouble, show us the complete test case and tell us what happens.
> Also the version of gcc makes a difference; full support for C99
> inline functions was first in gcc 4.3.
>
> Ian
The problem seemed to have gone for a while, but I have a test case now:
inline int f()
{
return 5;
}
extern inline int f();
With
gcc -std=c99 -c test.c
it compiles just fine and emits the an externally callable definition
of f. However, with LTO,
gcc -std=c99 -flto -c test.c
the function f is not emitted. The GCC version is "gcc (GCC) 4.5.0
20100610 (prerelease)".
JÃrg