http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48996
--- Comment #4 from psmith at gnu dot org 2011-05-16 15:07:40 UTC --- I'm attaching a small test program that fails for me. I'm just running the compiler with "c++ -o tstfstat.o -c tstfstat.cpp"; no extra flags. After looking more carefully I can see that when I build this without optimization I get this problem; the ifdef around the definition of the inline version is: # if defined __USE_LARGEFILE64 \ && (! defined __USE_FILE_OFFSET64 \ || (defined __REDIRECT_NTH && defined __OPTIMIZE__)) In my system __USE_LARGEFILE64 is 1, __USE_FILE_OFFSET64 is 1, and __REDIRECT_NTH is defined. So, this entire if statement is true if __OPTIMIZE__ is true, and false otherwise. On the other hand the declaration doesn't care about __OPTIMIZE__; it declares the function to be __inline__ regardless. Sure enough, when I add -O2 to the compile line I don't see any complaints from the compiler. However that's not something I can do :-).