1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-22 04:22:57 +02:00
llvm-mirror/lib/Transforms
Ashutosh Nema d6dcbf971a 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

llvm-svn: 259986
2016-02-06 07:47:48 +00:00
..
Hello Remove autoconf support 2016-01-26 21:29:08 +00:00
InstCombine [InstCombine] Revert r238452: Fold IntToPtr and PtrToInt into preceding loads. 2016-02-03 18:04:13 +00:00
Instrumentation [InstrProfiling] Fix a comment (NFC) 2016-02-03 23:22:43 +00:00
IPO New Loop Versioning LICM Pass 2016-02-06 07:47:48 +00:00
ObjCARC Add support for objc_unsafeClaimAutoreleasedReturnValue to the 2016-01-27 19:05:08 +00:00
Scalar New Loop Versioning LICM Pass 2016-02-06 07:47:48 +00:00
Utils [LoopUnrolling] Try harder to avoid rebuilding LCSSA when possible. 2016-02-05 02:17:36 +00:00
Vectorize [SCEV] Try to reuse existing value during SCEV expansion 2016-02-04 01:27:38 +00:00
CMakeLists.txt
LLVMBuild.txt