This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: bootstrap broken on powerpc-linux and powerpc64-linux
Alan Modra wrote:
On Wed, Dec 14, 2005 at 03:47:13PM +0000, Joern RENNECKE wrote:
The match is not attempted with my cross compiler because insn 296 is in
the way:
[snip]
Why is is "in the way"?
The other block we compare against has no equivalent USE insn, so the
comparison
stops early with a mismatch.
BTW, the "use" is just the way the rs6000
backend ties together a toc load with whatever is stored in the toc. So
when we load an address from the toc, the item addressed won't be
deleted as unused.
AFAIK there are no guarantees that such a use will stay where you put
it. This sounds like you
lower too early.
possible alternative strategies:
- allow all constants till after reload, and fix them up in
machine_dependent_reorg (that's what the SH does - but there it is
compilcated by restrictions on the distance between reference and constant).
or
- instead of using a label_ref for the address of the constant, use an
unspec containing the constant. You might fix this up in
machine_dependent_reorg, or even build this modules contribution to the
toc lazily during final as instructions are emitted that use addresses
of entries.