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 -----

Reply via email to