Home | History | Annotate | Download | only in gcc

Lines Matching refs:phi

37 /* This pass propagates indirect loads through the PHI node for its
39 allow for PHI optimization to trigger.
43 # addr_1 = PHI <&a, &b>
48 # tmp_1 = PHI <a, b>
55 # b_12 = PHI <&c(2), D.2077_2(3)>
59 # b_15 = PHI <b_12(4), &b(5)>
63 # b_18 = PHI <D.2080_5(6), &c(7)>
66 # b_21 = PHI <b_15(8), b_18(9)>
74 where this pass transforms it to a form later PHI optimization
91 /* Structure to keep track of the value of a dereferenced PHI result
129 /* Insert a new phi node for the dereference of PHI at basic_block
133 phiprop_insert_phi (basic_block bb, gphi *phi, gimple *use_stmt,
144 /* Build a new PHI node to replace the definition of
152 fprintf (dump_file, "Inserting PHI for result of load ");
156 /* Add PHI arguments for each edge inserting loads of the
164 old_arg = PHI_ARG_DEF_FROM_EDGE (phi, e);
165 locus = gimple_phi_arg_location_from_edge (phi, e);
180 print_generic_expr (dump_file, PHI_ARG_DEF_FROM_EDGE (phi, e));
181 fprintf (dump_file, " reusing PHI result ");
198 old_arg = PHI_ARG_DEF_FROM_EDGE (phi, e);
213 print_generic_expr (dump_file, PHI_ARG_DEF_FROM_EDGE (phi, e));
247 /* Propagate between the phi node arguments of PHI in BB and phi result
249 # p_2 = PHI <&x, &y>
254 # z_2 = PHI <x, y>
262 propagate_with_phi (basic_block bb, gphi *phi, struct phiprop_d *phivn,
265 tree ptr = PHI_RESULT (phi);
281 /* Check if we can "cheaply" dereference all phi arguments. */
282 FOR_EACH_PHI_ARG (arg_p, phi, i, SSA_OP_USE)
319 can move the loads to the place of the ptr phi node. */
327 /* Only replace loads in blocks that post-dominate the PHI node. That
376 gimple_bb (phi))))
400 phiprop_insert_phi (bb, phi, use_stmt, phivn, n);
402 /* Remove old stmt. The phi is taken care of by DCE. */
418 /* Found a proper dereference. Insert a phi node if this
422 res = phiprop_insert_phi (bb, phi, use_stmt, phivn, n);
429 /* Remove old stmt. The phi is taken care of by DCE, if we
511 did_something |= propagate_with_phi (bb, gsi.phi (), phivn, n);