<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;"><DIV>Hi Devang,</DIV>
<DIV> </DIV>
<DIV>Thanks for the feed back.</DIV>
<DIV>I took care of function naming and limiting comments to 80 columns.</DIV>
<DIV>I am looking into implementing Loop Dependence Analysis. As of release 2.7 no data dependence analysis is being done.</DIV>
<DIV> </DIV>
<DIV>Satya<BR>--- On <B>Wed, 7/14/10, Devang Patel <I><devang.patel@gmail.com></I></B> wrote:<BR></DIV>
<BLOCKQUOTE style="BORDER-LEFT: rgb(16,16,255) 2px solid; PADDING-LEFT: 5px; MARGIN-LEFT: 5px"><BR>From: Devang Patel <devang.patel@gmail.com><BR>Subject: Re: [LLVMdev] LoopInterchange Pass<BR>To: "Satya Jandhayala" <satya_jandhayala@yahoo.com><BR>Cc: llvmdev@cs.uiuc.edu<BR>Date: Wednesday, July 14, 2010, 11:21 AM<BR><BR>
<DIV id=yiv661527674>Hi Satya,
<DIV><BR><BR>
<DIV class=gmail_quote>On Tue, Jul 13, 2010 at 12:06 PM, Satya Jandhayala <SPAN dir=ltr><<A href="http://us.mc517.mail.yahoo.com/mc/compose?to=satya_jandhayala@yahoo.com" rel=nofollow target=_blank ymailto="mailto:satya_jandhayala@yahoo.com">satya_jandhayala@yahoo.com</A>></SPAN> wrote:<BR>
<BLOCKQUOTE style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class=gmail_quote>
<TABLE border=0 cellSpacing=0 cellPadding=0>
<TBODY>
<TR>
<TD vAlign=top>
<DIV>Hi,</DIV>
<DIV> </DIV>
<DIV>I developed a Loop Interchange pass. Please take a look.</DIV>
<DIV>I have not incorporate data dependence analysis check. I can insert it when the LoopDependenceAnalysis is available.</DIV></TD></TR></TBODY></TABLE></BLOCKQUOTE>
<DIV><BR></DIV>
<DIV>Have you tried using include/llvm/Analysis/LoopDependenceAnalysis.h ?</DIV>
<DIV><BR></DIV>
<DIV>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 patch.</DIV>
<DIV><BR></DIV>
<DIV>Few general comments and initial thoughts.</DIV>
<DIV><BR></DIV>
<DIV>- Stay within 80 columns</DIV>
<DIV>- Add comment before each function def.</DIV>
<DIV>- Use at least one vertical space between function def.</DIV>
<DIV>- There is cut-n-paste error in runOnLoop() where the code checks LCSSA form.</DIV>
<DIV><BR></DIV>
<DIV>>   std::vector<std::pair<Loop*,Loop*> > interchangedLoops;</DIV>
<DIV><BR></DIV>
<DIV>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.</DIV>
<DIV><BR></DIV>
<DIV><BR></DIV>
<DIV>> void LoopInterchange::updateDominators ...</DIV>
<DIV><BR></DIV>
<DIV>However the pass does not preserve dominators info. </DIV>
<DIV><BR></DIV>
<DIV>> void LoopInterchange::removeChildLoop</DIV>
<DIV><BR></DIV>
<DIV>It is a good idea to use another name for this method to avoid any confusion with Loop::removeChildLoop.</DIV>
<DIV><BR></DIV>
<DIV>What is the difference between updateSSA() and updateSSAAgain() ?</DIV>
<DIV>-</DIV></DIV>Devang<BR></DIV></DIV></BLOCKQUOTE></td></tr></table><br>