Home | History | Annotate | Download | only in gcc

Lines Matching defs:jfunc

1470    JFUNC on the constant value INPUT.  RES_TYPE is the type of the parameter
1475 ipa_get_jf_pass_through_result (struct ipa_jump_func *jfunc, tree input,
1478 return ipa_get_jf_arith_result (ipa_get_jf_pass_through_operation (jfunc),
1480 ipa_get_jf_pass_through_operand (jfunc),
1484 /* Return the result of an ancestor jump function JFUNC on the constant value
1488 ipa_get_jf_ancestor_result (struct ipa_jump_func *jfunc, tree input)
1494 poly_int64 off = ipa_get_jf_ancestor_offset (jfunc);
1502 else if (ipa_get_jf_ancestor_keep_null (jfunc)
1509 /* Determine whether JFUNC evaluates to a single known constant value and if
1516 ipa_value_from_jfunc (class ipa_node_params *info, struct ipa_jump_func *jfunc,
1519 if (jfunc->type == IPA_JF_CONST)
1520 return ipa_get_jf_constant (jfunc);
1521 else if (jfunc->type == IPA_JF_PASS_THROUGH
1522 || jfunc->type == IPA_JF_ANCESTOR)
1527 if (jfunc->type == IPA_JF_PASS_THROUGH)
1528 idx = ipa_get_jf_pass_through_formal_id (jfunc);
1530 idx = ipa_get_jf_ancestor_formal_id (jfunc);
1550 if (jfunc->type == IPA_JF_PASS_THROUGH)
1551 return ipa_get_jf_pass_through_result (jfunc, input, parm_type);
1553 return ipa_get_jf_ancestor_result (jfunc, input);
1559 /* Determine whether JFUNC evaluates to single known polymorphic context, given
1561 call graph edge corresponding to JFUNC and CSIDX index of the described
1566 ipa_jump_func *jfunc)
1576 if (jfunc->type == IPA_JF_PASS_THROUGH
1577 || jfunc->type == IPA_JF_ANCESTOR)
1582 if (jfunc->type == IPA_JF_PASS_THROUGH)
1584 if (ipa_get_jf_pass_through_operation (jfunc) != NOP_EXPR)
1586 type_preserved = ipa_get_jf_pass_through_type_preserved (jfunc);
1587 srcidx = ipa_get_jf_pass_through_formal_id (jfunc);
1591 type_preserved = ipa_get_jf_ancestor_type_preserved (jfunc);
1592 srcidx = ipa_get_jf_ancestor_formal_id (jfunc);
1612 if (jfunc->type == IPA_JF_ANCESTOR)
1613 srcctx.offset_by (ipa_get_jf_ancestor_offset (jfunc));
1639 /* Determine value_range of JFUNC given that INFO describes the caller node or
1640 the one it is inlined to, CS is the call graph edge corresponding to JFUNC
1645 ipa_jump_func *jfunc, tree parm_type)
1648 if (jfunc->m_vr)
1650 jfunc->m_vr,
1652 jfunc->m_vr->type ());
1655 if (jfunc->type == IPA_JF_PASS_THROUGH)
1665 idx = ipa_get_jf_pass_through_formal_id (jfunc);
1674 enum tree_code operation = ipa_get_jf_pass_through_operation (jfunc);
1689 tree op = ipa_get_jf_pass_through_operand (jfunc);
2164 /* Propagate values through a pass-through jump function JFUNC associated with
2170 propagate_vals_across_pass_through (cgraph_edge *cs, ipa_jump_func *jfunc,
2176 ipa_get_jf_pass_through_operation (jfunc),
2178 ipa_get_jf_pass_through_operand (jfunc),
2182 /* Propagate values through an ancestor jump function JFUNC associated with
2188 struct ipa_jump_func *jfunc,
2201 tree t = ipa_get_jf_ancestor_result (jfunc, src_val->value);
2212 /* Propagate scalar values across jump function JFUNC that is associated with
2218 struct ipa_jump_func *jfunc,
2225 if (jfunc->type == IPA_JF_CONST)
2227 tree val = ipa_get_jf_constant (jfunc);
2233 else if (jfunc->type == IPA_JF_PASS_THROUGH
2234 || jfunc->type == IPA_JF_ANCESTOR)
2241 if (jfunc->type == IPA_JF_PASS_THROUGH)
2242 src_idx = ipa_get_jf_pass_through_formal_id (jfunc);
2244 src_idx = ipa_get_jf_ancestor_formal_id (jfunc);
2256 if (jfunc->type == IPA_JF_PASS_THROUGH)
2257 ret = propagate_vals_across_pass_through (cs, jfunc, src_lat,
2261 ret = propagate_vals_across_ancestor (cs, jfunc, src_lat, dest_lat,
2275 /* Propagate scalar values across jump function JFUNC that is associated with
2280 ipa_jump_func *jfunc, int idx,
2296 if (jfunc->type == IPA_JF_PASS_THROUGH
2297 || jfunc->type == IPA_JF_ANCESTOR)
2306 if (jfunc->type == IPA_JF_PASS_THROUGH)
2308 if (ipa_get_jf_pass_through_operation (jfunc) != NOP_EXPR)
2310 type_preserved = ipa_get_jf_pass_through_type_preserved (jfunc);
2311 src_idx = ipa_get_jf_pass_through_formal_id (jfunc);
2315 type_preserved = ipa_get_jf_ancestor_type_preserved (jfunc);
2316 src_idx = ipa_get_jf_ancestor_formal_id (jfunc);
2333 if (jfunc->type == IPA_JF_ANCESTOR)
2334 cur.offset_by (ipa_get_jf_ancestor_offset (jfunc));
2361 /* Propagate bits across jfunc that is associated with
2366 ipa_jump_func *jfunc,
2394 if (jfunc->type == IPA_JF_PASS_THROUGH
2395 || jfunc->type == IPA_JF_ANCESTOR)
2403 if (jfunc->type == IPA_JF_PASS_THROUGH)
2405 code = ipa_get_jf_pass_through_operation (jfunc);
2406 src_idx = ipa_get_jf_pass_through_formal_id (jfunc);
2408 operand = ipa_get_jf_pass_through_operand (jfunc);
2413 src_idx = ipa_get_jf_ancestor_formal_id (jfunc);
2415 = ipa_get_jf_ancestor_offset (jfunc) / BITS_PER_UNIT;
2416 keep_null = (ipa_get_jf_ancestor_keep_null (jfunc) || !offset);
2423 /* Try to propagate bits if src_lattice is bottom, but jfunc is known.
2443 if (jfunc->bits)
2444 return dest_lattice->meet_with (jfunc->bits->value, jfunc->bits->mask,
2450 /* Propagate value range across jump function JFUNC that is associated with
2455 propagate_vr_across_jump_function (cgraph_edge *cs, ipa_jump_func *jfunc,
2469 if (jfunc->type == IPA_JF_PASS_THROUGH)
2471 enum tree_code operation = ipa_get_jf_pass_through_operation (jfunc);
2473 int src_idx = ipa_get_jf_pass_through_formal_id (jfunc);
2492 tree op = ipa_get_jf_pass_through_operand (jfunc);
2505 if (jfunc->m_vr)
2508 if (ipa_vr_operation_and_type_effects (&jvr, jfunc->m_vr,
2511 jfunc->m_vr->type ()))
2517 else if (jfunc->type == IPA_JF_CONST)
2519 tree val = ipa_get_jf_constant (jfunc);
2532 if (jfunc->m_vr
2533 && ipa_vr_operation_and_type_effects (&vr, jfunc->m_vr, NOP_EXPR,
2535 jfunc->m_vr->type ()))
2703 pass-through JFUNC and if so, whether it has conform and conforms to the
2708 jfunc)
2712 || ipa_get_jf_pass_through_agg_preserved (jfunc));
2794 /* Propagate scalar values across jump function JFUNC that is associated with
2799 struct ipa_jump_func *jfunc,
2807 if (jfunc->type == IPA_JF_PASS_THROUGH
2808 && ipa_get_jf_pass_through_operation (jfunc) == NOP_EXPR)
2811 int src_idx = ipa_get_jf_pass_through_formal_id (jfunc);
2815 if (agg_pass_through_permissible_p (src_plats, jfunc))
2819 gcc_assert (!jfunc->agg.items);
2825 else if (jfunc->type == IPA_JF_ANCESTOR
2826 && ipa_get_jf_ancestor_agg_preserved (jfunc))
2829 int src_idx = ipa_get_jf_ancestor_formal_id (jfunc);
2837 gcc_assert (!jfunc->agg.items);
2839 ipa_get_jf_ancestor_offset (jfunc));
2848 if (jfunc->agg.items)
2855 if (set_check_aggs_by_ref (dest_plats, jfunc->agg.by_ref))
2860 FOR_EACH_VEC_ELT (*jfunc->agg.items, i, item)
4954 ipa_jump_func *jfunc = ipa_get_ith_jump_func (args, index);
4955 if (jfunc->type == IPA_JF_CONST)
4963 ipa_zap_jf_refdesc (jfunc);
4970 if (jfunc->type != IPA_JF_PASS_THROUGH
4971 || ipa_get_jf_pass_through_operation (jfunc) != NOP_EXPR
4972 || ipa_get_jf_pass_through_refdesc_decremented (jfunc))
4975 int fidx = ipa_get_jf_pass_through_formal_id (jfunc);
4999 ipa_set_jf_pass_through_refdesc_decremented (jfunc, true);
5238 /* Return true if JFUNC, which describes a i-th parameter of call CS, is a
5240 IPA-CP clone. When SIMPLE is true, further check if JFUNC is a simple
5244 self_recursive_pass_through_p (cgraph_edge *cs, ipa_jump_func *jfunc, int i,
5250 && jfunc->type == IPA_JF_PASS_THROUGH
5251 && (!simple || ipa_get_jf_pass_through_operation (jfunc) == NOP_EXPR)
5252 && ipa_get_jf_pass_through_formal_id (jfunc) == i
5259 /* Return true if JFUNC, which describes a part of an aggregate represented or
5262 SIMPLE is true, further check if JFUNC is a simple no-operation
5266 self_recursive_agg_pass_through_p (cgraph_edge *cs, ipa_agg_jf_item *jfunc,
5272 && jfunc->jftype == IPA_JF_LOAD_AGG
5273 && jfunc->offset == jfunc->value.load_agg.offset
5274 && (!simple || jfunc->value.pass_through.operation == NOP_EXPR)
5275 && jfunc->value.pass_through.formal_id == i
5276 && useless_type_conversion_p (jfunc->value.load_agg.type, jfunc->type)
5405 ipa_jump_func *jfunc = ipa_get_ith_jump_func (args, i);
5408 cs, i, jfunc);
5584 struct ipa_jump_func *jfunc;
5585 jfunc = ipa_get_ith_jump_func (ipa_edge_args_sum->get (cs), index);
5586 if (jfunc->type == IPA_JF_PASS_THROUGH
5587 && ipa_get_jf_pass_through_operation (jfunc) == NOP_EXPR)
5590 int src_idx = ipa_get_jf_pass_through_formal_id (jfunc);
5598 if (agg_pass_through_permissible_p (orig_plats, jfunc))
5612 if (agg_pass_through_permissible_p (src_plats, jfunc))
5616 gcc_checking_assert (!jfunc->agg.items);
5625 else if (jfunc->type == IPA_JF_ANCESTOR
5626 && ipa_get_jf_ancestor_agg_preserved (jfunc))
5629 int src_idx = ipa_get_jf_ancestor_formal_id (jfunc);
5631 HOST_WIDE_INT delta = ipa_get_jf_ancestor_offset (jfunc);
5646 gcc_checking_assert (!src_plats->aggs || !jfunc->agg.items);
5655 if (jfunc->agg.items)
5662 for (unsigned i = 0; i < jfunc->agg.items->length (); i++)
5664 struct ipa_agg_jf_item *agg_item = &(*jfunc->agg.items)[i];
5685 while ((unsigned) l < jfunc->agg.items->length ())
5688 ti = &(*jfunc->agg.items)[l];
5778 struct ipa_jump_func *jfunc
5780 if (self_recursive_pass_through_p (cs, jfunc, i)
5782 || ipa_get_jf_pass_through_agg_preserved (jfunc)))