// { dg-do run  }
// Test that unwinding properly restores SP.
// Contributed by Jason Merrill <jason@cygnus.com>

void f (int i)
{
  throw i;
}

int main ()
{  
  void *sp1 = __builtin_alloca (0);

  try
    {
      f (0);
    }
  catch (int)
    {
    }

  void *sp2 = __builtin_alloca (0);

  return (sp1 != sp2);
}