Lines Matching refs:df

30 The files in this collection (df*.c,df.h) provide a general framework
34 The file df-problems.c provides problem instance for the most common
44 struct df *df;
46 df = df_init (init_flags);
48 df_add_problem (df, problem, flags);
50 df_set_blocks (df, blocks);
52 df_rescan_blocks (df, blocks);
54 df_analyze (df);
56 df_dump (df, stderr);
58 df_finish (df);
62 DF_INIT simply creates a poor man's object (df) that needs to be
77 df_problem, to the set of problems solved in this instance of df. All
78 calls to add a problem for a given instance of df must occur before
81 For all of the problems defined in df-problems.c, there are
91 that case, df will just be used to do the scanning.
171 instructions in df-scan.c. However, these are not currently connected
208 df instance was created.
296 #include "df.h"
299 static struct df *ddf = NULL;
300 struct df *shared_df = NULL;
305 Functions to create, destroy and manipulate an instance of df.
312 struct df *
315 struct df *df = XCNEW (struct df);
321 /* All df instance must define the scanning problem. */
322 df_scan_add_problem (df, flags);
323 ddf = df;
324 return df;
330 df_add_problem (struct df *df, struct df_problem *problem, int flags)
336 (problem->dependent_problem_fun) (df, 0);
341 dflow = df->problems_by_index[problem->id];
348 dflow->df = df;
350 df->problems_in_order[df->num_problems_defined++] = dflow;
351 df->problems_by_index[dflow->problem->id] = dflow;
392 df_set_blocks (struct df *df, bitmap blocks)
396 if (df->blocks_to_analyze)
400 bitmap_and_compl (diff, df->blocks_to_analyze, blocks);
401 for (p = df->num_problems_defined - 1; p >= 0 ;p--)
403 struct dataflow *dflow = df->problems_in_order[p];
405 dflow->problem->reset_fun (dflow, df->blocks_to_analyze);
430 struct dataflow *scan_dflow = df->problems_by_index [DF_SCAN];
435 for (p = df->num_problems_defined - 1; p >= 0 ;p--)
437 struct dataflow *dflow = df->problems_in_order[p];
455 df->blocks_to_analyze = BITMAP_ALLOC (NULL);
457 bitmap_copy (df->blocks_to_analyze, blocks);
461 if (df->blocks_to_analyze)
463 BITMAP_FREE (df->blocks_to_analyze);
464 df->blocks_to_analyze = NULL;
475 df_delete_basic_block (struct df *df, int bb_index)
480 for (i = 0; i < df->num_problems_defined; i++)
482 struct dataflow *dflow = df->problems_in_order[i];
494 df_finish1 (struct df *df)
498 for (i = 0; i < df->num_problems_defined; i++)
499 df->problems_in_order[i]->problem->free_fun (df->problems_in_order[i]);
501 free (df);
787 df_analyze (struct df *df)
804 if (!df->blocks_to_scan)
805 df_rescan_blocks (df, NULL);
809 bitmap_and_into (df->blocks_to_scan, current_all_blocks);
811 if (df->blocks_to_analyze)
814 bitmap_and_into (df->blocks_to_analyze, current_all_blocks);
815 n_blocks = df_prune_to_subcfg (postorder, n_blocks, df->blocks_to_analyze);
821 df->blocks_to_analyze = current_all_blocks;
826 for (i = 1; i < df->num_problems_defined; i++)
827 df_analyze_problem (df->problems_in_order[i],
828 df->blocks_to_analyze, df->blocks_to_analyze,
829 df->blocks_to_scan,
834 BITMAP_FREE (df->blocks_to_analyze);
835 df->blocks_to_analyze = NULL;
838 BITMAP_FREE (df->blocks_to_scan);
839 df->blocks_to_scan = NULL;
874 df_compact_blocks (struct df *df)
882 for (p = 0; p < df->num_problems_defined; p++)
884 struct dataflow *dflow = df->problems_in_order[p];
936 df_bb_replace (struct df *df, int old_index, basic_block new_block)
940 for (p = 0; p < df->num_problems_defined; p++)
942 struct dataflow *dflow = df->problems_in_order[p];
970 df_bb_regno_last_use_find (struct df *df, basic_block bb, unsigned int regno)
982 for (use = DF_INSN_UID_GET (df, uid)->uses; use; use = use->next_ref)
993 df_bb_regno_first_def_find (struct df *df, basic_block bb, unsigned int regno)
1005 for (def = DF_INSN_UID_GET (df, uid)->defs; def; def = def->next_ref)
1016 df_bb_regno_last_def_find (struct df *df, basic_block bb, unsigned int regno)
1028 for (def = DF_INSN_UID_GET (df, uid)->defs; def; def = def->next_ref)
1039 df_insn_regno_def_p (struct df *df, rtx insn, unsigned int regno)
1045 for (def = DF_INSN_UID_GET (df, uid)->defs; def; def = def->next_ref)
1057 df_find_def (struct df *df, rtx insn, rtx reg)
1067 for (def = DF_INSN_UID_GET (df, uid)->defs; def; def = def->next_ref)
1078 df_reg_defined (struct df *df, rtx insn, rtx reg)
1080 return df_find_def (df, insn, reg) != NULL;
1088 df_find_use (struct df *df, rtx insn, rtx reg)
1098 for (use = DF_INSN_UID_GET (df, uid)->uses; use; use = use->next_ref)
1109 df_reg_used (struct df *df, rtx insn, rtx reg)
1111 return df_find_use (df, insn, reg) != NULL;
1122 df_dump (struct df *df, FILE *file)
1126 if (!df || !file)
1132 df->def_info.bitmap_size, df->use_info.bitmap_size);
1134 for (i = 0; i < df->num_problems_defined; i++)
1135 df->problems_in_order[i]->problem->dump_fun (df->problems_in_order[i], file);
1162 df_regs_chain_dump (struct df *df ATTRIBUTE_UNUSED, struct df_ref *ref, FILE *file)
1199 df_insn_uid_debug (struct df *df, unsigned int uid,
1204 if (DF_INSN_UID_DEFS (df, uid))
1205 bbi = DF_REF_BBNO (DF_INSN_UID_DEFS (df, uid));
1206 else if (DF_INSN_UID_USES(df, uid))
1207 bbi = DF_REF_BBNO (DF_INSN_UID_USES (df, uid));
1212 uid, bbi, DF_INSN_UID_LUID (df, uid));
1214 if (DF_INSN_UID_DEFS (df, uid))
1217 df_refs_chain_dump (DF_INSN_UID_DEFS (df, uid), follow_chain, file);
1220 if (DF_INSN_UID_USES (df, uid))
1223 df_refs_chain_dump (DF_INSN_UID_USES (df, uid), follow_chain, file);
1226 if (DF_INSN_UID_MWS (df, uid))
1229 df_mws_dump (DF_INSN_UID_MWS (df, uid), file);
1236 df_insn_debug (struct df *df, rtx insn, bool follow_chain, FILE *file)
1238 df_insn_uid_debug (df, INSN_UID (insn), follow_chain, file);
1242 df_insn_debug_regno (struct df *df, rtx insn, FILE *file)
1248 if (DF_INSN_UID_DEFS (df, uid))
1249 bbi = DF_REF_BBNO (DF_INSN_UID_DEFS (df, uid));
1250 else if (DF_INSN_UID_USES(df, uid))
1251 bbi = DF_REF_BBNO (DF_INSN_UID_USES (df, uid));
1256 uid, bbi, DF_INSN_LUID (df, insn));
1257 df_regs_chain_dump (df, DF_INSN_UID_DEFS (df, uid), file);
1260 df_regs_chain_dump (df, DF_INSN_UID_USES (df, uid), file);
1265 df_regno_debug (struct df *df, unsigned int regno, FILE *file)
1268 df_regs_chain_dump (df, DF_REG_DEF_GET (df, regno)->reg_chain, file);
1270 df_regs_chain_dump (df, DF_REG_USE_GET (df, regno)->reg_chain, file);