/* PR c++/96003 - spurious -Wnonnull calling a member on the result of static_cast { dg-do compile } { dg-options "-Wall" } */ struct D; struct B { B* next; D* Next (); }; struct D: B { virtual ~D (); }; struct Iterator { D* p; void advance () { p = static_cast(p)->Next (); // { dg-bogus "\\\[-Wnonnull" } } }; // Test case from comment #11. struct S1 { virtual ~S1 (); }; struct S2 { virtual ~S2 (); }; struct S3: S1, S2 { void f (); }; void f (S2 *p) { static_cast(p)->f (); // { dg-bogus "\\\[-Wnonnull" } }