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]
Other format: [Raw text]

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.



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