This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Showstopper in g77 in prerelease on Linux-Alpha
- To: Richard Henderson <rth at cygnus dot com>
- Subject: Re: Showstopper in g77 in prerelease on Linux-Alpha
- From: Jeffrey A Law <law at cygnus dot com>
- Date: Wed, 14 Jul 1999 01:56:53 -0600
- cc: martin dot kahlert at provi dot de, egcs-patches at egcs dot cygnus dot com
- Reply-To: law at cygnus dot com
In message <19990713231752.A6353@cygnus.com>you write:
> On Fri, Jul 09, 1999 at 02:07:51AM -0700, Richard Henderson wrote:
> > (insn 76 75 78 (set (reg:DI 92)
> > (fix:DI (reg:DF 91))) 122 {fix_truncdfdi2} (insn_list 75 (nil))
> > (expr_list:REG_DEAD (reg:DF 91)
> > (nil)))
> >
> > (insn 78 76 79 (set (reg:SI 81)
> > (subreg:SI (reg:DI 92) 0)) 283 {movdf+1} (insn_list 76 (nil))
> > (expr_list:REG_DEAD (reg:DI 92)
> > (nil)))
> >
> > In global, reg 92 gets allocated to $f10, and isn't fixed up in
> > reload, despite CLASS_CANNOT_CHANGE_SIZE and the subreg.
>
> Regclass is at fault for suggesting that FLOAT_REGS is a viable
> class for reg 92. The following rather direct solution works for
> the problem as presented.
>
[ ... ]
>
> * regclass.c (scan_one_insn): Notice subregs that change the
> size of their operand.
> (record_reg_classes): Use that to obey CLASS_CANNOT_CHANGE_SIZE.
Seems reasonable to me. I'm going to install it now so that it'll get
in tonight's snapshot.
Thanks!
jeff