[llvm] r259986 - New Loop Versioning LICM Pass

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

On Sat, Feb 6, 2016 at 12:38 PM, Ismail Donmez <ismail at i10z.com> wrote:
> Hi,
> 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'

This is a no-asserts build, might explain why.

More information about the llvm-commits mailing list