diff options
author | Jim MacArthur <jim.macarthur@arm.com> | 2012-05-24 11:07:57 +0000 |
---|---|---|
committer | Marcus Shawcroft <mshawcroft@gcc.gnu.org> | 2012-05-24 11:07:57 +0000 |
commit | e7bcc691204350945d31fcb27b6d421cdf6d8453 (patch) | |
tree | d2f0426293ac9bb76b776e8b899cf5ed99edfaf4 /gcc/regs.h | |
parent | b44be1e6cfcd00aa166e84d006232d9ddeda7b6f (diff) | |
download | gcc-e7bcc691204350945d31fcb27b6d421cdf6d8453.zip gcc-e7bcc691204350945d31fcb27b6d421cdf6d8453.tar.gz gcc-e7bcc691204350945d31fcb27b6d421cdf6d8453.tar.bz2 |
recog.c (reg_fits_class_p): Check both regno and regno + offset are hard registers.
2012-05-24 Jim MacArthur<jim.macarthur@arm.com>
* recog.c (reg_fits_class_p): Check both regno and regno + offset are
hard registers.
* regs.h (in_hard_reg_set_p): Assert that regno is a hard register and
check end_regno - 1 is a hard register.
From-SVN: r187826
Diffstat (limited to 'gcc/regs.h')
-rw-r--r-- | gcc/regs.h | 7 |
1 files changed, 7 insertions, 0 deletions
@@ -24,6 +24,7 @@ along with GCC; see the file COPYING3. If not see #include "machmode.h" #include "hard-reg-set.h" +#include "rtl.h" #define REG_BYTES(R) mode_size[(int) GET_MODE (R)] @@ -367,10 +368,16 @@ in_hard_reg_set_p (const HARD_REG_SET regs, enum machine_mode mode, { unsigned int end_regno; + gcc_assert (HARD_REGISTER_NUM_P (regno)); + if (!TEST_HARD_REG_BIT (regs, regno)) return false; end_regno = end_hard_regno (mode, regno); + + if (!HARD_REGISTER_NUM_P (end_regno - 1)) + return false; + while (++regno < end_regno) if (!TEST_HARD_REG_BIT (regs, regno)) return false; |