https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70199
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2016-03-13 Ever confirmed|0 |1 --- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Here is a reduced testcase: static volatile int v = 0; static void benchmark(long runs) { void* labels[] = { &&l0, &&l1, &&l2 }; for(unsigned int mask = 0x1F; mask > 0; mask >>= 1) { unsigned lfsr = 0xACE1u; long n = 10000000; while(n > 0) { l2: v; l1: v; goto *labels[lfsr & mask]; l0: n--; } } } int f(void) { benchmark(10000000); } ---- CUT -----