Lines Matching defs:terms
7 under the terms of the GNU General Public License as published by the
192 /* A decomposition of the calculation into a sum of terms plus an
194 Once initialization is complete, all members of TERMs are SSA names. */
196 auto_vec<address_term_info, MAX_TERMS> terms;
203 /* Stores addresses based on their base and terms (ignoring the offsets). */
436 for (unsigned int i = 0; i < address.terms.length (); ++i)
440 dump_printf (flags, "%T", address.terms[i].expr);
441 if (address.terms[i].multiplier != 1)
442 dump_printf (flags, " * %wd", address.terms[i].multiplier);
448 /* Hash an address_info based on its base and terms. */
455 hash.add_int (info->terms.length ());
456 for (unsigned int i = 0; i < info->terms.length (); ++i)
458 hash.add_int (SSA_NAME_VERSION (info->terms[i].expr));
459 hash.add_hwi (info->terms[i].multiplier);
464 /* Return true if two address_infos have equal bases and terms. Other
475 if (a->terms.length () != b->terms.length ())
478 for (unsigned int i = 0; i < a->terms.length (); ++i)
479 if (a->terms[i].expr != b->terms[i].expr
480 || a->terms[i].multiplier != b->terms[i].multiplier)
1076 for (unsigned int i = 0; i < address.terms.length (); ++i)
1077 if (!find_per_loop_multiplication (address, address.terms[i])
1078 && !analyze_term_using_scevs (address, address.terms[i])
1079 && !POINTER_TYPE_P (TREE_TYPE (address.terms[i].expr)))
1080 analyze_arbitrary_term (address, address.terms[i]);
1133 for (unsigned int i = 0; i < address.terms.length (); ++i)
1134 if (chosen_stride != address.terms[i].stride
1135 && address.terms[i].inner_likelihood == INNER_LIKELY)
1139 chosen_stride = address.terms[i].stride;
1140 if (address.terms[i].versioning_opportunity_p)
1149 for (unsigned int i = 0; i < address.terms.length (); ++i)
1150 if (version_stride != address.terms[i].stride
1151 && address.terms[i].inner_likelihood == INNER_DONT_KNOW
1152 && address.terms[i].versioning_opportunity_p)
1156 version_stride = address.terms[i].stride;
1190 address->terms.quick_grow (1);
1191 address->terms[0].expr = expr;
1192 address->terms[0].multiplier = multiplier;
1193 address->terms[0].stride = NULL_TREE;
1194 address->terms[0].inner_likelihood = INNER_UNLIKELY;
1195 address->terms[0].versioning_opportunity_p = false;
1208 for (unsigned int i = 0; i < address->terms.length (); )
1210 if (gassign *assign = maybe_get_assign (address->terms[i].expr))
1221 address->terms[i].expr = strip_casts (op1);
1225 * address->terms[i].multiplier);
1228 else if (address->terms.length () < address_info::MAX_TERMS)
1230 unsigned int j = address->terms.length ();
1231 address->terms.quick_push (address->terms[i]);
1232 address->terms[i].expr = strip_casts (op1);
1233 address->terms[j].expr = strip_casts (op2);
1241 if (multiply_term_by (address->terms[i], op2))
1243 address->terms[i].expr = strip_casts (op1);
1250 address->terms[i].expr = strip_casts (op1);
1258 if (TREE_CODE (address->terms[0].expr) != SSA_NAME
1259 && address->terms[0].multiplier == 1)
1261 if (address->terms.length () == 1)
1266 address->base = address->terms[0].expr;
1267 address->terms.ordered_remove (0);
1270 /* Require all remaining terms to be SSA names. (This could be false
1272 for (unsigned int i = 0; i < address->terms.length (); ++i)
1273 if (TREE_CODE (address->terms[i].expr) != SSA_NAME)
1283 /* Put the terms into a canonical order for the hash table lookup below. */
1284 address->terms.qsort (compare_address_terms);
1296 /* Pool address information with the same terms (but potentially
1301 /* We've already seen an address with the same terms. Extend the
1318 /* This is the first time we've seen an address with these terms. */