[LAA] Begin moving the logic of generating checks out of addRuntimeCheck
authorAdam Nemet <anemet@apple.com>
Sun, 26 Jul 2015 05:32:14 +0000 (05:32 +0000)
committerAdam Nemet <anemet@apple.com>
Sun, 26 Jul 2015 05:32:14 +0000 (05:32 +0000)
commit09fa5a537eaa5ff56376267a7fa53c0f39c405f1
tree0e88dcb34ded1f5a9a14fc8afa616d72630fc558
parentddcbf4ce91353592fe7fa8695f5cd34a09cbd03b
[LAA] Begin moving the logic of generating checks out of addRuntimeCheck

Summary:
The goal is to start moving us closer to the model where
RuntimePointerChecking will compute and store the checks.  Then a client
can filter the check according to its requirements and then use the
filtered list of checks with addRuntimeCheck.

Before the patch, this is all done in addRuntimeCheck.  So the patch
starts to split up addRuntimeCheck while providing the old API under
what's more or less a wrapper now.

The new underlying addRuntimeCheck takes a collection of checks now,
expands the code for the bounds then generates the code for the checks.

I am not completely happy with making expandBounds static because now it
needs so many explicit arguments but I don't want to make the type
PointerBounds part of LAI.  This should get fixed when addRuntimeCheck
is moved to LoopVersioning where it really belongs, IMO.

Audited the assembly diff of the testsuite (including externals).  There
is a tiny bit of assembly churn that is due to the different order the
code for the bounds is expanded now
(MultiSource/Benchmarks/Prolangs-C/bison/conflicts.s and with LoopDist
on 456.hmmer/fast_algorithms.s).

Reviewers: hfinkel

Subscribers: klimek, llvm-commits

Differential Revision: http://reviews.llvm.org/D11205

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243239 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Analysis/LoopAccessAnalysis.h
lib/Analysis/LoopAccessAnalysis.cpp