On 12/07/10 12:29, Frédéric RISS wrote:
Le mardi 07 décembre 2010 à 06:18 -0700, Jeff Law a écrit :
On 12/06/10 15:07, Ian Lance Taylor wrote:
Given the two loads don't have a def-use data dependency combine won't
ever get the opportunity to do anything with them. In general there is
no pass which combines insns without a true data dependency and targets
which have such insns have had to handle those combinations in machine
dependent reorg. In fact, it was the combination of independent insns
which led to the introduction of the machine dependent reorg pass eons ago.
The issue with this approach is that reorg runs very late. I suppose
that if one wants to combine 2 SI loads into a DI load, it needs to be
done before IRA to satisfy the generated register constraints.
Constraints aren't checked until after register allocation is complete
-- they're going to be of no help in performing this optimization.
Right now the machine dependent reorg pass or a peephole are the only
places this optimization can be performed. However, I believe it
would be possible to make the scheduler perform this optimization with
some work.
You could also make reorg.c do the job, but that's too gross to
contemplate (particularly since I did it over 15 years ago and the
result was so ugly that we came up with the machine dependent reorg hook).
jeff