/* { dg-do compile } */ /* { dg-require-effective-target indirect_jumps } */ /* { dg-require-effective-target label_values } */ typedef __INTPTR_TYPE__ intptr_t; intptr_t a, b, c, d; int foo (void) { return 0; } int baz (void); void bar (void) { intptr_t g = (intptr_t) &&h; void *i = &&j, *k = &&l; j: if (baz ()) { intptr_t **n = (intptr_t **) &a; l: b = 0; for (; b >= 0;) goto *k; h: **n = 0; for (;;) { intptr_t *o = &c; g = foo (); *o = g; if (c) goto *(void*)d; } } goto *i; }