[llvm-dev] ind variable
Anastasiya Ruzhanskaya via llvm-dev
llvm-dev at lists.llvm.org
Wed Aug 9 05:23:54 PDT 2017
The files of this strange pass are described here
http://reviews.legup.org/rLEGUP54ca7c2bb15d84116baf47bce67256d3803720d9 .
I wonderwhy the most uptodate -indvars pass can't do the same.
2017-08-09 14:18 GMT+02:00 Anastasiya Ruzhanskaya <
anastasiya.ruzhanskaya at frtk.ru>:
> Hello,
> I have this piece of code:
> int main() {
> int m = 0;
> // int i, j, k;
> // int N = f()%10;
> for (int l = 0; l < 1000; l+=4)
> printf("%d", l);
>
> I am sure, that llvm is capable to convert this into canonical induction
> variable, but even with O3
> define i32 @main() #0 {
> br label %2
>
> ; <label>:1 ; preds = %2
> ret i32 0
>
> ; <label>:2 ; preds = %0, %2
> %l.01 = phi i32 [ 0, %0 ], [ %4, %2 ]
> %3 = tail call i32 (i8*, ...) @printf(i8* nonnull getelementptr inbounds
> ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32 %l.01)
> %4 = add nuw nsw i32 %l.01, 4
> %5 = icmp slt i32 %4, 1000
> br i1 %5, label %2, label %1
> }
>
> I have this assembler.
> I know there is indvars2 pass ( it is under llvm license but used only in
> LegUp project - as I understood, surfing the Internet), which is good in
> changing induction variables.
>
> How can I achieve that this cycle will have a canonical indvar?
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170809/a1db4c87/attachment.html>
More information about the llvm-dev
mailing list