[Sarah Hoffmann]
On Fri, 1 Aug 2003, Michael Hohmuth wrote:
Sarah Hoffmann sh18@os.inf.tu-dresden.de writes:
Preprocess output is fine. The problem lies in how gcc 2.95.3 handles inlined member functions. Obviously they are automaticly 'inline extern' so if the function can't be inlined there is still no code generated. With the standard gcc 2.95.3 this was not a problem because it always respects the inline directive. SuSEs gcc is a bit more picky and refuses to inline some functions because they are too big.
Actually, the old gcc version is behaving correctly in this sense. If you specify 'extern inline' the function will *only* be used for inlining, even if you make an explicit address reference to it. Such address references become external references. If the compiler handles such usage the way you "expect it" it is only by accident (the gcc documentation clearly says that it shouldn't work this way), and the corresponding code should be fixed.
The functions are marked just 'inline' but _behave_ like they had been declared 'extern inline'. For 'inline' only functions I would expect that the compiler builds functions if it refuses to inline them.
Sarah