Lines Matching refs:iv

126 struct iv  struct
141 struct iv *iv; /* Induction variable description. */ argument
188 struct iv *iv; /* The induction variable it is based on. */ member
223 struct iv *iv; /* The value of the candidate. NULL for member
442 extern void dump_iv (FILE *, struct iv *);
444 dump_iv (FILE *file, struct iv *iv) in dump_iv() argument
446 if (iv->ssa_name) in dump_iv()
449 print_generic_expr (file, iv->ssa_name, TDF_SLIM); in dump_iv()
454 print_generic_expr (file, TREE_TYPE (iv->base), TDF_SLIM); in dump_iv()
457 if (iv->step) in dump_iv()
460 print_generic_expr (file, iv->base, TDF_SLIM); in dump_iv()
464 print_generic_expr (file, iv->step, TDF_SLIM); in dump_iv()
470 print_generic_expr (file, iv->base, TDF_SLIM); in dump_iv()
474 if (iv->base_object) in dump_iv()
477 print_generic_expr (file, iv->base_object, TDF_SLIM); in dump_iv()
481 if (iv->biv_p) in dump_iv()
520 dump_iv (file, use->iv); in dump_use()
553 struct iv *iv = cand->iv; in dump_cand() local
564 if (!iv) in dump_cand()
606 dump_iv (file, iv); in dump_cand()
927 static struct iv *
930 struct iv *iv = XCNEW (struct iv); in alloc_iv() local
933 iv->base = base; in alloc_iv()
934 iv->base_object = determine_base_object (base); in alloc_iv()
935 iv->step = step; in alloc_iv()
936 iv->biv_p = false; in alloc_iv()
937 iv->have_use_for = false; in alloc_iv()
938 iv->use_id = 0; in alloc_iv()
939 iv->ssa_name = NULL_TREE; in alloc_iv()
941 return iv; in alloc_iv()
947 set_iv (struct ivopts_data *data, tree iv, tree base, tree step) in set_iv() argument
949 struct version_info *info = name_info (data, iv); in set_iv()
951 gcc_assert (!info->iv); in set_iv()
953 bitmap_set_bit (data->relevant, SSA_NAME_VERSION (iv)); in set_iv()
954 info->iv = alloc_iv (base, step); in set_iv()
955 info->iv->ssa_name = iv; in set_iv()
960 static struct iv *
970 if (!name_info (data, var)->iv) in get_iv()
979 return name_info (data, var)->iv; in get_iv()
990 affine_iv iv; in determine_biv_step() local
995 if (!simple_iv (loop, loop, name, &iv, true)) in determine_biv_step()
998 return integer_zerop (iv.step) ? NULL_TREE : iv.step; in determine_biv_step()
1053 struct iv *iv, *incr_iv; in mark_bivs() local
1062 iv = get_iv (data, PHI_RESULT (phi)); in mark_bivs()
1063 if (!iv) in mark_bivs()
1077 iv->biv_p = true; in mark_bivs()
1086 find_givs_in_stmt_scev (struct ivopts_data *data, gimple stmt, affine_iv *iv) in find_givs_in_stmt_scev() argument
1091 iv->base = NULL_TREE; in find_givs_in_stmt_scev()
1092 iv->step = NULL_TREE; in find_givs_in_stmt_scev()
1101 if (!simple_iv (loop, loop_containing_stmt (stmt), lhs, iv, true)) in find_givs_in_stmt_scev()
1103 iv->base = expand_simple_operations (iv->base); in find_givs_in_stmt_scev()
1105 if (contains_abnormal_ssa_name_p (iv->base) in find_givs_in_stmt_scev()
1106 || contains_abnormal_ssa_name_p (iv->step)) in find_givs_in_stmt_scev()
1123 affine_iv iv; in find_givs_in_stmt() local
1125 if (!find_givs_in_stmt_scev (data, stmt, &iv)) in find_givs_in_stmt()
1128 set_iv (data, gimple_assign_lhs (stmt), iv.base, iv.step); in find_givs_in_stmt()
1191 if (ver_info (data, i)->iv) in find_induction_variables()
1192 dump_iv (dump_file, ver_info (data, i)->iv); in find_induction_variables()
1202 record_use (struct ivopts_data *data, tree *use_p, struct iv *iv, in record_use() argument
1209 use->iv = iv; in record_use()
1216 iv->ssa_name = NULL_TREE; in record_use()
1258 struct iv *iv; in find_interesting_uses_op() local
1259 struct iv *civ; in find_interesting_uses_op()
1266 iv = get_iv (data, op); in find_interesting_uses_op()
1267 if (!iv) in find_interesting_uses_op()
1270 if (iv->have_use_for) in find_interesting_uses_op()
1272 use = iv_use (data, iv->use_id); in find_interesting_uses_op()
1278 if (integer_zerop (iv->step)) in find_interesting_uses_op()
1283 iv->have_use_for = true; in find_interesting_uses_op()
1285 civ = XNEW (struct iv); in find_interesting_uses_op()
1286 *civ = *iv; in find_interesting_uses_op()
1293 iv->use_id = use->id; in find_interesting_uses_op()
1309 struct iv **iv_var, struct iv **iv_bound) in extract_cond_operands()
1312 static struct iv const_iv; in extract_cond_operands()
1315 struct iv *iv0 = &const_iv, *iv1 = &const_iv, *tmp_iv; in extract_cond_operands()
1370 struct iv *var_iv, *civ; in find_interesting_uses_cond()
1379 civ = XNEW (struct iv); in find_interesting_uses_cond()
1458 struct iv *iv; in idx_find_step() local
1492 iv = get_iv (dta->ivopts_data, *idx); in idx_find_step()
1493 if (!iv) in idx_find_step()
1499 *idx = iv->base; in idx_find_step()
1501 if (integer_zerop (iv->step)) in idx_find_step()
1516 iv_base = iv->base; in idx_find_step()
1517 iv_step = iv->step; in idx_find_step()
1709 struct iv *civ; in find_interesting_uses_address()
1841 struct iv *iv; in find_interesting_uses_stmt() local
1865 iv = get_iv (data, *lhs); in find_interesting_uses_stmt()
1867 if (iv && !integer_zerop (iv->step)) in find_interesting_uses_stmt()
1903 iv = get_iv (data, PHI_RESULT (stmt)); in find_interesting_uses_stmt()
1905 if (iv && !integer_zerop (iv->step)) in find_interesting_uses_stmt()
1916 iv = get_iv (data, op); in find_interesting_uses_stmt()
1917 if (!iv) in find_interesting_uses_stmt()
2247 if (!cand->iv) in add_candidate_1()
2258 if (operand_equal_p (base, cand->iv->base, 0) in add_candidate_1()
2259 && operand_equal_p (step, cand->iv->step, 0) in add_candidate_1()
2261 == TYPE_PRECISION (TREE_TYPE (cand->iv->base)))) in add_candidate_1()
2271 cand->iv = NULL; in add_candidate_1()
2273 cand->iv = alloc_iv (base, step); in add_candidate_1()
2276 if (pos != IP_ORIGINAL && cand->iv) in add_candidate_1()
2436 add_old_iv_candidates (struct ivopts_data *data, struct iv *iv) in add_old_iv_candidates() argument
2442 add_candidate (data, iv->base, iv->step, true, NULL); in add_old_iv_candidates()
2445 if (POINTER_TYPE_P (TREE_TYPE (iv->base))) in add_old_iv_candidates()
2446 add_candidate (data, size_int (0), iv->step, true, NULL); in add_old_iv_candidates()
2448 add_candidate (data, build_int_cst (TREE_TYPE (iv->base), 0), in add_old_iv_candidates()
2449 iv->step, true, NULL); in add_old_iv_candidates()
2451 phi = SSA_NAME_DEF_STMT (iv->ssa_name); in add_old_iv_candidates()
2458 iv->base, iv->step, true, IP_ORIGINAL, NULL, in add_old_iv_candidates()
2460 cand->var_before = iv->ssa_name; in add_old_iv_candidates()
2471 struct iv *iv; in add_old_ivs_candidates() local
2476 iv = ver_info (data, i)->iv; in add_old_ivs_candidates()
2477 if (iv && iv->biv_p && !integer_zerop (iv->step)) in add_old_ivs_candidates()
2478 add_old_iv_candidates (data, iv); in add_old_ivs_candidates()
2486 struct iv *iv, struct iv_use *use) in add_iv_value_candidates() argument
2492 add_candidate (data, iv->base, iv->step, false, use); in add_iv_value_candidates()
2497 basetype = TREE_TYPE (iv->base); in add_iv_value_candidates()
2501 iv->step, true, use); in add_iv_value_candidates()
2505 base = strip_offset (iv->base, &offset); in add_iv_value_candidates()
2507 || base != iv->base) in add_iv_value_candidates()
2508 add_candidate (data, base, iv->step, false, use); in add_iv_value_candidates()
2531 add_iv_value_candidates (data, use->iv, use); in add_derived_ivs_candidates()
2946 tree ubase = use->iv->base; in get_computation_aff()
2947 tree ustep = use->iv->step; in get_computation_aff()
2948 tree cbase = cand->iv->base; in get_computation_aff()
2949 tree cstep = cand->iv->step, cstep_common; in get_computation_aff()
3021 tree type = TREE_TYPE (use->iv->base); in get_computation_at()
4025 tree ubase = use->iv->base, ustep = use->iv->step; in get_computation_cost_at()
4038 if (!cand->iv) in get_computation_cost_at()
4041 cbase = cand->iv->base; in get_computation_cost_at()
4042 cstep = cand->iv->step; in get_computation_cost_at()
4052 || (use->iv->base_object in get_computation_cost_at()
4053 && cand->iv->base_object in get_computation_cost_at()
4054 && POINTER_TYPE_P (TREE_TYPE (use->iv->base_object)) in get_computation_cost_at()
4055 && POINTER_TYPE_P (TREE_TYPE (cand->iv->base_object)))) in get_computation_cost_at()
4062 if (use->iv->base_object in get_computation_cost_at()
4063 && cand->iv->base_object in get_computation_cost_at()
4064 && !operand_equal_p (use->iv->base_object, cand->iv->base_object, 0)) in get_computation_cost_at()
4320 struct iv *iv = cand->iv; in cand_value_at() local
4321 tree type = TREE_TYPE (iv->base); in cand_value_at()
4326 tree_to_aff_combination (iv->step, steptype, &step); in cand_value_at()
4333 tree_to_aff_combination (iv->base, type, val); in cand_value_at()
4340 iv_period (struct iv *iv) in iv_period() argument
4342 tree step = iv->step, period, type; in iv_period()
4546 cand_type = TREE_TYPE (cand->iv->base); in iv_elimination_compare_lt()
4558 if (!cst_and_fits_in_hwi (cand->iv->step)) in iv_elimination_compare_lt()
4560 step = int_cst_value (cand->iv->step); in iv_elimination_compare_lt()
4607 offset = fold_build2 (MULT_EXPR, TREE_TYPE (cand->iv->step), in iv_elimination_compare_lt()
4608 cand->iv->step, in iv_elimination_compare_lt()
4609 fold_convert (TREE_TYPE (cand->iv->step), a)); in iv_elimination_compare_lt()
4610 if (!difference_cannot_overflow_p (cand->iv->base, offset)) in iv_elimination_compare_lt()
4641 if (TREE_CODE (cand->iv->step) != INTEGER_CST) in may_eliminate_iv()
4665 period = iv_period (cand->iv); in may_eliminate_iv()
4758 struct iv *cmp_iv; in determine_use_iv_cost_condition()
4767 if (!cand->iv) in determine_use_iv_cost_condition()
5042 if (!cand->iv) in determine_iv_cost()
5052 base = cand->iv->base; in determine_iv_cost()
5269 if (cp->cand->iv) in iv_ca_set_no_cp()
5334 if (cp->cand->iv) in iv_ca_set_cp()
5844 if (!originalp && cand->iv->base_object != NULL_TREE) in try_add_cand_for()
5885 if (!originalp && cand->iv->base_object == NULL_TREE) in try_add_cand_for()
6086 if (!cand->iv) in create_new_iv()
6120 base = unshare_expr (cand->iv->base); in create_new_iv()
6122 create_iv (base, unshare_expr (cand->iv->step), in create_new_iv()
6355 tree ref, iv; in rewrite_use_address() local
6374 if (cand->iv->base_object) in rewrite_use_address()
6377 iv = var_at_stmt (data->current_loop, cand, use->stmt); in rewrite_use_address()
6380 iv, base_hint, data->speed); in rewrite_use_address()
6498 if (info->iv in remove_unused_ivs()
6499 && !integer_zerop (info->iv->step) in remove_unused_ivs()
6501 && !info->iv->have_use_for in remove_unused_ivs()
6503 bitmap_set_bit (toremove, SSA_NAME_VERSION (info->iv->ssa_name)); in remove_unused_ivs()
6545 free (info->iv); in free_loop_data()
6546 info->iv = NULL; in free_loop_data()
6558 free (use->iv); in free_loop_data()
6572 free (cand->iv); in free_loop_data()