[PATCH] D16612: [LoopVersioning] Expose loop versioning as a pass too
Adam Nemet via llvm-commits
llvm-commits at lists.llvm.org
Tue Feb 2 09:29:41 PST 2016
anemet marked 2 inline comments as done.
anemet added a comment.
Thanks for the review, Silviu.
In http://reviews.llvm.org/D16612#340485, @sbaranga wrote:
> Are you planning on using this for anything other than unit testing?
Not really other than for experimentation. I may propose a patch to schedule an off-by-default versioning early on in the pass pipeline. This could be tool for finding missed optimization due to incomplete alias information.
I also just wanted to mention the llvm-dev thread where this was discussed:
http://thread.gmane.org/gmane.comp.compilers.llvm.devel/86024
================
Comment at: lib/Transforms/Utils/LoopVersioning.cpp:180
@@ +179,3 @@
+ const LoopAccessInfo &LAI = LAA->getInfo(L, ValueToValueMap());
+ if (LAI.getNumRuntimePointerChecks()) {
+ LoopVersioning LVer(LAI, L, LI, DT, SE);
----------------
sbaranga wrote:
> This needs to be (LAI.getNumRuntimePointerChecks() || !LAI.PSE.getUnionPredicate().isAlwaysTrue()).
>
> Maybe it would also make sense to have a separate method in LAI for this logic (something like needsRuntimeChecks()?)
>
Ah, of course, thanks for catching this!
I didn't add a separate method because looking at the clients, it suggest that the pattern of usage is more like:
* check the number of memchecks, optionally by filtering the checks, fail if too many
* check the number of SCEV predicate checks, fail if too many
* if any was needed, version
http://reviews.llvm.org/D16612
More information about the llvm-commits
mailing list