[llvm] r259986 - New Loop Versioning LICM Pass

Ismail Donmez via llvm-commits llvm-commits at lists.llvm.org
Sat Feb 6 02:38:39 PST 2016


On Sat, Feb 6, 2016 at 9:47 AM, Ashutosh Nema via llvm-commits
<llvm-commits at lists.llvm.org> wrote:
> Author: ashutosh
> Date: Sat Feb  6 01:47:48 2016
> New Revision: 259986
> URL: http://llvm.org/viewvc/llvm-project?rev=259986&view=rev
> Log:
> New Loop Versioning LICM Pass
> Summary:
> When alias analysis is uncertain about the aliasing between any two accesses,
> it will return MayAlias. This uncertainty from alias analysis restricts LICM
> from proceeding further. In cases where alias analysis is uncertain we might
> use loop versioning as an alternative.
> Loop Versioning will create a version of the loop with aggressive aliasing
> assumptions in addition to the original with conservative (default) aliasing
> assumptions. The version of the loop making aggressive aliasing assumptions
> will have all the memory accesses marked as no-alias. These two versions of
> loop will be preceded by a memory runtime check. This runtime check consists
> of bound checks for all unique memory accessed in loop, and it ensures the
> lack of memory aliasing. The result of the runtime check determines which of
> the loop versions is executed: If the runtime check detects any memory
> aliasing, then the original loop is executed. Otherwise, the version with
> aggressive aliasing assumptions is used.
> The pass is off by default and can be enabled with command line option
> -enable-loop-versioning-licm.
> Reviewers: hfinkel, anemet, chatur01, reames
> Subscribers: MatzeB, grosser, joker.eph, sanjoy, javed.absar, sbaranga,
>              llvm-commits
> Differential Revision: http://reviews.llvm.org/D9151
> Added:
>     llvm/trunk/lib/Transforms/Scalar/LoopVersioningLICM.cpp
>     llvm/trunk/test/Transforms/LoopVersioningLICM/
>     llvm/trunk/test/Transforms/LoopVersioningLICM/loopversioningLICM1.ll
>     llvm/trunk/test/Transforms/LoopVersioningLICM/loopversioningLICM2.ll
>     llvm/trunk/test/Transforms/LoopVersioningLICM/loopversioningLICM3.ll

These tests fail on Linux with:

opt: Unknown command line argument '-debug-only=loop-versioning-licm'.
Try: '/home/abuild/rpmbuild/BUILD/llvm/stage2/./bin/opt -help'


More information about the llvm-commits mailing list