[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 16:50:03 PST 2007


On Dec 10, 2007 4:38 PM, Chris Lattner <clattner at apple.com> wrote:
> With that said, licm should hoist things as far out as possible.  The
> LLVM LICM pass is structured the way it is in order to hoist loads
> out, which require checking alias information at each level of a loop
> nest.  We don't have short-term plans to hoist out loops (which will
> require extensive machine aliasing support), so switching to a model
> like dan describes (single pass over all bb's in outermost loops,
> hoisting instructions once instead of iteratively) makes sense to me.
>
I'm confused. If we do that, we won't be able to hoist things in inner
loops into their pre-header blocks. Or are you suggesting that the
machine LICM pass looks for loop-invariant instructions. If they can
be hoisted all of the way out, then do that. Otherwise, find each
containing loop and try to hoist to that pre-header?

-bw



More information about the llvm-commits mailing list