1typedef int *loop_p; 2typedef struct VEC_loop_p_base 3{ 4 unsigned num; 5 loop_p vec[1]; 6} 7VEC_loop_p_base; 8 9__inline__ int 10VEC_loop_p_base_iterate (const VEC_loop_p_base * vec_, unsigned ix_, 11 loop_p * ptr) 12{ 13 if (vec_ && ix_ < vec_->num) 14 { 15 *ptr = vec_->vec[ix_]; 16 return 1; 17 } 18 else 19 { 20 return 0; 21 } 22} 23 24typedef struct VEC_loop_p_heap 25{ 26 VEC_loop_p_base base; 27} 28VEC_loop_p_heap; 29 30 31static __inline__ int 32am_vector_index_for_loop (VEC_loop_p_heap * loop_nest, int loop_num) 33{ 34 int i; 35 loop_p l; 36 37 for (i = 0; 38 VEC_loop_p_base_iterate ((loop_nest) ? &(loop_nest)->base : 0, i, 39 &(l)); i++) 40 if (l == loop_num) 41 return i; 42 43 __builtin_unreachable (); 44} 45 46unsigned char 47build_access_matrix (unsigned max) 48{ 49 unsigned i; 50 for (i = 0; i < max; i++) 51 { 52 if (am_vector_index_for_loop (foo (), 0)) 53 return 0; 54 } 55} 56