On 04/11/2016 05:30 PM, Alan Modra wrote:
Either way, when we split to
set (reg tmp) (high (const (minus ((symbol_ref) (reg 2)))))
.. mem (lo_sum (reg tmp) (const (minus ((symbol_ref) (reg 2)))))
both high and lo_sum reference r2 and the linker could happily replace
rtmp in the lo_sum insn with r2 when the high address is known to be
zero.
It would be interesting to see if the r2 reference in fact gets picked up
inside the const. My first reaction is that I could imagine tracking skipping
over it completely, since we've been promised that the expression is constant.
Alternately, perhaps alias.c should reuse the existing delegitimize_address
hook, allowing it to look through your current unspecs.
r~