view gcc/testsuite/gcc.c-torture/compile/pr70199.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
line wrap: on
line source

/* { dg-require-effective-target indirect_jumps } */
/* { dg-require-effective-target label_values } */

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);
}