http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59626
Markus Trippelsdorf <trippels at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2013-12-30 CC| |trippels at gcc dot gnu.org Known to work| |4.7.3 Ever confirmed|0 |1 Known to fail| |4.8.3, 4.9.0 --- Comment #1 from Markus Trippelsdorf <trippels at gcc dot gnu.org> --- markus@x4 % cat test.i long __readlinkat_alias() __asm__("readlinkat"); __inline __attribute__((__always_inline__)) long readlinkat(int p1, const char *p2, char *p3, unsigned long p4) { __readlinkat_alias(); } int main() { long (*b)(int, const char *, char *, unsigned long) = readlinkat; return b(0, 0, 0, 0); } (4.7.3 is fine with -std=gnu99) markus@x4 % /usr/x86_64-pc-linux-gnu/gcc-bin/4.7.3/gcc -std=gnu99 -flto -r -nostdlib test.i -O2 -o /dev/null (4.9.0 fails) markus@x4 % gcc -std=gnu99 -flto -r -nostdlib test.i -O2 -o /dev/null test.i: In function ‘main’: test.i:3:6: error: inlining failed in call to always_inline ‘readlinkat’: recursive inlining long readlinkat(int p1, const char *p2, char *p3, unsigned long p4) { ^ test.i:4:21: error: called from here __readlinkat_alias(); ^ lto-wrapper: /usr/x86_64-pc-linux-gnu/gcc-bin/4.9.0/gcc returned 1 exit status /usr/lib/gcc/x86_64-pc-linux-gnu/4.9.0/../../../../x86_64-pc-linux-gnu/bin/ld: fatal error: lto-wrapper failed collect2: error: ld returned 1 exit status markus@x4 % gcc -std=gnu99 -r -nostdlib test.i -O2 -o /dev/null markus@x4 %