aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Sandiford <rsandifo@nildram.co.uk>2007-07-27 07:16:15 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2007-07-27 07:16:15 +0000
commitab34041dfea64dec723185694ad33af0b8d76f78 (patch)
treeed681cbfd759f2d6dd32ffc8eebe3331601655db /gcc
parent6f5c15202db6f8e32c0b0005fb929b437841378b (diff)
downloadgcc-ab34041dfea64dec723185694ad33af0b8d76f78.zip
gcc-ab34041dfea64dec723185694ad33af0b8d76f78.tar.gz
gcc-ab34041dfea64dec723185694ad33af0b8d76f78.tar.bz2
2007-xx-xx Richard Sandiford <rsandifo@nildram.co.uk>
Richard Guenther <rguenther@suse.de> gcc/ * df.h (df_mw_hardreg): Turn df_ref_type and df_ref_flags into bitfields. (df_ref): Likewise. Put regno with other integer fields. From-SVN: r126971
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/df.h18
2 files changed, 19 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4865f2b..db34fcd 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.
diff --git a/gcc/df.h b/gcc/df.h
index 7740431..2547286 100644
--- a/gcc/df.h
+++ b/gcc/df.h
@@ -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