Well, I was too fast to frame LoopInfo. The problem could be in LoopRotation as well. What do you think?<br><br><div class="gmail_quote">2008/7/13 Julio <<a href="mailto:julio.martin.hidalgo@gmail.com">julio.martin.hidalgo@gmail.com</a>>:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hello, I have two for loops (one inside the other), that after indvars, looprotate, etc. (the important here is the loop rotate), is similar to this (I've stripped the real operations):<br>
<br><div style="margin-left: 40px;">
define i32 @f() nounwind {<br>entry:<br> br label %bb1<br><br>bb1: ; preds = %bb3, %bb1, %entry<br> %<a href="http://i.0.reg2mem.0.ph" target="_blank">i.0.reg2mem.0.ph</a> = phi i32 [ 0, %entry ], [ %<a href="http://i.0.reg2mem.0.ph" target="_blank">i.0.reg2mem.0.ph</a>, %bb1 ], [ %indvar.next9, %bb3 ] ; <i32> [#uses=4]<br>
%j.0.reg2mem.0 = phi i32 [ 0, %entry ], [ %indvar.next, %bb1 ], [ 0, %bb3 ] ; <i32> [#uses=3]<br> %indvar.next = add i32 %j.0.reg2mem.0, 1 ; <i32> [#uses=2]<br> %exitcond = icmp eq i32 %indvar.next, 16 ; <i1> [#uses=1]<br>
br i1 %exitcond, label %bb3, label %bb1<br><br>bb3: ; preds = %bb1<br> %indvar.next9 = add i32 %<a href="http://i.0.reg2mem.0.ph" target="_blank">i.0.reg2mem.0.ph</a>, 1 ; <i32> [#uses=2]<br> %exitcond10 = icmp eq i32 %indvar.next9, 32 ; <i1> [#uses=1]<br>
br i1 %exitcond10, label %bb6, label %bb1<br><br>bb6: ; preds = %bb3<br> ret i32 0<br>}<br></div><br>LoopInfo says: Loop Containing: %bb1, %bb3. Only detects the outer loop<br><br>By the way, if I separate the header of the outer loop, like:<br>
<br><div style="margin-left: 40px;">define i32 @f() nounwind {<br>entry:<br> br label %bb0<br><br>bb0: ; preds = %entry, %bb3<br> %<a href="http://i.0.reg2mem.0.ph" target="_blank">i.0.reg2mem.0.ph</a> = phi i32 [ 0, %entry ], [ %indvar.next9, %bb3 ] ; <i32> [#uses=4]<br>
br label %bb1<br><br>bb1: ; preds = %bb1, %bb0<br> %j.0.reg2mem.0 = phi i32 [ 0, %bb0 ], [ %indvar.next, %bb1 ] ; <i32> [#uses=3]<br> %indvar.next = add i32 %j.0.reg2mem.0, 1 ; <i32> [#uses=2]<br>
%exitcond = icmp eq i32 %indvar.next, 16 ; <i1> [#uses=1]<br> br i1 %exitcond, label %bb3, label %bb1<br><br>bb3: ; preds = %bb1<br> %indvar.next9 = add i32 %<a href="http://i.0.reg2mem.0.ph" target="_blank">i.0.reg2mem.0.ph</a>, 1 ; <i32> [#uses=2]<br>
%exitcond10 = icmp eq i32 %indvar.next9, 32 ; <i1> [#uses=1]<br> br i1 %exitcond10, label %bb6, label %bb0<br><br>bb6: ; preds = %bb3<br> ret i32 0<br>}<br></div><br>LoopInfo:<br>Loop Containing: %bb0, %bb3, %bb1<br>
Loop Containing: %bb1<br><br>I would need to operate in the two loops in rotated form. It can be considered a bug or I have to introduce manually the header (or modify myself the ConsiderForLoop to my particular problem)?<br>
<br>Thanks.<br><font color="#888888">Julio<br>
</font></blockquote></div><br>