https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83062
Markus Trippelsdorf <trippels at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Priority|P3 |P1 Target Milestone|--- |8.0 --- Comment #3 from Markus Trippelsdorf <trippels at gcc dot gnu.org> --- Started with r54937. Another testcase: trippels@gcc2-power8 ~ % cat scavenger.ii struct A { virtual void VisitPointers(int *, int **, int **) = 0; virtual void VisitNextCodeLink() { VisitPointers(0, 0, 0); } }; struct B : A { __attribute__((always_inline)) void VisitPointers(int *, int **, int **); }; void B::VisitPointers(int *, int **, int **) {} trippels@gcc2-power8 ~ % g++ -O3 -c scavenger.ii scavenger.ii:8:6: warning: always_inline function might not be inlinable [-Wattributes] void B::VisitPointers(int *, int **, int **) {} ^ scavenger.ii: In member function ‘virtual void A::VisitNextCodeLink()’: scavenger.ii:8:6: error: inlining failed in call to always_inline ‘virtual void B::VisitPointers(int*, int**, int**)’: caller is not optimized scavenger.ii:3:51: note: called from here virtual void VisitNextCodeLink() { VisitPointers(0, 0, 0); } ~~~~~~~~~~~~~^~~~~~~~~