Enable EBX for x86 in 32bits PIC code
Jeff Law
law@redhat.com
Mon Aug 25 17:30:00 GMT 2014
On 08/22/14 06:21, Ilya Enkovich wrote:
>
> Such approach worked well on small tests but trying to run some
> benchmarks we faced a problem with reload of address constants. The
> problem is that when we try to rematerialize address constant or some
> constant memory reference, we have to use pic_offset_table_rtx. It
> means we insert new usages of a speudo register and alocator cannot
> handle it correctly. Same problem also applies for float and vector
> constants.
Isn't this typically handled with secondary reloads? It's not an exact
match, but if you look at the PA port, you can see cases where we need
to have %r1 available when we rematerialize certain constants. Several
ports have secondary reloads that you may be able to refer back to. LRA
may handle things differently, so first check LRA's paths.
>
> Rematerialization is not the only case causing new
> pic_offset_table_rtx usage. Another case is a split of some
> instructions using constant but not having proper constraints. E.g.
> pushtf pattern allows push of constant but it has to be replaced with
> push of memory in reload pass causing additional usage of
> pic_offset_table_rtx.
Yup. I think those would be handled the same way.
Jeff
More information about the Gcc
mailing list