Lines Matching defs:alias
59 /* Structure to map a variable to its alias set and keep track of the
63 /* Variable and its alias set. */
77 bitmap form to speed up alias grouping. */
82 /* Counters used to display statistics on alias analysis. */
137 are forced to alias this variable. This reduces compile times by not
178 add_to_worklist (tree alias, VEC (tree, heap) **worklist,
182 if (MTAG_P (alias) && !is_call_clobbered (alias))
184 VEC_safe_push (tree, heap, *worklist, alias);
190 alias list that were not already call clobbered on WORKLIST. */
542 /* Compute may-alias information for every variable referenced in function
584 analysis and create alias sets for the name memory tags associated with
591 This pass will compare the alias set of every symbol memory tag and
593 memory tag SMT and an addressable variable V. If the alias sets of
595 as an alias tag and added to the alias set of SMT.
648 max-aliased-vops}), alias sets are grouped to avoid severe
668 /* Collect all pointers and addressable variables, compute alias sets,
686 /* Determine if we need to enable alias grouping. */
697 /* If the program contains ref-all pointers, finalize may-alias information
739 "alias", /* name */
871 /* Initialize the data structures used for alias analysis. */
899 /* Clear flow-insensitive alias information from each symbol. */
951 /* Next time, we will need to reset alias information. */
958 /* Deallocate memory used by alias analysis. */
1013 a set of variables (so that we can alias them to *P) or if it is
1015 anything else nor alias any other variable).
1114 /* For every pointer P_i in AI->PROCESSED_PTRS, create may-alias sets for
1118 variables in the same alias set as *P_i are marked call-clobbered. This
1120 variable in the same alias set. */
1157 /* Compute type-based alias sets. Traverse all the pointers and
1161 AI->ADDRESSABLE_VARS, add V to the may-alias sets of P's symbol
1162 memory tag (SMT) if their alias sets conflict. V is then marked as
1163 an alias tag so that the operand scanner knows that statements
1173 threshold set by --params max-alias-vops, we enable alias
1177 /* For every pointer P, determine which addressable variables may alias
1195 TAG's alias set in case we need to group aliases. */
1240 /* Update the bitmap used to represent TAG's alias set
1245 aliasing. Since we are adding one more alias to TAG's
1260 tags with conflicting alias set numbers but no aliased symbols in
1269 and the alias set number of SMT.1 conflicts with that of SMT.2.
1277 common and yet have conflicting alias set numbers. */
1301 /* The two pointers may alias each other. If they already have
1311 /* Add all the aliases for TAG2 into TAG1's alias set.
1320 TAG2 itself to the alias set of TAG1. */
1334 /* Finalize may-alias information for ref-all pointers. Traverse all
1337 If flow-sensitive alias analysis has attached a name memory tag to
1390 variables in its alias set. Update the total number
1392 function will make TAG be the unique alias tag for all the
1416 /* Make TAG the unique alias of VAR. */
1452 variable Vi is found to alias with a memory tag T, we add Vi
1453 to the may-aliases set for T. Meaning that after alias
1459 virtual operands for each of the Vi tags. But, when alias
1460 grouping is enabled, we make T an alias tag and add it to the
1461 alias set of all the Vi variables:
1470 appear to alias each other. So, we lose alias precision to
1475 3- Since variables may be in the alias set of more than one
1501 still above the threshold set by max-alias-vops, go back to (2). */
1543 /* TAG1 is the unique alias of TAG2. */
1560 the may-alias set of name memory tags. Suppose that we have
1580 tree alias;
1586 for (j = 0; VEC_iterate (tree, aliases, j, alias); j++)
1588 var_ann_t ann = var_ann (alias);
1590 if ((!MTAG_P (alias)
1591 || TREE_CODE (alias) == STRUCT_FIELD_TAG)
1613 /* Create a new alias set entry for VAR in AI->ADDRESSABLE_VARS. */
1627 ADDRESSABLE_VARS and POINTERS arrays used for building the may-alias
1812 representative that is used as an alias of every call-clobbered variable
1892 .GLOBAL_VAR has been created, make it an alias for all
1907 MEM_ALIAS_SET is the alias set for the memory location pointed-to by PTR
1909 interested in the alias set of the memory location pointed-to by
1910 PTR. The alias set of PTR itself is irrelevant.
1912 VAR_ALIAS_SET is the alias set for VAR. */
1924 /* By convention, a variable cannot alias itself. */
1966 /* If the alias sets don't conflict then MEM cannot alias VAR. */
2023 alias. */
2037 /* Add ALIAS to the set of variables that may alias VAR. */
2040 add_may_alias (tree var, tree alias)
2044 var_ann_t a_ann = get_var_ann (alias);
2048 gcc_assert (var != alias);
2050 /* ALIAS must be addressable if it's being added to an alias set. */
2052 TREE_ADDRESSABLE (alias) = 1;
2054 gcc_assert (may_be_aliased (alias));
2062 if (alias == al)
2065 VEC_safe_push (tree, gc, v_ann->may_aliases, alias);
2070 /* Replace alias I in the alias sets of VAR with NEW_ALIAS. */
2208 in the same alias set class. Otherwise, the tag represents a single
2257 AI points to the data gathered during alias analysis. This
2277 per alias set class. Note that it may be tempting to group
2278 memory tags based on conflicting alias sets instead of
2279 equivalence. That would be wrong because alias sets are not
2281 23_containers/vector/cons/4.cc). Given three alias sets A, B, C
2295 /* If VAR cannot alias with any of the existing memory tags, create a new
2310 PTR's alias set. Instead, we cache the alias set for the memory that
2321 /* Make sure that the symbol tag has the same alias set as the
2354 /* Dump alias statistics on FILE. */
2362 fprintf (file, "Total alias queries:\t%u\n", alias_stats.alias_queries);
2363 fprintf (file, "Total alias mayalias results:\t%u\n",
2365 fprintf (file, "Total alias noalias results:\t%u\n",
2382 /* Dump alias information on FILE. */
2393 fprintf (file, "\nFlow-insensitive alias information for %s\n\n", funcname);
2420 fprintf (file, "\n\nFlow-sensitive alias information for %s\n\n", funcname);
2450 /* Dump alias information on stderr. */
2459 /* Return the alias information associated with pointer T. It creates a
2673 /* Given two symbols return TRUE if one is in the alias set of the other. */
2708 /* Given two tags return TRUE if their may-alias sets intersect. */
2719 /* Insert all the symbols from the first may-alias set into the
2724 /* Go through the second may-alias set and check if it contains symbols that
2777 /* Create a new symbol tag for PTR. Construct the may-alias list of this type
2804 /* Add VAR to the may-alias set of PTR's new symbol tag. If VAR has