/* { dg-do compile } { dg-options "-O1 -Wall -Wno-class-memaccess -Wno-dangling-reference" } */ struct A { A (); }; const A& return_arg (const A &a) { return a; } void sink (const void*); void nowarn_ref (int i) { const A &a = return_arg (A ()); // { dg-note "unnamed temporary" } sink (&a); // { dg-warning "-Wdangling-pointer" } } void warn_dangling_ref (int i) { const A &a = return_arg (A ()); // { dg-note "unnamed temporary" } sink (&a); // { dg-warning "-Wdangling-pointer" } }