[PATCH] D28490: [LV] Don't panic when encountering the IV of an outer loop.

Michael Kuperstein via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 10 00:00:37 PST 2017


mkuper added inline comments.


================
Comment at: test/Transforms/LoopVectorize/pr31190.ll:8
+
+; CHECK: LV: PHI is a recurrence with respect to an outer loop.
+; CHECK: LV: Not vectorizing: Cannot prove legality.
----------------
delena wrote:
> Can you add the source code to the comments? You try to vectorize the "for.body3" loop, right? What PHI belongs to the outer loop?
Yes, it's trying to vectorize the inner loop (for.body3).
The problematic PHI is: 
%0 = phi i32 [ undef, %for.cond1.preheader ], [ %inc54, %for.body3 ]

This phi is in the inner loop, but %inc54 is an IV phi in the outer loop:
%inc54 = phi i32 [ %inc5, %for.cond1.for.inc4_crit_edge ], [ %c.promoted, %entry ]
So SCEV recognizes %0 as an AddRec, but with respect to the outer loop.

I'll add the above explanation in a comment.
Not sure about the source, though - the IR was, I think, hand-reduced by @davide from the source in PR31190, so I'm not sure having the "original" source he makes a lot of sense.



https://reviews.llvm.org/D28490





More information about the llvm-commits mailing list