llvm-project/llvm/test
Ashutosh Nema df6763abe8 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
..
Analysis [SCEV] Try to reuse existing value during SCEV expansion 2016-02-04 01:27:38 +00:00
Assembler Fix constant folding of constant vector GEPs with undef or null as pointer argument. 2016-01-19 16:34:31 +00:00
Bindings Make the OCaml tests temporarily unsupported until they can be updated. 2016-02-05 23:28:03 +00:00
Bitcode Add test for PR26419 (stable function summary ordering) 2016-02-01 23:26:30 +00:00
BugPoint
CodeGen AMDGPU: Account for LDS alignment 2016-02-05 19:47:29 +00:00
DebugInfo [DWARFDebug] Fix another case of overlapping ranges 2016-02-03 21:13:33 +00:00
Examples
ExecutionEngine [RuntimeDyld][MachO] Fix handling of empty eh-frame sections. 2016-01-28 22:35:48 +00:00
Feature MachineScheduler: Honor optnone functions in the pre-ra scheduler. 2016-01-20 22:38:25 +00:00
FileCheck
Instrumentation [sanitizer] [msan] Fix origin store of array types 2016-01-11 19:55:27 +00:00
Integer
JitListener Fix several accidental DOS line endings in source files 2016-01-03 17:22:03 +00:00
LTO [LTO] Restore original linkage of externals prior to splitting 2016-01-18 23:24:54 +00:00
LibDriver
Linker Add a test for r258362. 2016-02-01 19:56:12 +00:00
MC [MC] Add support for encoding CodeView variable definition ranges 2016-02-05 01:55:49 +00:00
Object Fix identify_magic() to check that a file that starts with MH_MAGIC is 2016-01-26 23:43:37 +00:00
Other Recommit r256952 "Filtering IR printing for print-after-all/print-before-all" 2016-01-06 22:55:03 +00:00
SymbolRewriter
TableGen [llvm-tblgen] Stop emitting the intrinsic name matching code 2016-01-26 23:01:21 +00:00
Transforms New Loop Versioning LICM Pass 2016-02-06 07:47:48 +00:00
Unit
Verifier Add a "gc-transition" operand bundle 2016-01-20 19:50:25 +00:00
YAMLParser
tools [llvm-dwp] Merge cu_index from DWPs 2016-02-06 01:15:26 +00:00
.clang-format
CMakeLists.txt Introduce sanstats tool and llvm::CreateSanitizerStatReport function. 2016-01-16 00:31:11 +00:00
TestRunner.sh
lit.cfg Introduce sanstats tool and llvm::CreateSanitizerStatReport function. 2016-01-16 00:31:11 +00:00
lit.site.cfg.in Make WinCOFFObjectWriter.cpp's timestamp writing not use ENABLE_TIMESTAMPS 2016-01-06 19:05:19 +00:00