static void write_ts_binfo_tree_pointers (struct output_block *ob, tree expr, bool ref_p) { unsigned i; tree t; /* Note that the number of BINFO slots has already been emitted in EXPR's header (see streamer_write_tree_header) because this length is needed to build the empty BINFO node on the reader side. */ FOR_EACH_VEC_ELT (tree, BINFO_BASE_BINFOS (expr), i, t) stream_write_tree (ob, t, ref_p); stream_write_tree (ob, NULL_TREE, false); stream_write_tree (ob, BINFO_OFFSET (expr), ref_p); stream_write_tree (ob, BINFO_VTABLE (expr), ref_p); stream_write_tree (ob, BINFO_VPTR_FIELD (expr), ref_p); streamer_write_uhwi (ob, VEC_length (tree, BINFO_BASE_ACCESSES (expr))); FOR_EACH_VEC_ELT (tree, BINFO_BASE_ACCESSES (expr), i, t) stream_write_tree (ob, t, ref_p); stream_write_tree (ob, BINFO_INHERITANCE_CHAIN (expr), ref_p); stream_write_tree (ob, BINFO_SUBVTT_INDEX (expr), ref_p); stream_write_tree (ob, BINFO_VPTR_INDEX (expr), ref_p); }
void ggc_mark_roots (void) { const struct ggc_root_tab *const *rt; const_ggc_root_tab_t rtp, rti; size_t i; for (rt = gt_ggc_deletable_rtab; *rt; rt++) for (rti = *rt; rti->base != NULL; rti++) memset (rti->base, 0, rti->stride); for (rt = gt_ggc_rtab; *rt; rt++) ggc_mark_root_tab (*rt); FOR_EACH_VEC_ELT (extra_root_vec, i, rtp) ggc_mark_root_tab (rtp); if (ggc_protect_identifiers) ggc_mark_stringpool (); gt_clear_caches (); if (! ggc_protect_identifiers) ggc_purge_stringpool (); /* Some plugins may call ggc_set_mark from here. */ invoke_plugin_callbacks (PLUGIN_GGC_MARKING, NULL); }
static void write_ts_binfo_tree_pointers (struct output_block *ob, tree expr, bool ref_p) { unsigned i; tree t; /* Note that the number of BINFO slots has already been emitted in EXPR's header (see streamer_write_tree_header) because this length is needed to build the empty BINFO node on the reader side. */ FOR_EACH_VEC_ELT (*BINFO_BASE_BINFOS (expr), i, t) stream_write_tree (ob, t, ref_p); stream_write_tree (ob, NULL_TREE, false); stream_write_tree (ob, BINFO_OFFSET (expr), ref_p); stream_write_tree (ob, BINFO_VTABLE (expr), ref_p); stream_write_tree (ob, BINFO_VPTR_FIELD (expr), ref_p); /* The number of BINFO_BASE_ACCESSES has already been emitted in EXPR's bitfield section. */ FOR_EACH_VEC_SAFE_ELT (BINFO_BASE_ACCESSES (expr), i, t) stream_write_tree (ob, t, ref_p); /* Do not walk BINFO_INHERITANCE_CHAIN, BINFO_SUBVTT_INDEX and BINFO_VPTR_INDEX; these are used by C++ FE only. */ }
static bool lst_do_strip_mine (lst_p lst, int stride) { int i; lst_p l; bool res = false; int depth; if (!stride) stride = PARAM_VALUE (PARAM_LOOP_BLOCK_TILE_SIZE); if (!lst || !LST_LOOP_P (lst)) return false; FOR_EACH_VEC_ELT (lst_p, LST_SEQ (lst), i, l) res |= lst_do_strip_mine (l, stride); depth = lst_depth (lst); if (depth >= 0 && lst_strip_mine_profitable_p (lst, stride)) { res |= lst_do_strip_mine_loop (lst, lst_depth (lst), stride); lst_add_loop_under_loop (lst); } return res; }
void print_iteration_domains (FILE *file, scop_p scop) { int i; poly_bb_p pbb; FOR_EACH_VEC_ELT (scop->pbbs, i, pbb) print_iteration_domain (file, pbb); }
static void print_graphite_statistics (FILE* file, vec<scop_p> scops) { int i; scop_p scop; FOR_EACH_VEC_ELT (scops, i, scop) print_graphite_scop_statistics (file, scop); }
static void move_sd_regions (vec<sd_region> *source, vec<sd_region> *target) { sd_region *s; int i; FOR_EACH_VEC_ELT (*source, i, s) target->safe_push (*s); source->release (); }
static void build_wrapper_type (struct wrapper_data *wd) { unsigned int j; struct cilk_decls * c; auto_vec<struct cilk_decls> vd; wd->arglist = NULL_TREE; wd->parms = NULL_TREE; wd->argtypes = void_list_node; gcc_assert (wd->type != CILK_BLOCK_FOR); wd->decl_map->traverse<auto_vec<struct cilk_decls> *, fill_decls_vec> (&vd); vd.qsort (compare_decls); FOR_EACH_VEC_ELT (vd, j, c) create_parm_list (wd, c->val, c->key); /* Now build a function. Its return type is void (all side effects are via explicit parameters). Its parameters are WRAPPER_PARMS with type WRAPPER_TYPES. Actual arguments in the caller are WRAPPER_ARGS. */ wd->fntype = build_function_type (void_type_node, wd->argtypes); }
static bool lst_do_strip_mine_loop (lst_p lst, int depth, int stride) { int i; lst_p l; poly_bb_p pbb; if (!lst) return false; if (LST_LOOP_P (lst)) { bool res = false; FOR_EACH_VEC_ELT (lst_p, LST_SEQ (lst), i, l) res |= lst_do_strip_mine_loop (l, depth, stride); return res; } pbb = LST_PBB (lst); return pbb_strip_mine_time_depth (pbb, psct_dynamic_dim (pbb, depth), stride); }
static int lst_do_strip_mine_loop (lst_p lst, int depth, int stride) { int i; lst_p l; poly_bb_p pbb; if (!lst) return 0; if (LST_LOOP_P (lst)) { int res = 0; FOR_EACH_VEC_ELT (LST_SEQ (lst), i, l) res += lst_do_strip_mine_loop (l, depth, stride); return res; } pbb = LST_PBB (lst); pbb_strip_mine_time_depth (pbb, psct_dynamic_dim (pbb, depth), stride); return 1; }