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