On Tue, May 31, 2011 at 11:18:18AM +0200, Richard Guenther wrote: > The patch is not ok, we may not fail to inline an always_inline > function. To make this more consistent I proposed to warn > whenever you take the address of an always_inline function > (because then you can confuse GCC by indirectly calling > such function which we might inline dependent on optimization > setting and which we might discover we didn't inline only > dependent on optimization setting). Honza proposed to move
That would warn on a lot of valid programs. Even #include <unistd.h> void *readptr = read; would warn, because read is both extern and extern __inline __attribute__ ((__always_inline__, __artificial__, __gnu_inline__, __warn_unused_result__)) ssize_t read (int __fd, void *__buf, size_t __nbytes) { ... } wrapper. Similarly dozens of other functions. glibc relies on extern inline gnu_inline behavior there, if you take address, the extern is used instead of the inline. Jakub