<div dir="ltr">Could you also please share , how to process SCEV - it dump useful information , but can I somehow extract for example that basic block, which it is mentioning?<br></div><div class="gmail_extra"><br><div class="gmail_quote">2017-08-09 14:57 GMT+02:00 Anastasiya Ruzhanskaya <span dir="ltr"><<a href="mailto:anastasiya.ruzhanskaya@frtk.ru" target="_blank">anastasiya.ruzhanskaya@frtk.ru</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">...or maybe the second operand of ICmp<br></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">2017-08-09 14:51 GMT+02:00 Anastasiya Ruzhanskaya <span dir="ltr"><<a href="mailto:anastasiya.ruzhanskaya@frtk.ru" target="_blank">anastasiya.ruzhanskaya@frtk.<wbr>ru</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">SCEV , seems to me that this is a little disadvantage ( I am not an expert by now in llvm, but think so), does not keep a cmp instruction, where someone can find a value , with which an induction variable is compared. When it is impossible to determine a trip count, that information can be useful ( hope not only for me). Still after receiving a block where this instruction is, it is not really hard to find the ICmp, but still...<br></div><div class="m_4035141676915515445HOEnZb"><div class="m_4035141676915515445h5"><div class="gmail_extra"><br><div class="gmail_quote">2017-08-09 14:28 GMT+02:00 Tobias Grosser <span dir="ltr"><<a href="mailto:tobias.grosser@inf.ethz.ch" target="_blank">tobias.grosser@inf.ethz.ch</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">This support was removed years ago from indvars. We don't need canonical<br>
induction variables any more as all analysis are done on SCEVs. The SCEV<br>
generator can transform them even without the need for explicit<br>
canonical induction variables.<br>
<br>
Best,<br>
Tobias<br>
<br>
On Wed, Aug 9, 2017, at 14:23, Anastasiya Ruzhanskaya via llvm-dev<br>
wrote:<br>
<div><div class="m_4035141676915515445m_1193702186311339326h5">> The files of this strange pass are described here<br>
> <a href="http://reviews.legup.org/rLEGUP54ca7c2bb15d84116baf47bce67256d3803720d9" rel="noreferrer" target="_blank">http://reviews.legup.org/rLEGU<wbr>P54ca7c2bb15d84116baf47bce6725<wbr>6d3803720d9</a><br>
> .<br>
> I wonderwhy the most uptodate -indvars pass can't do the same.<br>
><br>
> 2017-08-09 14:18 GMT+02:00 Anastasiya Ruzhanskaya <<br>
> <a href="mailto:anastasiya.ruzhanskaya@frtk.ru" target="_blank">anastasiya.ruzhanskaya@frtk.ru</a><wbr>>:<br>
><br>
> > Hello,<br>
> > I have this piece of code:<br>
> > int main() {<br>
> >         int m = 0;<br>
> > //      int i, j, k;<br>
> > //      int N = f()%10;<br>
> >         for (int l = 0; l < 1000; l+=4)<br>
> >                 printf("%d", l);<br>
> ><br>
> > I am sure, that llvm is capable to convert this into canonical induction<br>
> > variable, but even with O3<br>
> > define i32 @main() #0 {<br>
> >   br label %2<br>
> ><br>
> > ; <label>:1                                       ; preds = %2<br>
> >   ret i32 0<br>
> ><br>
> > ; <label>:2                                       ; preds = %0, %2<br>
> >   %l.01 = phi i32 [ 0, %0 ], [ %4, %2 ]<br>
> >   %3 = tail call i32 (i8*, ...) @printf(i8* nonnull getelementptr inbounds<br>
> > ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32 %l.01)<br>
> >   %4 = add nuw nsw i32 %l.01, 4<br>
> >   %5 = icmp slt i32 %4, 1000<br>
> >   br i1 %5, label %2, label %1<br>
> > }<br>
> ><br>
> > I have this assembler.<br>
> > I know there is indvars2 pass ( it is under llvm license but used only in<br>
> > LegUp project - as I understood, surfing the Internet), which is good in<br>
> > changing induction variables.<br>
> ><br>
> > How can I achieve that this cycle will have a canonical indvar?<br>
> ><br>
</div></div>> ______________________________<wbr>_________________<br>
> LLVM Developers mailing list<br>
> <a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-dev</a><br>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>