(root)/
gcc-13.2.0/
gcc/
testsuite/
g++.dg/
warn/
Wnonnull7.C
/* 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<B*>(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<S3 *>(p)->f ();           // { dg-bogus "\\\[-Wnonnull" }
}