diff options
author | Joseph Myers <joseph@codesourcery.com> | 2006-12-21 20:58:57 +0000 |
---|---|---|
committer | Joseph Myers <jsm28@gcc.gnu.org> | 2006-12-21 20:58:57 +0000 |
commit | 5f7fc2b8328f2ecebc668874dd541d9dcd46d17c (patch) | |
tree | ec4c5ea60e7bb2eec2a65febf4cc1230c24dac9e /gcc/rtlanal.c | |
parent | 681150cdaa87e47d1cc8b57d6a29d73b3170343a (diff) | |
download | gcc-5f7fc2b8328f2ecebc668874dd541d9dcd46d17c.zip gcc-5f7fc2b8328f2ecebc668874dd541d9dcd46d17c.tar.gz gcc-5f7fc2b8328f2ecebc668874dd541d9dcd46d17c.tar.bz2 |
rtlanal.c (subreg_get_info): Do not make register size computations for mode sizes not divisible by the...
* rtlanal.c (subreg_get_info): Do not make register size
computations for mode sizes not divisible by the number of
registers.
From-SVN: r120119
Diffstat (limited to 'gcc/rtlanal.c')
-rw-r--r-- | gcc/rtlanal.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c index c45a020..bc2da3c 100644 --- a/gcc/rtlanal.c +++ b/gcc/rtlanal.c @@ -3028,12 +3028,12 @@ subreg_get_info (unsigned int xregno, enum machine_mode xmode, /* If registers store different numbers of bits in the different modes, we cannot generally form this subreg. */ if (!HARD_REGNO_NREGS_HAS_PADDING (xregno, xmode) - && !HARD_REGNO_NREGS_HAS_PADDING (xregno, ymode)) + && !HARD_REGNO_NREGS_HAS_PADDING (xregno, ymode) + && (GET_MODE_SIZE (xmode) % nregs_xmode) == 0 + && (GET_MODE_SIZE (ymode) % nregs_ymode) == 0) { regsize_xmode = GET_MODE_SIZE (xmode) / nregs_xmode; - gcc_assert (regsize_xmode * nregs_xmode == GET_MODE_SIZE (xmode)); regsize_ymode = GET_MODE_SIZE (ymode) / nregs_ymode; - gcc_assert (regsize_ymode * nregs_ymode == GET_MODE_SIZE (ymode)); if (!rknown && regsize_xmode > regsize_ymode && nregs_ymode > 1) { info->representable_p = false; |