/* PR middle-end/104761 - bogus -Wdangling-pointer with cleanup and infinite loop
   { dg-do compile }
   { dg-options "-O -Wall -fno-exceptions" } */
struct S { int i; };
struct X { ~X (); };
void g (int);
void test (int i)
{
  S s = { 0 };
  X x;
  if (i)
    {
      g (s.i);                // { dg-bogus "-Wdangling-pointer" }
      for ( ; ; );
    }
}