[LLVMdev] alias information on machine instructions
fbrandne at mail.tuwien.ac.at
Fri May 4 01:29:17 PDT 2007
Chris Lattner wrote:
> There are a couple of ways to do this. Is your scheduler a prepass
> scheduler (before regalloc) or a post-pass scheduler (after regalloc)?
it is a post-pass scheduler, which operates on MachineInstrs. we need to
run it after register allocation to hide latencies of spill code,
prolog, and epilog.
> If you want to extract maximal parallelism, I assume you want a prepass
> scheduler. In that case, you should look into the SelectionDAG based
> schedulers, which do have alias information on them.
i had a look at the SelectionDAG based schedulers. it seems that
aliasing loads/stores are chained together by the DAGCombiner. after
scheduling, when the MachineInstrs are created, the alias information
cannot be used anymore in the current framework. is this correct?
i don't think that it is a good idea to do alias analysis on
MachineInstrs, thus i would like to preserve the alias information, and
annotate the MachineInstrs explicitly. however, this information might
be invalidated by subsequent passes.
currently, our backend does not emit any additional loads/stores execpt
for spill code, prolog and epilog. thus this approach would work (at
least for now).
do you have any ideas for a better solution?
More information about the llvm-dev