https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83062
Markus Trippelsdorf <trippels at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2017-11-20 Ever confirmed|0 |1 --- Comment #1 from Markus Trippelsdorf <trippels at gcc dot gnu.org> --- trippels@gcc2-power8 tsan % cat tsan_external.ii void __attribute__((always_inline)) fn1(int *, long, long, int) {} typedef void AccessFunc(int *, long, long, int); void fn2(AccessFunc p1) { bool a(&a); p1(0, 0, 0, 0); fn2(fn1); } trippels@gcc2-power8 tsan % g++ -O3 -c tsan_external.ii tsan_external.ii:1:37: warning: always_inline function might not be inlinable [-Wattributes] void __attribute__((always_inline)) fn1(int *, long, long, int) {} ^~~ tsan_external.ii: In function ‘void fn2(void (*)(int*, long int, long int, int))’: tsan_external.ii:1:37: error: inlining failed in call to always_inline ‘void fn1(int*, long int, long int, int)’: caller is not optimized tsan_external.ii:5:5: note: called from here p1(0, 0, 0, 0); ~~^~~~~~~~~~~~