diff options
author | Michael Matz <matz@suse.de> | 2003-03-07 22:06:16 +0000 |
---|---|---|
committer | Michael Matz <matz@gcc.gnu.org> | 2003-03-07 22:06:16 +0000 |
commit | 50aac998d41d566b358f8421c5e55188435422d7 (patch) | |
tree | dc3dd5799fdb6c6f8502860ceee126f8a01cd83b /gcc/ra.h | |
parent | aa6e8ed33a18a6185f852b6d07a2168638c7cf39 (diff) | |
download | gcc-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.h | 7 |
1 files changed, 7 insertions, 0 deletions
@@ -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]; |