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