1 /* { dg-require-effective-target indirect_jumps } */ 2 /* { dg-require-effective-target label_values } */ 3 4 typedef unsigned long Eterm; process_main(void)5process_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 } 32