Comment 2 for bug 625233

Revision history for this message
Andrew Stubbs (ams-codesourcery) wrote :

AFAICT ARM doesn't seem to use the normal GCC constant pools mechanism, but instead implements its own "minipools".

These minipools are created by the TARGET_MACHINE_DEPENDENT_REORG pass (implemented by function arm_reorg). This pass is a per-function pass, so arm_reorg cannot modify the minipools attached to other functions. Is it possible to overcome this limitation?

Another observation: I'm not totally sure, but I think that the current upstream implementation is only capable of creating minipools *after* the reference point (i.e. at positive offsets). For small functions this is fine, but for large functions this might result in multiple minipools (one half way through, and one at the end, say) where only one would be necessary, were negative offsets allowed. There's clearly some small size benefit to be had here, but perhaps not much.