- bitmap kill;
- bitmap sparse_kill;
-
- /* Expanded version of the DF_LT->out bitmap to match the positions
- of gen, in and out here. Only allocated if DF_RD_NO_TRIM is
- false. */
- bitmap expanded_lr_out;
-
- /* The set of defs generated in this block. This is not set unless
- the def reaches the end of the block. */
- bitmap gen;
-
- /* The results of the dataflow problem.
-
- If DF_RD_NO_TRIM is not set, these sets are SOMEWHAT trimmed by
- the output of the DF_LR problem. The out set is precisely
- trimmed during propagation which means that the result is also
- trimmed when the propagation terminates. The in set is not
- explicitly trimmed, because this is expensive (adding about 5% to
- the cost of a bootstrap). However since the out sets are trimmed
- and the in sets are built from the out of the pred, the in set is
- MOSTLY trimmed.
-
- The counter case happens at a branch where the variable V is in
- DF_LR->in the true branch but not the false branch. If V is
- defined before the branch, RD will propagate that into the
- DF_RD_in sets of both branches. When the block is processed, the
- DF_RD->out set will have V trimmed out of it but it will still be
- left in DF_RD->in.
-
- If this not a problem for the current optimizers since they were
- designed before any trimming was available. This can be fixed by
- checking the DF_LR->in set directly. */
- bitmap in; /* At the top of the block. */
- bitmap out; /* At the bottom of the block. */
+ bitmap_head kill;
+ bitmap_head sparse_kill;
+ bitmap_head gen; /* The set of defs generated in this block. */
+
+ /* The results of the dataflow problem. */
+ bitmap_head in; /* At the top of the block. */
+ bitmap_head out; /* At the bottom of the block. */
+};
+
+
+/* Multiple reaching definitions. All bitmaps are referenced by the
+ register number. */
+
+struct df_md_bb_info
+{
+ /* Local sets to describe the basic blocks. */
+ bitmap_head gen; /* Partial/conditional definitions live at BB out. */
+ bitmap_head kill; /* Other definitions that are live at BB out. */
+ bitmap_head init; /* Definitions coming from dominance frontier edges. */
+
+ /* The results of the dataflow problem. */
+ bitmap_head in; /* Just before the block itself. */
+ bitmap_head out; /* At the bottom of the block. */