[LLVMdev] Why should we have the LoopPass and LoopPassManager? Can we get rid of this complexity?

Chandler Carruth chandlerc at gmail.com
Wed Jan 22 04:01:46 PST 2014

On Wed, Jan 22, 2014 at 3:39 AM, Chandler Carruth <chandlerc at gmail.com>wrote:

> I have a patch that does #1 already, but wanted to check that you're OK
> weakening the verification. Otherwise, I have to do 1, 2, 3, and 5 in a
> single commit, or teach the LoopVectorizer and LSR to preserve
> LoopSimplify... Yuck.

This patch appears to cause slight changes in three test cases:

    LLVM :: Transforms/IndVarSimplify/lftr-reuse.ll
    LLVM :: Transforms/LoopSimplify/ashr-crash.ll
    LLVM :: Transforms/LoopStrengthReduce/2011-12-19-PostincQuadratic.ll

Looking at lftr-reuse.ll, we successfully hoist the 'icmp slt' into the
'outer:' block as the comment says would be nice (because the outer loop is
simplified now, the test is checking for unsimplified). The LSR failure is
just that the loop basic blocks have different names (loopexit instead of

The ashr-crash.ll case is minutely interesting -- we fail to hoist the
comparison that the test wants hoisted into the entry block. My suspicion
is that getting this to hoist with the heavily reduced pipeline used is
problematic, as the test seems more geared to tickle SCEV bugs than test
important optimization invariants.

All of the other regression tests pass, so this looks pretty good to me.
Let me know! I can mail the patch tomorrow if it helps.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140122/94d5eb58/attachment.html>

More information about the llvm-dev mailing list