[LLVMdev] LoopInterchange Pass

Devang Patel devang.patel at gmail.com
Wed Jul 14 11:21:39 PDT 2010

Hi Satya,

On Tue, Jul 13, 2010 at 12:06 PM, Satya Jandhayala <
satya_jandhayala at yahoo.com> wrote:

> Hi,
> I developed a Loop Interchange pass. Please take a look.
> I have not incorporate data dependence analysis check. I can insert it when
> the LoopDependenceAnalysis is available.

Have you tried using include/llvm/Analysis/LoopDependenceAnalysis.h ?

Please include all the changes listed in README.txt in the patch along with
a test case that is in .ll form. It makes easier to review such complete

Few general comments and initial thoughts.

- Stay within 80 columns
- Add comment before each function def.
- Use at least one vertical space between function def.
- There is cut-n-paste error in runOnLoop() where the code checks LCSSA

>   std::vector<std::pair<Loop*,Loop*> > interchangedLoops;

This may not be the most reliable way to keep track of interchangedLoops.
This vector must be recomputed if loop info is recreated.  It must be
updated if a loop is replaced or deleted by another pass.

> void LoopInterchange::updateDominators ...

However the pass does not preserve dominators info.

> void LoopInterchange::removeChildLoop

It is a good idea to use another name for this method to avoid any confusion
with Loop::removeChildLoop.

What is the difference between updateSSA() and updateSSAAgain() ?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20100714/4e03a9f0/attachment.html>

More information about the llvm-dev mailing list