/* PR middle-end/88232 - Please implement -Winfinite-recursion { dg-do compile } { dg-options "-Wall -Winfinite-recursion" } */ template struct C { void foo () // { dg-warning "-Winfinite-recursion" } { static_cast(this)->foo (); } }; struct D : C { // this is missing: // void foo() {} }; void f (D *d) { d->foo (); } struct E : C { void foo() {} }; void g (E *e) { e->foo (); }