This is the mail archive of the gcc-patches@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: Showstopper in g77 in prerelease on Linux-Alpha


  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


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