Lines Matching refs:ai

115 static void maybe_create_global_var (struct alias_info *ai);
314 set_initial_properties (struct alias_info *ai)
340 for (i = 0; VEC_iterate (tree, ai->processed_ptrs, i, ptr); i++)
408 compute_call_clobbered (struct alias_info *ai)
413 set_initial_properties (ai);
654 struct alias_info *ai;
659 ai = init_alias_info ();
666 compute_points_to_sets (ai);
671 setup_pointers_and_addressables (ai);
677 compute_flow_sensitive_aliasing (ai);
681 compute_flow_insensitive_aliasing (ai);
684 compute_call_clobbered (ai);
687 if (ai->total_alias_vops >= MAX_ALIASED_VOPS)
688 group_aliases (ai);
695 maybe_create_global_var (ai);
700 if (ai->ref_all_symbol_mem_tag)
701 finalize_ref_all_pointers (ai);
714 delete_alias_info (ai);
873 struct alias_info *ai;
878 ai = XCNEW (struct alias_info);
879 ai->ssa_names_visited = sbitmap_alloc (num_ssa_names);
880 sbitmap_zero (ai->ssa_names_visited);
881 ai->processed_ptrs = VEC_alloc (tree, heap, 50);
882 ai->written_vars = BITMAP_ALLOC (&alias_obstack);
883 ai->dereferenced_ptrs_store = BITMAP_ALLOC (&alias_obstack);
884 ai->dereferenced_ptrs_load = BITMAP_ALLOC (&alias_obstack);
951 return ai;
958 delete_alias_info (struct alias_info *ai)
964 sbitmap_free (ai->ssa_names_visited);
965 VEC_free (tree, heap, ai->processed_ptrs);
967 for (i = 0; i < ai->num_addressable_vars; i++)
968 free (ai->addressable_vars[i]);
976 free (ai->addressable_vars);
978 for (i = 0; i < ai->num_pointers; i++)
979 free (ai->pointers[i]);
980 free (ai->pointers);
982 BITMAP_FREE (ai->written_vars);
983 BITMAP_FREE (ai->dereferenced_ptrs_store);
984 BITMAP_FREE (ai->dereferenced_ptrs_load);
986 free (ai);
1120 compute_flow_sensitive_aliasing (struct alias_info *ai)
1125 for (i = 0; VEC_iterate (tree, ai->processed_ptrs, i, ptr); i++)
1133 for (i = 0; VEC_iterate (tree, ai->processed_ptrs, i, ptr); i++)
1164 compute_flow_insensitive_aliasing (struct alias_info *ai)
1172 ai->total_alias_vops = 0;
1176 for (i = 0; i < ai->num_pointers; i++)
1179 struct alias_map_d *p_map = ai->pointers[i];
1196 for (j = 0; j < ai->num_addressable_vars; j++)
1202 v_map = ai->addressable_vars[j];
1216 || bitmap_bit_p (ai->written_vars, DECL_UID (tag));
1218 || bitmap_bit_p (ai->written_vars, DECL_UID (var));
1247 ai->total_alias_vops += (num_var_refs + num_tag_refs);
1275 for (i = 0; i < ai->num_pointers; i++)
1278 struct alias_map_d *p_map1 = ai->pointers[i];
1285 for (j = i + 1; j < ai->num_pointers; j++)
1287 struct alias_map_d *p_map2 = ai->pointers[j];
1327 ai->total_alias_vops);
1341 finalize_ref_all_pointers (struct alias_info *ai)
1346 add_may_alias (ai->ref_all_symbol_mem_tag, global_var);
1350 for (i = 0; i < ai->num_addressable_vars; i++)
1352 tree var = ai->addressable_vars[i]->var;
1354 add_may_alias (ai->ref_all_symbol_mem_tag, var);
1359 for (i = 0; i < ai->num_pointers; i++)
1361 tree ptr = ai->pointers[i]->var, tag;
1366 add_may_alias (ai->ref_all_symbol_mem_tag, tag);
1401 group_aliases_into (tree tag, bitmap tag_aliases, struct alias_info *ai)
1427 ai->total_alias_vops -= num_tag_refs;
1434 ai->total_alias_vops += num_tag_refs;
1501 group_aliases (struct alias_info *ai)
1508 qsort (ai->pointers, ai->num_pointers, sizeof (struct alias_map_d *),
1513 for (i = 0; i < ai->num_pointers; i++)
1516 tree tag1 = var_ann (ai->pointers[i]->var)->symbol_mem_tag;
1517 bitmap tag1_aliases = ai->pointers[i]->may_aliases;
1520 if (ai->pointers[i]->grouped_p)
1526 for (j = i + 1; j < ai->num_pointers; j++)
1528 bitmap tag2_aliases = ai->pointers[j]->may_aliases;
1532 tree tag2 = var_ann (ai->pointers[j]->var)->symbol_mem_tag;
1543 ai->pointers[j]->grouped_p = true;
1548 group_aliases_into (tag1, tag1_aliases, ai);
1552 if (ai->total_alias_vops < MAX_ALIASED_VOPS)
1572 for (i = 0; VEC_iterate (tree, ai->processed_ptrs, i, ptr); i++)
1605 ai->total_alias_vops,
1606 (ai->total_alias_vops < 0) ? " (negative values are OK)" : "");
1613 create_alias_map_for (tree var, struct alias_info *ai)
1619 ai->addressable_vars[ai->num_addressable_vars++] = alias_map;
1630 setup_pointers_and_addressables (struct alias_info *ai)
1651 bitmap_set_bit (ai->dereferenced_ptrs_store, DECL_UID (var));
1662 ai->addressable_vars = XCNEWVEC (struct alias_map_d *, num_addressable_vars);
1663 ai->pointers = XCNEWVEC (struct alias_map_d *, num_pointers);
1664 ai->num_addressable_vars = 0;
1665 ai->num_pointers = 0;
1736 create_alias_map_for (var, ai);
1744 if ((bitmap_bit_p (ai->dereferenced_ptrs_store, DECL_UID (var))
1745 || bitmap_bit_p (ai->dereferenced_ptrs_load, DECL_UID (var))))
1753 tag = get_tmt_for (var, ai);
1773 if (bitmap_bit_p (ai->dereferenced_ptrs_store, DECL_UID (var)))
1774 bitmap_set_bit (ai->written_vars, DECL_UID (tag));
1831 maybe_create_global_var (struct alias_info *ai)
1873 if (ai->num_calls_found * n_clobbered >= (size_t) GLOBAL_VAR_THRESHOLD
1875 && ai->num_calls_found > 0
1876 && ai->num_pure_const_calls_found > 0
1877 && ai->num_calls_found > ai->num_pure_const_calls_found))
2258 get_tmt_for (tree ptr, struct alias_info *ai)
2268 if (!ai->ref_all_symbol_mem_tag)
2269 ai->ref_all_symbol_mem_tag = create_memory_tag (void_type_node, true);
2270 return ai->ref_all_symbol_mem_tag;
2281 for (i = 0, tag = NULL_TREE; i < ai->num_pointers; i++)
2283 struct alias_map_d *curr = ai->pointers[i];
2312 ai->pointers[ai->num_pointers++] = alias_map;