// { dg-do compile } // { dg-options "-O2 -Wsuggest-final-types -Wsuggest-final-methods" } int c; struct A { // { dg-warning "final would enable devirtualization of 4 calls" } virtual void a() {} // { dg-warning "final would enable devirtualization of 2 calls" } virtual void b() {c++;} // { dg-warning "final would enable devirtualization of 2 calls" } }; void t(struct A *a) { a->a(); a->a(); a->b(); a->b(); }