diff options
author | Jan Hubicka <jh@suse.cz> | 2003-02-01 00:34:17 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2003-01-31 23:34:17 +0000 |
commit | b0c42aed3116a712a4c4da3ec2f124c542271f18 (patch) | |
tree | 138fc4b6ba88f9caad65f412fbe421e92fc1dcf1 /gcc/regclass.c | |
parent | 1f61a15d9e3cde5dbe910c23b045f300d03f3c6f (diff) | |
download | gcc-b0c42aed3116a712a4c4da3ec2f124c542271f18.zip gcc-b0c42aed3116a712a4c4da3ec2f124c542271f18.tar.gz gcc-b0c42aed3116a712a4c4da3ec2f124c542271f18.tar.bz2 |
loop.c (emit_prefetch_instructions): Do conversion at right place in RTL chain.
* loop.c (emit_prefetch_instructions): Do conversion at right place in
RTL chain.
* combine.c (simplify_set): Reverse order of ragumetns to
REG_CANNOT_CHANGE_MODE_P
* df.c (df_def_record_1): Likewise.
* recog.c (register_operand): Likewise.
* simplify-rtx.c (simplify_subreg): Likewise.
* hard-reg-set.h (REG_CANNOT_CHANGE_MODE_P): Update use of
CANNOT_CHANGE_MODE_CLASS.
* regclass.c (cannot_change_mode_set_regs, invalid_mode_change_p):
Likewise.
* reload.c (push_reload): Likewise.
* alpha.h (CANNOT_CHANGE_MODE_CLASS): Update definition.
* ia64.h (CANNOT_CHANGE_MODE_CLASS): Update definition.
* mips.h (CANNOT_CHANGE_MODE_CLASS): Update definition.
* mips-protos.h (mips_cannot_change_mode_class): Update prototype.
* mips.c (mips_cannot_change_mode_class): Update.
* pa64-regs.h (CANNOT_CHANGE_MODE_CLASS): Update definition.
* rs6000.h (CANNOT_CHANGE_MODE_CLASS): Update definition.
* s390.h (CANNOT_CHANGE_MODE_CLASS): Update definition.
* sh.h (CANNOT_CHANGE_MODE_CLASS): Update definition.
* sh-protos.h (sh_cannot_change_mode_class): Update prototype.
* sh.c (sh_cannot_change_mode_class): Update.
* i386.h (CANNOT_CHANGE_MODE_CLASS): New.
* tm.texi (CANNOT_CHANGE_MODE_CLASS): Update documentation.
From-SVN: r62212
Diffstat (limited to 'gcc/regclass.c')
-rw-r--r-- | gcc/regclass.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/gcc/regclass.c b/gcc/regclass.c index ea6c86b..5481ea2 100644 --- a/gcc/regclass.c +++ b/gcc/regclass.c @@ -2633,14 +2633,15 @@ cannot_change_mode_set_regs (used, from, regno) unsigned int regno; { enum machine_mode to; - enum reg_class class; for (to = VOIDmode; to < MAX_MACHINE_MODE; ++to) if (REGNO_REG_SET_P (&subregs_of_mode[to], regno)) { - class = CANNOT_CHANGE_MODE_CLASS (from, to); - if (class != NO_REGS) - IOR_HARD_REG_SET (*used, reg_class_contents [(int) class]); + int i; + for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) + if (! TEST_HARD_REG_BIT (*used, i) + && REG_CANNOT_CHANGE_MODE_P (from, to, i)) + SET_HARD_REG_BIT (*used, i); } } @@ -2657,8 +2658,7 @@ invalid_mode_change_p (regno, class, from_mode) for (to_mode = 0; to_mode < NUM_MACHINE_MODES; ++to_mode) if (REGNO_REG_SET_P (&subregs_of_mode[(int) to_mode], regno) - && reg_classes_intersect_p - (class, CANNOT_CHANGE_MODE_CLASS (from_mode, to_mode))) + && CANNOT_CHANGE_MODE_CLASS (from_mode, to_mode, class)) return 1; return 0; } |