aboutsummaryrefslogtreecommitdiff
path: root/gcc/rtlanal.c
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2006-12-21 20:58:57 +0000
committerJoseph Myers <jsm28@gcc.gnu.org>2006-12-21 20:58:57 +0000
commit5f7fc2b8328f2ecebc668874dd541d9dcd46d17c (patch)
treeec4c5ea60e7bb2eec2a65febf4cc1230c24dac9e /gcc/rtlanal.c
parent681150cdaa87e47d1cc8b57d6a29d73b3170343a (diff)
downloadgcc-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.c6
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;