Lines Matching defs:problem

31 The file df-problems.c provides problem instance for the most common
41 There are three variations of the live variable problem that are
42 available whenever dataflow is available. The LR problem finds the
45 problem finds the intersection of these two areas.
83 DF_[chain,live,note,rd]_ADD_PROBLEM adds a problem, defined by an
85 instance of df. All calls to add a problem for a given instance of df
90 definitions. As long as these dependencies are listed in the problem
93 df_add_problem. Note that it is not necessary to have a problem. In
150 using this is SIMPLY WRONG. The problem is that when a ref is
157 produce unexpected results. The problem is that the incremental
162 problem here, but if the pass is depending on the chains being
240 needed) it to formulate a problem specific solution.
433 df_add_problem (struct df_problem *problem)
438 /* First try to add the dependent problem. */
439 if (problem->dependent_problem)
440 df_add_problem (problem->dependent_problem);
442 /* Check to see if this problem has already been defined. If it
445 dflow = df->problems_by_index[problem->id];
451 dflow->problem = problem;
454 df->problems_by_index[dflow->problem->id] = dflow;
457 problem that RI will use the information from UREC if UREC has
466 if (problem->id < df->problems_in_order[i]->problem->id)
478 /* Set the MASK flags in the DFLOW problem. The old flags are
490 /* Clear the MASK flags in the DFLOW problem. The old flags are
524 if (dflow->optional_p && dflow->problem->reset_fun)
525 dflow->problem->reset_fun (df->blocks_to_analyze);
526 else if (dflow->problem->free_blocks_on_set_blocks)
537 dflow->problem->free_bb_fun (bb, bb_info);
556 if (dflow->optional_p && dflow->problem->reset_fun)
567 dflow->problem->reset_fun (&blocks_to_reset);
600 /* Delete a DFLOW problem (and any problems that depend on this
601 problem). */
606 struct df_problem *problem;
612 problem = dflow->problem;
613 gcc_assert (problem->remove_problem_fun);
615 /* Delete any problems that depended on this problem first. */
617 if (df->problems_in_order[i]->problem->dependent_problem == problem)
620 /* Now remove this problem. */
632 (problem->remove_problem_fun) ();
633 df->problems_by_index[problem->id] = NULL;
664 struct df_problem *problem = dflow->problem;
668 gcc_assert (problem->remove_problem_fun);
669 (problem->remove_problem_fun) ();
671 df->problems_by_index[problem->id] = NULL;
845 dflow->problem->free_fun ();
945 changed |= dataflow->problem->con_fun_n (e);
947 else if (dataflow->problem->con_fun_0)
948 dataflow->problem->con_fun_0 (bb);
951 && dataflow->problem->trans_fun (bb_index))
990 changed |= dataflow->problem->con_fun_n (e);
992 else if (dataflow->problem->con_fun_0)
993 dataflow->problem->con_fun_0 (bb);
996 && dataflow->problem->trans_fun (bb_index))
1014 DATAFLOW is problem we are solving, PENDING is worklist of basic blocks we
1039 enum df_flow_dir dir = dataflow->problem->dir;
1123 enum df_flow_dir dir = dataflow->problem->dir;
1150 /* Initialize the problem. */
1151 if (dataflow->problem->init_fun)
1152 dataflow->problem->init_fun (blocks_to_consider);
1181 /* Execute dataflow analysis on a single dataflow problem.
1193 timevar_push (dflow->problem->tv_id);
1195 /* (Re)Allocate the datastructures necessary to solve the problem. */
1196 if (dflow->problem->alloc_fun)
1197 dflow->problem->alloc_fun (blocks_to_consider);
1200 if (dflow->problem->verify_start_fun)
1201 dflow->problem->verify_start_fun ();
1204 /* Set up the problem and compute the local information. */
1205 if (dflow->problem->local_compute_fun)
1206 dflow->problem->local_compute_fun (blocks_to_consider);
1209 if (dflow->problem->dataflow_fun)
1210 dflow->problem->dataflow_fun (dflow, blocks_to_consider,
1214 if (dflow->problem->finalize_fun)
1215 dflow->problem->finalize_fun (blocks_to_consider);
1218 if (dflow->problem->verify_end_fun)
1219 dflow->problem->verify_end_fun ();
1222 timevar_pop (dflow->problem->tv_id);
1251 /* Skip over the DF_SCAN problem. */
1257 if (dflow->problem->dir == DF_FORWARD)
1503 Depending on the direction of the dataflow problem,
1545 user_dflow.problem = &user_problem;
1567 + index * dflow->problem->block_info_elt_size);
1579 + index * dflow->problem->block_info_elt_size,
1580 bb_info, dflow->problem->block_info_elt_size);
1592 + index * dflow->problem->block_info_elt_size,
1593 0, dflow->problem->block_info_elt_size);
1655 * dflow->problem->block_info_elt_size);
1658 * dflow->problem->block_info_elt_size,
1661 * dflow->problem->block_info_elt_size);
1698 dflow problem. */
1717 /* Now shuffle the block info for the problem. */
1718 if (dflow->problem->free_bb_fun)
1721 * dflow->problem->block_info_elt_size);
1726 /* Copy the bb info from the problem tmps to the proper
1734 + bb->index * dflow->problem->block_info_elt_size);
1738 + i * dflow->problem->block_info_elt_size, 0,
1740 * dflow->problem->block_info_elt_size);
1822 problem will be reanalyzed. */
1836 if (dflow->problem->free_bb_fun)
1841 dflow->problem->free_bb_fun (bb, bb_info);
2202 /* Dump the introductory information for each problem defined. */
2223 df_dump_problem_function fun = dflow->problem->dump_start_fun;
2248 bbfun = dflow->problem->dump_top_fun;
2250 bbfun = dflow->problem->dump_bottom_fun;
2292 insnfun = dflow->problem->dump_insn_top_fun;
2294 insnfun = dflow->problem->dump_insn_bottom_fun;