diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-09-24 19:47:05 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-09-24 19:47:05 +0000 |
commit | 3dc77328bc12b3fda1709cb5a6da381b6144fc2c (patch) | |
tree | 8f489fcd2a7911641c9c974bdfda7d1ab77702cc /gcc/combine.c | |
parent | ab5a7d5536558eec88d4f6c8096381c8cb1efbbc (diff) | |
download | gcc-3dc77328bc12b3fda1709cb5a6da381b6144fc2c.tar.gz |
PR rtl-opt/17503
* regclass.c (subregs_of_mode): Turn into an htab. Make static.
(som_hash, som_eq): New.
(init_subregs_of_mode, record_subregs_of_mode): New.
(cannot_change_mode_set_regs): Rewrite for htab implementation.
(invalid_mode_change_p): Likewise.
* combine.c (gen_lowpart_for_combine): Use record_subregs_of_mode.
* flow.c (mark_used_regs): Likewise.
(life_analysis): Use init_subregs_of_mode.
* regs.h (subregs_of_mode): Remove.
* rtl.h (init_subregs_of_mode, record_subregs_of_mode): Declare.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@88067 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/combine.c')
-rw-r--r-- | gcc/combine.c | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/gcc/combine.c b/gcc/combine.c index 24ebbc97147..f0b5b0698dd 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -9327,13 +9327,8 @@ gen_lowpart_for_combine (enum machine_mode mode, rtx x) result = gen_lowpart_common (mode, x); #ifdef CANNOT_CHANGE_MODE_CLASS - if (result != 0 - && GET_CODE (result) == SUBREG - && REG_P (SUBREG_REG (result)) - && REGNO (SUBREG_REG (result)) >= FIRST_PSEUDO_REGISTER) - bitmap_set_bit (&subregs_of_mode, REGNO (SUBREG_REG (result)) - * MAX_MACHINE_MODE - + GET_MODE (result)); + if (result != 0 && GET_CODE (result) == SUBREG) + record_subregs_of_mode (result); #endif if (result) |