On 13 October 2014 20:43, Jeff Law <l...@redhat.com> wrote: ... > I think you want "smode" in the mode_for_size call rather than "mode", right > (both instances)?
No, nregs is the number of hard registers of regno in "mode". Hence we must use the size of "mode". How to choose the mode class is not so clear-cut. For the code that went wrong with the old code, mode and smode are both of MODE_INT. To get some case where there's a difference, I was thinking of an architecture that has partial integer mode registers that can be grouped together as integral integer mode registers (e.g. one reg is HImode or PSImode, save_mode would be PSImode, two regs form SImode). In that case, you'd want something so that you can piece together "mode", i.e. either GET_MODE_CLASS (mode) or MODE_INT (which happen to be again the same), but not GET_MODE_CLASS(smode), which would be MODE_PARTIAL_INT .