DJ Delorie <[EMAIL PROTECTED]> writes: > In rtlanal.c we have these lines: > > nregs_ymode = hard_regno_nregs[xregno][ymode]; > ... > && (GET_MODE_SIZE (ymode) % nregs_ymode) == 0) > > The m32c cc1 crashes here because xregno is 1 and ymode is QI, and > register 1 cannot hold a QI value (there are no QImode ops that take > that register), so hard_regno_nregs[1][QI] is zero, which causes a > SIGFPE. > > Which assumption is wrong? That hard_regno_nregs can be zero (m32c), > or that hard_regno_nregs will never be zero (rtlanal)?
I would first ask why subreg_get_info is being called with ymode == QImode for a hard register which can not hold QImode. That implies that there is a QImode value in the register, which you say is invalid. Ian