diff options
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/df.h | 18 |
2 files changed, 19 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4865f2be933..db34fcd8224 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2007-07-27 Richard Sandiford <rsandifo@nildram.co.uk> + * df.h (df_mw_hardreg): Turn df_ref_type and df_ref_flags + into bitfields. + (df_ref): Likewise. Put regno with other integer fields. + +2007-07-27 Richard Sandiford <rsandifo@nildram.co.uk> + * df.h (df_mw_hardreg): Remove "loc" field. * df-scan.c (df_ref_record): Don't set it. Remove redundant local variable. @@ -311,8 +311,12 @@ struct dataflow struct df_mw_hardreg { rtx mw_reg; /* The multiword hardreg. */ - enum df_ref_type type; /* Used to see if the ref is read or write. */ - enum df_ref_flags flags; /* Various flags. */ + /* These two bitfields are intentially oversized, in the hope that + accesses to 16-bit fields will usually be quicker. */ + ENUM_BITFIELD(df_ref_type) type : 16; + /* Used to see if the ref is read or write. */ + ENUM_BITFIELD(df_ref_flags) flags : 16; + /* Various flags. */ unsigned int start_regno; /* First word of the multi word subreg. */ unsigned int end_regno; /* Last word of the multi word subreg. */ unsigned int mw_order; /* Same as df_ref.ref_order. */ @@ -341,7 +345,6 @@ struct df_insn_info struct df_ref { rtx reg; /* The register referenced. */ - unsigned int regno; /* The register number referenced. */ basic_block bb; /* Basic block containing the instruction. */ /* Insn containing ref. This will be null if this is an artificial @@ -356,8 +359,13 @@ struct df_ref used to totally order the refs in an insn. */ unsigned int ref_order; - enum df_ref_type type; /* Type of ref. */ - enum df_ref_flags flags; /* Various flags. */ + unsigned int regno; /* The register number referenced. */ + /* These two bitfields are intentially oversized, in the hope that + accesses to 16-bit fields will usually be quicker. */ + ENUM_BITFIELD(df_ref_type) type : 16; + /* Type of ref. */ + ENUM_BITFIELD(df_ref_flags) flags : 16; + /* Various flags. */ /* For each regno, there are three chains of refs, one for the uses, the eq_uses and the defs. These chains go thru the refs |