This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: register move costs broken


On Tue, 13 Feb 2001, Jeffrey A Law wrote:

>   In message <Pine.LNX.4.21.0102141611450.32094-100000@front.linuxcare.com.au>y
> ou write:
>   > serial.c: In function `change_speed':
>   > serial.c:1803: Insn does not satisfy its constraints:
>   > (insn 1409 1406 649 (set (reg:DI 60 SAR [269])
>   >         (mem:DI (plus:DI (reg/f:DI 30 %r30)
>   >                 (const_int -248 [0xffffff08])) 0)) 123 {*pa.md:3157} (nil)
>   >     (nil))
>   > serial.c:1803: confused by earlier errors, bailing out
> Note there's a bug either in the PA backend or reload which is closely
> related to this failure.
> 
> In particular if we have a multiply which is then used as a shift count
> in a variable shift instruction, then we can end up in a situation where
> we need to copy from an FP register into the SAR register.

In this case it wasn't later used in a variable shift.

lreg dump showed every register class cost at 20000 for register 269, then
;; Register 269 in 60.
which is SAR unless I'm mistaken.

All costs the same looked highly irregular to me, which is why I decided
to investigate the effect of backing out Jan's patch.

Alan
-- 
Linuxcare.  Support for the Revolution.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]