Re: Handle multi-word regsiters in REG_CFA_RESTORE notes

2011-09-27 Thread Bernd Schmidt
On 09/25/11 19:27, Richard Sandiford wrote: > The store itself can still be a single SDC1 instruction, so we should > generate the same notes regardless of mips_split_64bit_move_p. > > If that's right, then how about the patch below (tested on > mips64-linux-gnu, but without the shrink-wrap patche

Re: Handle multi-word regsiters in REG_CFA_RESTORE notes

2011-09-25 Thread Richard Sandiford
Bernd Schmidt writes: > On 09/21/11 19:33, Richard Henderson wrote: >> Why, then, is this the only place in dwarf2cfi that needs to handle >> registers via a loop over nregs? It seems to me that we should either >> be handling multi-register spans everywhere or nowhere. >> >> Because alternately

Re: Handle multi-word regsiters in REG_CFA_RESTORE notes

2011-09-22 Thread Bernd Schmidt
On 09/21/11 19:33, Richard Henderson wrote: > Why, then, is this the only place in dwarf2cfi that needs to handle > registers via a loop over nregs? It seems to me that we should either > be handling multi-register spans everywhere or nowhere. > > Because alternately, this could be a bug in your

Re: Handle multi-word regsiters in REG_CFA_RESTORE notes

2011-09-21 Thread Richard Henderson
On 09/21/2011 07:55 AM, Bernd Schmidt wrote: > On 09/15/11 21:42, Richard Henderson wrote: >> On 09/14/2011 06:12 PM, Bernd Schmidt wrote: >>> + unsigned int orig_regno = REGNO (reg); >>> + int nregs = hard_regno_nregs[orig_regno][GET_MODE (reg)]; >>> + while (nregs-- > 0) >> >> The rest of the

Re: Handle multi-word regsiters in REG_CFA_RESTORE notes

2011-09-21 Thread Bernd Schmidt
On 09/15/11 21:42, Richard Henderson wrote: > On 09/14/2011 06:12 PM, Bernd Schmidt wrote: >> + unsigned int orig_regno = REGNO (reg); >> + int nregs = hard_regno_nregs[orig_regno][GET_MODE (reg)]; >> + while (nregs-- > 0) > > The rest of the file seems to use targetm.dwarf_register_span. > Thi

Re: Handle multi-word regsiters in REG_CFA_RESTORE notes

2011-09-15 Thread Richard Henderson
On 09/14/2011 06:12 PM, Bernd Schmidt wrote: > + unsigned int orig_regno = REGNO (reg); > + int nregs = hard_regno_nregs[orig_regno][GET_MODE (reg)]; > + while (nregs-- > 0) The rest of the file seems to use targetm.dwarf_register_span. This probably ought to do the same. r~

Handle multi-word regsiters in REG_CFA_RESTORE notes

2011-09-14 Thread Bernd Schmidt
While testing the altest iteration of shrink-wrapping on mips-elf, a new failure showed up in gcc.dg/pr43139.c. When restoring floating-point registers, we attach REG_CFA_RESTORE notes for DFmode registers, but the dwarf2cfi code only records a single regno for such a multiword hard reg. Fixed wit