> FWIW I agree this is the right approach, although I can't approve it. > The assert above is guarding code that deals with a very general case, > including some unusual combinations, so I don't think it would be a > good idea to try to remove it entirely.
Yes, but the patch is a bit of kludge since it short-circuits the meat of the function: /* This should always pass, otherwise we don't know how to verify the constraint. These conditions may be relaxed but subreg_regno_offset would need to be redesigned. */ gcc_assert ((GET_MODE_SIZE (xmode) % GET_MODE_SIZE (ymode)) == 0); gcc_assert ((nregs_xmode % nregs_ymode) == 0); So what would it take to do things properly here, i.e. relax the conditions and adjust downstream? -- Eric Botcazou