[llvm-commits] [llvm] r44687 - in /llvm/trunk: include/llvm/CodeGen/Passes.h lib/CodeGen/LLVMTargetMachine.cpp lib/CodeGen/MachineLICM.cpp lib/Target/PowerPC/PPCInstrInfo.td

Bill Wendling isanbard at gmail.com
Mon Dec 10 13:23:39 PST 2007


On Dec 10, 2007 11:36 AM, Evan Cheng <evan.cheng at apple.com> wrote:
> On Dec 10, 2007, at 6:47 AM, Dan Gohman wrote:
> > And if that's all it's doing, MachineLICM's traversal could be
> > simplified
> > a little. Instead of visiting each loop individually, taking care to
> > avoid
> > revisiting to blocks within inner loops, the pass could just traverse
> > entire outer-most loops, which will implicitly include the blocks of
> > any
> > inner loops. Instructions nested deep in inner loops can then be
> > hoisted
> > all the way out of the outer-most loop in a single step instead of
> > being
> > hoisted out one loop at a time.
>
> I don't think lifting loop invariant from inner loop all the way out
> of outer-most loop is a good idea. That will increase register
> pressure in basic blocks where it is not used.
>
This is going to happen with the current pass, though. Each loop is
going to see the hoisted instructions from the previous iteration and
try to re-hoist them. Is there some heuristic we should apply to
prevent it from hoisting instructions too far?

-bw



More information about the llvm-commits mailing list