(root)/
gcc-13.2.0/
gcc/
testsuite/
g++.dg/
warn/
Wdangling-pointer-5.C
/* PR middle-end/104436 - spurious -Wdangling-pointer assigning local
   address to a class passed by value
   { dg-do compile }
   { dg-options "-O1 -Wall" } */

struct S
{
  S (void *p): p (p) { }
  S (const S &s): p (s.p) { }

  void *p;
};


void nowarn_assign_by_value (S s)
{
  int i;
  S t (&i);
  s = t;            // { dg-bogus "-Wdangling-pointer" }
}

void nowarn_assign_by_value_arg (S s)
{
  S t (&s);
  s = t;            // { dg-bogus "-Wdangling-pointer" }
}


void warn_assign_local_by_reference (S &s)
{
  int i;
  S t (&i);
  s = t;            // { dg-warning "-Wdangling-pointer" }
}