Re: reload getting the mode of (subreg:HI (reg:QI pseudo)) wrong

2006-08-13 Thread Rask Ingemann Lambertsen
On Fri, Aug 04, 2006 at 11:21:05AM +0200, Bernd Schmidt wrote: > Probably the compiler doesn't in general like a paradoxical subreg that > can take more hard regs than its SUBREG_REG. I think this is probably > something that can be worked around with a proper combination of > MODES_TIEABLE_P,

Re: reload getting the mode of (subreg:HI (reg:QI pseudo)) wrong

2006-08-04 Thread Ian Lance Taylor
Bernd Schmidt <[EMAIL PROTECTED]> writes: > Rask Ingemann Lambertsen wrote: > > The constraints are not met because the constraint "d" is register class > > DX_REGS consisting of register 4 and 5, and (reg:HI 5 dh) spans register 5 > > and 6. Also, HARD_REGNO_NREGS (5, HImode) returns 0. > > The l

Re: reload getting the mode of (subreg:HI (reg:QI pseudo)) wrong

2006-08-04 Thread Rask Ingemann Lambertsen
On Thu, Aug 03, 2006 at 11:55:49PM -0700, Ian Lance Taylor wrote: > > In general, operand_mode[] will be unreliable in cases where it is not > specified. This is frowned upon but more or less permitted, and a few > backends take advantage of it for relatively nefarious purposes. I only have mode

Re: reload getting the mode of (subreg:HI (reg:QI pseudo)) wrong

2006-08-04 Thread Rask Ingemann Lambertsen
On Fri, Aug 04, 2006 at 11:21:05AM +0200, Bernd Schmidt wrote: > > Probably the compiler doesn't in general like a paradoxical subreg that > can take more hard regs than its SUBREG_REG. I think this is probably > something that can be worked around with a proper combination of > MODES_TIEABLE_

Re: reload getting the mode of (subreg:HI (reg:QI pseudo)) wrong

2006-08-04 Thread Rask Ingemann Lambertsen
On Fri, Aug 04, 2006 at 02:30:34AM +0200, Rask Ingemann Lambertsen wrote: > The constraints are not met because the constraint "d" is register class > DX_REGS consisting of register 4 and 5, and (reg:HI 5 dh) spans register 5 > and 6. Also, HARD_REGNO_NREGS (5, HImode) returns 0. I meant to say t

Re: reload getting the mode of (subreg:HI (reg:QI pseudo)) wrong

2006-08-04 Thread Bernd Schmidt
Rask Ingemann Lambertsen wrote: The constraints are not met because the constraint "d" is register class DX_REGS consisting of register 4 and 5, and (reg:HI 5 dh) spans register 5 and 6. Also, HARD_REGNO_NREGS (5, HImode) returns 0. The lreg and greg dumps provide the clue that reload got the mo

Re: reload getting the mode of (subreg:HI (reg:QI pseudo)) wrong

2006-08-03 Thread Ian Lance Taylor
Rask Ingemann Lambertsen <[EMAIL PROTECTED]> writes: > In my i8086 backend experiments, I seem to have come across a corner case > which confuses reload. Interesting case. > It seems necessary to recover the mode of the operand when computing > rld[i].mode. There is operand_mode[rld[i].opnum] a

reload getting the mode of (subreg:HI (reg:QI pseudo)) wrong

2006-08-03 Thread Rask Ingemann Lambertsen
Hi. In my i8086 backend experiments, I seem to have come across a corner case which confuses reload. While building libgcc2 for one of the multilib variants, GCC crashes: libgcc2.c: In function '__muldc3': libgcc2.c:1854: error: insn does not satisfy its constraints: (insn:HI 2485 2483 2604 39 li