DF_REF_IN_NOTE = 16,
/* This flag is set if this ref is really a clobber, and not a def. */
- DF_REF_CLOBBER = 32
+ DF_REF_CLOBBER = 32,
+
+ /* True if ref is dead (i.e. the next ref is a def or clobber or
+ the end of the function.) This is only valid the RI problem
+ has been set in this df instance. */
+ DF_REF_DIES_AFTER_THIS_USE = 64
};
rtx reg; /* The register referenced. */
unsigned int regno; /* The register number referenced. */
basic_block bb; /* Basic block containing the instruction. */
- rtx insn; /* Insn containing ref. NB: THIS MAY BE NULL. */
+
+ /* Insn containing ref. This will be null if this is an artificial
+ reference. */
+ rtx insn;
rtx *loc; /* The location of the reg. */
struct df_link *chain; /* Head of def-use, use-def. */
unsigned int id; /* Location in table. */
struct df_insn_info **insns; /* Insn table, indexed by insn UID. */
unsigned int insns_size; /* Size of insn table. */
bitmap hardware_regs_used; /* The set of hardware registers used. */
+ bitmap entry_block_defs; /* The set of hardware registers live on entry to the function. */
bitmap exit_block_uses; /* The set of hardware registers used in exit block. */
};
/* Macros to access the register information from scan dataflow record. */
-#define DF_REG_SIZE(DF) ((DF)->def_info.regs_size)
+#define DF_REG_SIZE(DF) ((DF)->def_info.regs_inited)
#define DF_REG_DEF_GET(DF, REG) ((DF)->def_info.regs[(REG)])
#define DF_REG_DEF_SET(DF, REG, VAL) ((DF)->def_info.regs[(REG)]=(VAL))
#define DF_REG_USE_GET(DF, REG) ((DF)->use_info.regs[(REG)])
/* Initialize ur_in and ur_out as if all hard registers were partially
available. */
-extern bitmap df_all_hard_regs;
-
/* The way that registers are processed, especially hard registers,
changes as the compilation proceeds. These states are passed to
df_set_state to control this processing. */