PATCH: reload misses register eliminations in find_reloads_address()

Jeffrey A Law law@redhat.com
Mon Jan 8 17:16:00 GMT 2001


  In message <200012101826.KAA17267@neo.cygnus.com>you write:
  > 
  > I'm working on a port to an 8 bit machine with limited registers.
  > In addition, I have both FRAME_POINTER_REGNUM and
  > HARD_FRAME_POINTER_REGNUM defined.
  > 
  > My frame-pointer is a 'virtual' register in that I expect all
  > references to be replaced by the hard frame pointer - and HOPEFULLY the
  > hard frame pointer eliminated to, as it doesn't support indirection or inde
  > xing
  > and any accesses that aren't SP relative must be painfully reloaded!
  > 
  > In compiling the c-torture tests, about a dozen different tests fail
  > to assemble because there are still references in the assembly code to
  > the virtual FP.
  > 
  > I believe that the cause of the problem is that find_reloads_address()
  > doesn't handle reg_equiv_constant[]'s that are eliminable.
  > 
  > Here's a patch that corrects the problem, allows my compiler to build
  > these tests (and also compile dprintf.c from newlib/libc/misc, which also f
  > ails).
  > 
  > I've run the c-torture tests on my compiler wiith this patch AND done
  > a make bootstrap for the solaris2.7-sparc target.
  > 
  > Okay to checkin?
  > ================================================================
  > 
  > ChangeLog entry
  > 
  > 2000-12-10  Alan Lehotsky  <alehotsky@cygnus.com>
  > 
  > 	* reload.c (find_reloads_address): Check for eliminable
  > 	registers when substituting a constant expression for a
  > 	pseudo.
This is fine.  Please install this patch.

Thanks,
jeff



More information about the Gcc-patches mailing list