// Bug: we were removing the p = q assignment in dce, and then reinserting
// it *after* the try/catch in out-of-ssa.  Oops.

// testcase reduced from libjava/interpret.cc.

// { dg-do run }
// { dg-options "-O2" }
// { dg-require-effective-target indirect_jumps }

extern "C" int printf (const char *, ...);

bool b;

int main()
{
  __label__ one, two, done;
  void *labs[] = { &&one, &&two, &&done };
  const void **q = (const void **)labs;
  const void **p = q;

  try
    {
    one:
      printf ("one!\n");
      if (b)
	throw 42;
      goto **p++;

    two:
      printf ("two!\n");
      goto **p++;

    done:
      printf ("done!\n");
    }
  catch (int)
    {
      printf ("caught!\n");
    }
}
