Lines Matching refs:phi

35        o Replace phi nodes with conditional modify expr
302 if_convertible_phi_p (struct loop *loop, basic_block bb, tree phi)
307 print_generic_stmt (dump_file, phi, TDF_SLIM);
310 if (bb != loop->header && PHI_NUM_ARGS (phi) != 2)
313 fprintf (dump_file, "More than two phi node args.\n");
317 if (!is_gimple_reg (SSA_NAME_VAR (PHI_RESULT (phi))))
321 FOR_EACH_IMM_USE_FAST (use_p, imm_iter, PHI_RESULT (phi))
326 fprintf (dump_file, "Difficult to handle this virtual phi.\n");
490 - If its basic blocks and phi nodes are if convertible. See above for
498 tree phi;
566 /* What about phi nodes ? */
567 phi = phi_nodes (bb);
569 /* Clear aux field of incoming edges to a bb with a phi node. */
570 if (phi)
575 for (; phi; phi = PHI_CHAIN (phi))
576 if (!if_convertible_phi_p (loop, bb, phi))
680 whose phi arguments are selected when cond is true. */
794 When COND is true, phi arg from TRUE_BB is selected.
798 replace_phi_with_cond_modify_expr (tree phi, tree cond, basic_block true_bb,
806 gcc_assert (TREE_CODE (phi) == PHI_NODE);
809 gcc_assert (PHI_NUM_ARGS (phi) == 2);
812 bb = bb_for_stmt (phi);
817 arg_0 = PHI_ARG_DEF (phi, 1);
818 arg_1 = PHI_ARG_DEF (phi, 0);
822 arg_0 = PHI_ARG_DEF (phi, 0);
823 arg_1 = PHI_ARG_DEF (phi, 1);
827 rhs = build3 (COND_EXPR, TREE_TYPE (PHI_RESULT (phi)),
832 new_stmt = build2 (MODIFY_EXPR, TREE_TYPE (PHI_RESULT (phi)),
833 unshare_expr (PHI_RESULT (phi)), rhs);
835 /* Make new statement definition of the original phi result. */
836 SSA_NAME_DEF_STMT (PHI_RESULT (phi)) = new_stmt;
844 fprintf (dump_file, "new phi replacement stmt\n");
849 /* Process phi nodes for the given LOOP. Replace phi nodes with cond
859 /* Replace phi nodes with cond. modify expr. */
862 tree phi, cond;
870 phi = phi_nodes (bb);
875 if (phi)
878 while (phi)
880 tree next = PHI_CHAIN (phi);
881 replace_phi_with_cond_modify_expr (phi, cond, true_bb, &bsi);
882 release_phi_node (phi);
883 phi = next;
902 /* Process phi nodes to prepare blocks for merge. */