diff options
author | rsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-08-20 19:00:40 +0000 |
---|---|---|
committer | rsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-08-20 19:00:40 +0000 |
commit | c1863f1d4430232c7ecf8333502588e641ce4595 (patch) | |
tree | 4b43dbc021de8ec6b15c9a5fc49e376aac129356 | |
parent | be06fcd64b97d61fbc3d6836c8fd8f3eb3f4841c (diff) | |
download | gcc-c1863f1d4430232c7ecf8333502588e641ce4595.tar.gz |
gcc/
* config/mips/mips.c (mips_class_max_nregs): Check that the mode is
OK for ST_REGS and FP_REGS before taking those classes into account.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@177931 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/mips/mips.c | 6 |
2 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ee94a7956b2..4ca6298dc1f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2011-08-20 Richard Sandiford <rdsandiford@googlemail.com> + * config/mips/mips.c (mips_class_max_nregs): Check that the mode is + OK for ST_REGS and FP_REGS before taking those classes into account. + +2011-08-20 Richard Sandiford <rdsandiford@googlemail.com> + * config/mips/mips.c (mips_reorg_process_insns): Check for jumps before checking for annulled branches. diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index 5a410eb0464..53542aabbb0 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -10630,12 +10630,14 @@ mips_class_max_nregs (enum reg_class rclass, enum machine_mode mode) COPY_HARD_REG_SET (left, reg_class_contents[(int) rclass]); if (hard_reg_set_intersect_p (left, reg_class_contents[(int) ST_REGS])) { - size = MIN (size, 4); + if (HARD_REGNO_MODE_OK (ST_REG_FIRST, mode)) + size = MIN (size, 4); AND_COMPL_HARD_REG_SET (left, reg_class_contents[(int) ST_REGS]); } if (hard_reg_set_intersect_p (left, reg_class_contents[(int) FP_REGS])) { - size = MIN (size, UNITS_PER_FPREG); + if (HARD_REGNO_MODE_OK (FP_REG_FIRST, mode)) + size = MIN (size, UNITS_PER_FPREG); AND_COMPL_HARD_REG_SET (left, reg_class_contents[(int) FP_REGS]); } if (!hard_reg_set_empty_p (left)) |