Home | History | Annotate | Download | only in gcc

Lines Matching defs:problem

31 The file df-problems.cc 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.
412 /* Add PROBLEM (and any dependent problems) to the DF instance. */
415 df_add_problem (const struct df_problem *problem)
420 /* First try to add the dependent problem. */
421 if (problem->dependent_problem)
422 df_add_problem (problem->dependent_problem);
424 /* Check to see if this problem has already been defined. If it
427 dflow = df->problems_by_index[problem->id];
433 dflow->problem = problem;
436 df->problems_by_index[dflow->problem->id] = dflow;
439 problem that RI will use the information from UREC if UREC has
448 if (problem->id < df->problems_in_order[i]->problem->id)
460 /* Set the MASK flags in the DFLOW problem. The old flags are
472 /* Clear the MASK flags in the DFLOW problem. The old flags are
505 if (dflow->optional_p && dflow->problem->reset_fun)
506 dflow->problem->reset_fun (df->blocks_to_analyze);
507 else if (dflow->problem->free_blocks_on_set_blocks)
518 dflow->problem->free_bb_fun (bb, bb_info);
535 if (dflow->optional_p && dflow->problem->reset_fun)
546 dflow->problem->reset_fun (&blocks_to_reset);
579 /* Delete a DFLOW problem (and any problems that depend on this
580 problem). */
585 const struct df_problem *problem;
591 problem = dflow->problem;
592 gcc_assert (problem->remove_problem_fun);
594 /* Delete any problems that depended on this problem first. */
596 if (df->problems_in_order[i]->problem->dependent_problem == problem)
599 /* Now remove this problem. */
611 (problem->remove_problem_fun) ();
612 df->problems_by_index[problem->id] = NULL;
639 /* We iterate over problems by index as each problem removed will
814 dflow->problem->free_fun ();
913 changed |= dataflow->problem->con_fun_n (e);
915 else if (dataflow->problem->con_fun_0)
916 dataflow->problem->con_fun_0 (bb);
919 && dataflow->problem->trans_fun (bb_index))
960 changed |= dataflow->problem->con_fun_n (e);
962 else if (dataflow->problem->con_fun_0)
963 dataflow->problem->con_fun_0 (bb);
966 && dataflow->problem->trans_fun (bb_index))
984 DATAFLOW is problem we are solving, PENDING is worklist of basic blocks we
1009 enum df_flow_dir dir = dataflow->problem->dir;
1089 enum df_flow_dir dir = dataflow->problem->dir;
1117 /* Initialize the problem. */
1118 if (dataflow->problem->init_fun)
1119 dataflow->problem->init_fun (blocks_to_consider);
1147 /* Execute dataflow analysis on a single dataflow problem.
1159 timevar_push (dflow->problem->tv_id);
1161 /* (Re)Allocate the datastructures necessary to solve the problem. */
1162 if (dflow->problem->alloc_fun)
1163 dflow->problem->alloc_fun (blocks_to_consider);
1166 if (dflow->problem->verify_start_fun)
1167 dflow->problem->verify_start_fun ();
1170 /* Set up the problem and compute the local information. */
1171 if (dflow->problem->local_compute_fun)
1172 dflow->problem->local_compute_fun (blocks_to_consider);
1175 if (dflow->problem->dataflow_fun)
1176 dflow->problem->dataflow_fun (dflow, blocks_to_consider,
1180 if (dflow->problem->finalize_fun)
1181 dflow->problem->finalize_fun (blocks_to_consider);
1184 if (dflow->problem->verify_end_fun)
1185 dflow->problem->verify_end_fun ();
1188 timevar_pop (dflow->problem->tv_id);
1217 /* Skip over the DF_SCAN problem. */
1223 if (dflow->problem->dir == DF_FORWARD)
1464 Depending on the direction of the dataflow problem,
1506 user_dflow.problem = &user_problem;
1528 + index * dflow->problem->block_info_elt_size);
1540 + index * dflow->problem->block_info_elt_size,
1541 bb_info, dflow->problem->block_info_elt_size);
1553 + index * dflow->problem->block_info_elt_size,
1554 0, dflow->problem->block_info_elt_size);
1616 * dflow->problem->block_info_elt_size);
1619 * dflow->problem->block_info_elt_size,
1622 * dflow->problem->block_info_elt_size);
1658 dflow problem. */
1677 /* Now shuffle the block info for the problem. */
1678 if (dflow->problem->free_bb_fun)
1681 * dflow->problem->block_info_elt_size);
1686 /* Copy the bb info from the problem tmps to the proper
1694 + bb->index * dflow->problem->block_info_elt_size);
1698 + i * dflow->problem->block_info_elt_size, 0,
1700 * dflow->problem->block_info_elt_size);
1780 problem will be reanalyzed. */
1794 if (dflow->problem->free_bb_fun)
1799 dflow->problem->free_bb_fun (bb, bb_info);
2161 /* Dump the introductory information for each problem defined. */
2182 df_dump_problem_function fun = dflow->problem->dump_start_fun;
2207 bbfun = dflow->problem->dump_top_fun;
2209 bbfun = dflow->problem->dump_bottom_fun;
2251 insnfun = dflow->problem->dump_insn_top_fun;
2253 insnfun = dflow->problem->dump_insn_bottom_fun;