aboutsummaryrefslogtreecommitdiff
path: root/gcc/df.h
diff options
context:
space:
mode:
authorMichael Matz <matz@suse.de>2003-03-07 22:06:16 +0000
committerMichael Matz <matz@gcc.gnu.org>2003-03-07 22:06:16 +0000
commit50aac998d41d566b358f8421c5e55188435422d7 (patch)
treedc3dd5799fdb6c6f8502860ceee126f8a01cd83b /gcc/df.h
parentaa6e8ed33a18a6185f852b6d07a2168638c7cf39 (diff)
downloadgcc-50aac998d41d566b358f8421c5e55188435422d7.zip
gcc-50aac998d41d566b358f8421c5e55188435422d7.tar.gz
gcc-50aac998d41d566b358f8421c5e55188435422d7.tar.bz2
df.h (enum df_ref_flags.DF_REF_STRIPPED): New.
* df.h (enum df_ref_flags.DF_REF_STRIPPED): New. (DF_FOR_REGALLOC): New. * df.c (df_ref_record): Set DF_REF_STRIPPED. (read_modify_subreg_p): Simplify. (df_def_record_1, df_uses_record): Set DF_REF_MODE_CHANGE more often. Use DF_FOR_REGALLOC. * ra.h (struct web): New member subreg_stripped. (invalid_mode_change_regs): Declare. * ra.c (invalid_mode_change_regs): New. (init_ra): Initialize it. * ra-build.c (init_one_web_common, remember_web_was_spilled): Use it. Use CANNOT_CHANGE_MODE_CLASS as ifdef guard. (reinit_one_web, parts_to_web_1): Deal with subreg_stripped. * ra-colorize.c (colorize_one_web): Use invalid_mode_change_regs. Use CANNOT_CHANGE_MODE_CLASS as ifdef guard. From-SVN: r63952
Diffstat (limited to 'gcc/df.h')
-rw-r--r--gcc/df.h11
1 files changed, 8 insertions, 3 deletions
diff --git a/gcc/df.h b/gcc/df.h
index d20d298..a294843 100644
--- a/gcc/df.h
+++ b/gcc/df.h
@@ -31,6 +31,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#define DF_ALL 255
#define DF_HARD_REGS 1024 /* Mark hard registers. */
#define DF_EQUIV_NOTES 2048 /* Mark uses present in EQUIV/EQUAL notes. */
+#define DF_FOR_REGALLOC 4096 /* If called for the register allocator. */
enum df_ref_type {DF_REF_REG_DEF, DF_REF_REG_USE, DF_REF_REG_MEM_LOAD,
DF_REF_REG_MEM_STORE};
@@ -52,13 +53,17 @@ enum df_ref_flags
DF_REF_READ_WRITE = 1,
/* This flag is set on register references inside a subreg on
- machines which have CLASS_CANNOT_CHANGE_MODE and where the mode
- change of that subreg expression is invalid for this class.
+ machines which have CANNOT_CHANGE_MODE_CLASS.
Note, that this flag can also be set on df_refs representing
the REG itself (i.e., one might not see the subreg anyore).
Also note, that this flag is set also for hardreg refs, i.e.,
you must check yourself if it's a pseudo. */
- DF_REF_MODE_CHANGE = 2
+ DF_REF_MODE_CHANGE = 2,
+
+ /* This flag is set, if we stripped the subreg from the reference.
+ In this case we must make conservative guesses, at what the
+ outer mode was. */
+ DF_REF_STRIPPED = 4
};