/* 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" }
}