aboutsummaryrefslogtreecommitdiff
path: root/gcc/ra.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/ra.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/ra.h')
-rw-r--r--gcc/ra.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/ra.h b/gcc/ra.h
index 522b77a..f324d36 100644
--- a/gcc/ra.h
+++ b/gcc/ra.h
@@ -168,6 +168,11 @@ struct web
was illegal for hardregs in CLASS_CANNOT_CHANGE_MODE. */
unsigned int mode_changed:1;
+ /* Nonzero if some references of this web, where in subreg context,
+ but the actual subreg is already stripped (i.e. we don't know the
+ outer mode of the actual reference). */
+ unsigned int subreg_stripped:1;
+
/* Nonzero, when this web stems from the last pass of the allocator,
and all info is still valid (i.e. it wasn't spilled). */
unsigned int old_web:1;
@@ -497,6 +502,8 @@ extern unsigned int num_free_regs[N_REG_CLASSES];
represent the possible resources which could be taken away be a value
in mode M. */
extern HARD_REG_SET hardregs_for_mode[NUM_MACHINE_MODES];
+/* The set of hardregs, for which _any_ mode change is invalid. */
+extern HARD_REG_SET invalid_mode_change_regs;
/* For 0 <= I <= 255, the number of bits set in I. Used to calculate
the number of set bits in a HARD_REG_SET. */
extern unsigned char byte2bitcount[256];