Lines Matching refs:phi
77 /* Given a PHI, and one of its arguments (DEF), find the edge for
78 that argument and return it. If the argument occurs twice in the PHI node,
82 find_bb_for_arg (gphi *phi, tree def)
87 for (i = 0; i < gimple_phi_num_args (phi); i++)
88 if (PHI_ARG_DEF (phi, i) == def)
93 result = gimple_phi_arg_edge (phi, i)->src;
100 We could also do the case where the first immediate use is in a phi node,
103 in the statement occurs for multiple edges in the various phi nodes it's
146 if (gphi *phi = dyn_cast <gphi *> (usestmt))
150 useblock = gimple_phi_arg_edge (phi, idx)->src;
324 merging PHI node. */
359 common dominator of all the immediate uses. For PHI nodes, we have to
390 /* For PHI nodes the block we know sth about is the incoming block
394 /* If the PHI defines the virtual operand, ignore it. */
397 /* In case the PHI node post-dominates the current insert
474 /* This can happen if there are multiple uses in a PHI. */
494 our virtual PHI. We do this before sinking stmts from BB as it might
503 gphi *phi;
506 && (phi = get_virtual_phi (bb)))
515 /* Search for common stores defined by all virtual PHI args.
521 for (unsigned i = 0; i < gimple_phi_num_args (phi); ++i)
523 tree arg = gimple_phi_arg_def (phi, i);
527 || (gimple_phi_arg_edge (phi, i)->flags & EDGE_ABNORMAL)
531 another PHI
543 if (USE_STMT (use_p) != phi)
571 /* Check if we need a PHI node to merge the stored values. */
602 /* Insert a PHI to merge differing stored values if necessary.
627 /* If we have more than one use of a VDEF on the PHI make sure
640 gimple_set_vdef (first_store, gimple_phi_result (phi));
642 gimple_phi_set_result (phi, make_ssa_name (gimple_vop (cfun)));
643 gimple_set_vuse (first_store, gimple_phi_result (phi));
677 /* Sink common stores from the predecessor through our virtual PHI. */
789 a_6 = PHI (a_5, a_1);
803 a_6 = PHI (a_5, a_1);