1  /* { dg-require-effective-target indirect_jumps } */
       2  /* { dg-require-effective-target label_values } */
       3  
       4  typedef unsigned long Eterm;
       5  process_main (void)
       6  {
       7    register Eterm x0;
       8    register Eterm *reg = ((void *) 0);
       9    register Eterm *I = ((void *) 0);
      10    static void *opcodes[] = {
      11        &&lb_allocate_heap_zero_III,
      12        &&lb_allocate_init_tIy, &&lb_allocate_zero_tt
      13    };
      14  lb_allocate_heap_III:{
      15      Eterm *next;
      16      goto *(next);
      17    }
      18  lb_allocate_heap_zero_III:{
      19    }
      20  lb_allocate_init_tIy:{
      21    }
      22  lb_allocate_zero_tt:{
      23      Eterm *next;
      24      {
      25        Eterm *tmp_ptr = ((Eterm *) (((x0)) - 0x1));
      26        (*(Eterm *) (((unsigned char *) reg) + (I[(0) + 1]))) = ((tmp_ptr)[0]);
      27        x0 = ((tmp_ptr)[1]);
      28      }
      29      goto *(next);
      30    }
      31  }