On 2006-01-22, at 04:35, Andrew Pinski wrote:

OK. Looking closer I have just found that in gcc/toplev.c

#if GCC_VERSION < 3004
...
#endif

Is missing around the floor_log2() and exact_log2() functions.

You are mssing the fact that the ones in the headers are declared
as extern inline.

Yes I saw them. However pease look at the if else endif guards in the
header.
extern inline is just supposed to guarantee that a copy
of the function will be spawn out to an .o file when it's seen. Right?
The variant in toplev.c will be of course generated as well. And then
it's just link order roulette which one of them will be used...

No.  This is GCC "extern inline" and not C99 "extern inline".  GCC's
"extern inline" means inline if you can but if we don't inline, use the
external version and don't emit the function in the .o.

It is my understanding that this interpretation applies only to old versions of it. Which is precisely what the proposed if/endif is guarding against.

Reply via email to