History log of /external/llvm/include/llvm/Analysis/ScalarEvolution.h
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
6cf07a80ff5ee8ef7dc336f954aae17c7e8d83d4 30-May-2012 Benjamin Kramer <benny.kra@googlemail.com> Teach SCEV's icmp simplification logic that a-b == 0 is equivalent to a == b.

This also required making recursive simplifications until
nothing changes or a hard limit (currently 3) is hit.

With the simplification in place indvars can canonicalize
loops of the form
for (unsigned i = 0; i < a-b; ++i)
into
for (unsigned i = 0; i != a-b; ++i)
which used to fail because SCEV created a weird umax expr
for the backedge taken count.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157701 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
8aa22019ca5ef29a15058be905d782e7225aa206 19-May-2012 Andrew Trick <atrick@apple.com> SCEV: Add MarkPendingLoopPredicates to avoid recursive isImpliedCond.

getUDivExpr attempts to simplify by checking for overflow.
isLoopEntryGuardedByCond then evaluates the loop predicate which
may lead to the same getUDivExpr causing endless recursion.

Fixes PR12868: clang 3.2 segmentation fault.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157092 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
f7c3e5f05199e1202c86198e0827cac19c0f48b5 11-Apr-2012 Benjamin Kramer <benny.kra@googlemail.com> FoldingSet: Push the hash through FoldingSetTraits::Equals, so clients can use it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154496 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
3eada319fc21bca31a2bc7819e4c05f46e6f82e1 11-Jan-2012 Andrew Trick <atrick@apple.com> Clarified the SCEV getSmallConstantTripCount interface with in-your-face comments.

This interface is misleading and dangerous, but it is actually what we need for unrolling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147926 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
f8fd841a4bb7a59f81cf4642169e8251e039acfe 07-Jan-2012 Andrew Trick <atrick@apple.com> Expose isNonConstantNegative to users of ScalarEvolution.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147700 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
618c1dbd293d15ee19f61b1156ab8086ad28311a 01-Dec-2011 Chad Rosier <mcrosier@apple.com> Propagate TargetLibraryInfo throughout ConstantFolding.cpp and
InstructionSimplify.cpp. Other fixups as needed.
Part of rdar://10500969

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145559 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
e97728ecf8a0ee69562cc0e7880cfaa65200c624 04-Oct-2011 Nick Lewycky <nicholas@mxc.ca> The product of two chrec's can always be represented as a chrec.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141066 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
252ef7a61a9455c1e5d7b8a5a5f7ec8b3a75e200 02-Sep-2011 Andrew Trick <atrick@apple.com> Comment and clarifying assert.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139036 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
b1831c66403315a1d84593b7c198ddbd43a574cf 12-Aug-2011 Andrew Trick <atrick@apple.com> Allow loop unrolling to get known trip counts from ScalarEvolution.

SCEV unrolling can unroll loops with arbitrary induction variables. It
is a prerequisite for -disable-iv-rewrite performance. It is also
easily handles loops of arbitrary structure including multiple exits
and is generally more robust.

This is under a temporary option to avoid affecting default
behavior for the next couple of weeks. It is needed so that I can
checkin unit tests for updateUnloop.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137384 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
1009c3299be8c147ecd3fbd2d75ba1bafb2c84b1 03-Aug-2011 Andrew Trick <atrick@apple.com> SCEV: Use AssertingVH to catch dangling BasicBlock* when passes forget
to notify SCEV of a change. Add forgetLoop in a couple of those places.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136797 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
fcb4356dee96563def584fe38eeafb3eb63c5cd8 02-Aug-2011 Andrew Trick <atrick@apple.com> Use consistent terminology for loop exit/exiting blocks. Name change only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136677 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
5116ff671f45d48594d11360e22991a7edb13862 26-Jul-2011 Andrew Trick <atrick@apple.com> SCEV: Added a data structure for storing not-taken info per loop
exit. Added an interfaces for querying either the loop's exact/max
backedge taken count or a specific loop exit's not-taken count.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136100 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
db125cfaf57cc83e7dd7453de2d509bc8efd0e5e 18-Jul-2011 Chris Lattner <sabre@nondot.org> land David Blaikie's patch to de-constify Type, with a few tweaks.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135375 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
77a2c4c1e54b7e3c4815b276eb6a2d99a7621460 09-May-2011 Dan Gohman <gohman@apple.com> Change a few std::maps to DenseMaps.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131088 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
562b84b3aea359d1f918184e355da82bf05eb290 11-Apr-2011 Jay Foad <jay.foad@gmail.com> Don't include Operator.h from InstrTypes.h.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129271 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
b12a754cce0c1d5542af605203a47820edba454d 18-Mar-2011 Andrew Trick <atrick@apple.com> Added isValidRewrite() to check the result of ScalarEvolutionExpander.

SCEV may generate expressions composed of multiple pointers, which can
lead to invalid GEP expansion. Until we can teach SCEV to follow strict
pointer rules, make sure no bad GEPs creep into IR.
Fixes rdar://problem/9038671.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127839 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
3228cc259b5ca00e46af36da369a451f5736cbf4 14-Mar-2011 Andrew Trick <atrick@apple.com> Added SCEV::NoWrapFlags to manage unsigned, signed, and self wrap
properties.
Added the self-wrap flag for SCEV::AddRecExpr.
A slew of temporary FIXMEs indicate the intention of the no-self-wrap flag
without changing behavior in this revision.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127590 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
6038a6351e7a9601a1eb3ffe4623c424ae2c80a4 11-Jan-2011 Chris Lattner <sabre@nondot.org> some comment improvements.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123243 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
992efb03785f2a368fbb63b09373be1d6a96ce5a 09-Jan-2011 Chris Lattner <sabre@nondot.org> Step #2 to improve trip count analysis for loops like this:

void f(int* begin, int* end) { std::fill(begin, end, 0); }

which turns into a != exit expression where one pointer is
strided and (thanks to step #1) known to not overflow, and
the other is loop invariant.

The observation here is that, though the IV is strided by
4 in this case, that the IV *has* to become equal to the
end value. It cannot "miss" the end value by stepping over
it, because if it did, the strided IV expression would
eventually wrap around.

Handle this by turning A != B into "A-B != 0" where the A-B
part is known to be NUW.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123131 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
a92ff91a967c63a2395a34c9e8331a7d50d6ab10 27-Dec-2010 Chris Lattner <sabre@nondot.org> implement enough of the memset inference algorithm to recognize and insert
memsets. This is still missing one important validity check, but this is enough
to compile stuff like this:

void test0(std::vector<char> &X) {
for (std::vector<char>::iterator I = X.begin(), E = X.end(); I != E; ++I)
*I = 0;
}

void test1(std::vector<int> &X) {
for (long i = 0, e = X.size(); i != e; ++i)
X[i] = 0x01010101;
}

With:
$ clang t.cpp -S -o - -O2 -emit-llvm | opt -loop-idiom | opt -O3 | llc

to:

__Z5test0RSt6vectorIcSaIcEE: ## @_Z5test0RSt6vectorIcSaIcEE
## BB#0: ## %entry
subq $8, %rsp
movq (%rdi), %rax
movq 8(%rdi), %rsi
cmpq %rsi, %rax
je LBB0_2
## BB#1: ## %bb.nph
subq %rax, %rsi
movq %rax, %rdi
callq ___bzero
LBB0_2: ## %for.end
addq $8, %rsp
ret
...
__Z5test1RSt6vectorIiSaIiEE: ## @_Z5test1RSt6vectorIiSaIiEE
## BB#0: ## %entry
subq $8, %rsp
movq (%rdi), %rax
movq 8(%rdi), %rdx
subq %rax, %rdx
cmpq $4, %rdx
jb LBB1_2
## BB#1: ## %for.body.preheader
andq $-4, %rdx
movl $1, %esi
movq %rax, %rdi
callq _memset
LBB1_2: ## %for.end
addq $8, %rsp
ret



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122573 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
1f6efa3996dd1929fbc129203ce5009b620e6969 29-Nov-2010 Michael J. Spencer <bigcheesegs@gmail.com> Merge System into Support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120298 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
9c9fcfc719158a46cb2e41b66d7dc1a63cd48d74 18-Nov-2010 Dan Gohman <gohman@apple.com> Introduce memoization for ScalarEvolution dominates and properlyDominates
queries, and SCEVExpander getRelevantLoop queries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119595 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
56a756821842678a96f2baa8c6a53bd28fc2b69e 18-Nov-2010 Dan Gohman <gohman@apple.com> Factor out the code for purging a SCEV from all the various memoization maps.
Some of these maps may merge in the future, but for now it's convenient to have
a utility function for them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119587 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
714b5290b04e08570dae4304c1c92d30c06d3c99 18-Nov-2010 Dan Gohman <gohman@apple.com> Merge the implementations of isLoopInvariant and hasComputableLoopEvolution, and
memoize the results. This improves compile time in code which highly complex
expressions which get queried many times.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119584 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
4ce32db913beb6ae27df2fa0a9db5d68fd4889d2 17-Nov-2010 Dan Gohman <gohman@apple.com> Make SCEV::getType() and SCEV::print non-virtual. Move SCEV::hasOperand
to ScalarEvolution. Delete SCEV::~SCEV. SCEV is no longer virtual.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119578 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
dc0e8fb9f9512622f55f73e1a434caa5c0915694 17-Nov-2010 Dan Gohman <gohman@apple.com> Move SCEV::dominates and properlyDominates to ScalarEvolution.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119570 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
17ead4ff4baceb2c5503f233d0288d363ae44165 17-Nov-2010 Dan Gohman <gohman@apple.com> Move SCEV::isLoopInvariant and hasComputableLoopEvolution to be member
functions of ScalarEvolution, in preparation for memoization and
other optimizations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119562 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
7c0fd8eb724a7228a6cf7e3e5487614c25202a91 17-Nov-2010 Dan Gohman <gohman@apple.com> Fix ScalarEvolution's range memoization to avoid using a
default ctor with ConstantRange.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119550 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
6678e7b6eb534b43b92105076e6d0553e5cf7def 17-Nov-2010 Dan Gohman <gohman@apple.com> Memoize results from ScalarEvolution's getUnsignedRange and getSignedRange.
This fixes some extreme compile times on unrolled sha512 code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119455 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
e8ac3f3be4b4df619368bf46aa4ed91557b5f76e 27-Aug-2010 Dan Gohman <gohman@apple.com> Switch ScalarEvolution's main Value*->SCEV* map from std::map
to DenseMap.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112281 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
081ad68e687b24dd102ed890bae1e10d8d284cef 16-Aug-2010 Dan Gohman <gohman@apple.com> Placate overzealous compiler warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111152 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
aadb5f5adbdb650c5cdc5ece939aaa30af91b3bc 16-Aug-2010 Dan Gohman <gohman@apple.com> Specialize FoldingSetTrait<SCEV>, providing implementations of node
comparison and hash computation which don't require constructing
temporary ID values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111131 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
af08a36bd6b9d32a5ea993849d43094fecbd5bed 11-Aug-2010 Dan Gohman <gohman@apple.com> Rename and reorder the arguments to isImpliedCond, for consistency and clarity.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110750 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
ab37f50838350e1104579fbd1f7c8820473485a5 03-Aug-2010 Dan Gohman <gohman@apple.com> Make SCEVUnknown a CallbackVH, so that it can be notified directly
of Value deletions and RAUWs, instead of relying on ScalarEvolution's
Scalars map being notified, as that's complicated at best, and
insufficient in general.

This means SCEVUnknown needs a non-trivial destructor, so introduce
a mechanism to allow ScalarEvolution to locate all the SCEVUnknowns.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110086 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
e6cbfa6b09e3e9ddf18449d1b64793e24af27c6b 29-Jul-2010 Eric Christopher <echristo@apple.com> Speculatively revert r109705 since it seems to be causing some build bot
angst.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109718 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
c6743207e20904008d2de016adfa6b0a9355c0e7 29-Jul-2010 Dan Gohman <gohman@apple.com> Factor out some of the code for updating old SCEVUnknown values, and
extend it to handle the case where multiple RAUWs affect a single
SCEVUnknown.

Add a ScalarEvolution unittest to test for this situation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109705 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
dc7a235363166a61e81986c534fe11ceb44109fc 28-Jul-2010 Dan Gohman <gohman@apple.com> Add some extra friend declarations to fix a gcc-4.0 compile error.
This is a temporary fix, until more elaborate changes are ready.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109593 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
605c14fb115e89a2bad97761ae57b55e8c28ffff 23-Jun-2010 Dan Gohman <gohman@apple.com> Replace ScalarEvolution's private copy of getLoopPredecessor
with LoopInfo's public copy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106603 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
3bf63768e574a2065de1aebba12f6c2e80f4fb16 18-Jun-2010 Dan Gohman <gohman@apple.com> Revert r106304 (105548 and friends), which are the SCEVComplexityCompare
optimizations. There is still some nondeterminism remaining.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106306 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
78db186d2dbaf4745f7e4beab4029db40856b54b 18-Jun-2010 Dan Gohman <gohman@apple.com> Reapply 105540, 105542, and 105548, and revert r105732.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106304 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
07587a450044e32b791baa012032f1cb11bfed88 18-Jun-2010 Dan Gohman <gohman@apple.com> Remove getIntegerSCEV; it's redundant with getConstant, and getConstant
is more consistent with the ConstantInt API.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106281 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
1d451dff63e9c4241794a3645dfe4ee67efe5b22 09-Jun-2010 Evan Cheng <evan.cheng@apple.com> Revert 105540, 105542, 105544, 105546, and 105548 to unbreak bootstrapping.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105740 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
fd447eff22637c3d47ce709468ab50b6243d0e4c 07-Jun-2010 Dan Gohman <gohman@apple.com> The FoldingSet hash data includes pointer values, so it isn't
determinstic. Instead, give SCEV objects an arbitrary sequence
number.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105548 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
4d52c6d622811d00d40b914a4ebd1996b1eed95d 07-Jun-2010 Dan Gohman <gohman@apple.com> Optimize ScalarEvolution's SCEVComplexityCompare predicate: don't go
scrounging through SCEVUnknown contents and SCEVNAryExpr operands;
instead just do a simple deterministic comparison of the precomputed
hash data.

Also, since this is more precise, it eliminates the need for the slow
N^2 duplicate detection code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105540 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
5cc6f9ba4777a460d7036edbbb3e8f01fb0a3d32 30-Apr-2010 Dan Gohman <gohman@apple.com> Add some comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102731 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
e979650fa5faf4b1253f623662a8d9c81a4a4fc3 24-Apr-2010 Dan Gohman <gohman@apple.com> Add a new utility function SimplifyICmpOperands. Much of this code is
refactored out of ScalarEvolution::isImpliedCond, which will be updated
to use this new utility routine soon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102229 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
005752bbe72868b548bba93dbc1ea46ffe8e5b2c 15-Apr-2010 Dan Gohman <gohman@apple.com> Make getPredecessorWithUniqueSuccessorForBB return the unique successor
in addition to the predecessor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101374 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
53c66eacc417c0113fba7159487b90005dc8f91e 12-Apr-2010 Dan Gohman <gohman@apple.com> Enhance ScalarEvolution::isKnownPredicate with support for
loop conditions which are invariants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100995 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
e48172710bf78ae210b2257d6ac3e0e8fb3ba792 12-Apr-2010 Dan Gohman <gohman@apple.com> Fix a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100992 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
3948d0b8b0a71fabf25fceba1858b2b6a60d3d00 11-Apr-2010 Dan Gohman <gohman@apple.com> Rename isLoopGuardedByCond to isLoopEntryGuardedByCond, to emphasise
that it's only testing for the entry condition, not full loop-invariant
conditions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100979 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
c93b4cff89d85a13d4eaf1551af9fab276b88450 18-Mar-2010 Dan Gohman <gohman@apple.com> Add the ability to "intern" FoldingSetNodeID data into a
BumpPtrAllocator-allocated region to allow it to be stored in a more
compact form and to avoid the need for a non-trivial destructor call.

Use this new mechanism in ScalarEvolution instead of
FastFoldingSetNode to avoid leaking memory in the case where a
FoldingSetNodeID uses heap storage, and to reduce overall memory
usage.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98829 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
3f46a3abeedba8d517b4182de34c821d752db058 01-Mar-2010 Dan Gohman <gohman@apple.com> Spelling fixes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97453 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
f6d009fb6fc19d9f7ee7cdc528bf8e83a758facc 24-Feb-2010 Dan Gohman <gohman@apple.com> Convert a few more backedge-taken count functions to use BackedgeTakenInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97042 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
45a2d7d44ae697e28df383d31455145fb754ac58 19-Feb-2010 Dale Johannesen <dalej@apple.com> recommit 96626, evidence that it broke things appears
to be spurious



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96662 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
efd9e9505167a398ba3c4924b09a47bd4d688e51 19-Feb-2010 Dale Johannesen <dalej@apple.com> Revert 96626, which causes build failure on ppc Darwin.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96653 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
aa11defd1c66dbde0c757c99791c4ae4d740fc3e 19-Feb-2010 Dan Gohman <gohman@apple.com> Indvars needs to explicitly notify ScalarEvolution when it is replacing
a loop exit value, so that if a loop gets deleted, ScalarEvolution
isn't stick holding on to dangling SCEVAddRecExprs for that loop. This
fixes PR6339.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96626 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
32efba698df6aa35335eeb44d89288352d04746d 04-Feb-2010 Dan Gohman <gohman@apple.com> Change the argument to getIntegerSCEV to be an int64_t, rather
than int. This will make it more convenient for LSR, which does
a lot of things with int64_t offsets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95281 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
ebdcbc26c77b97483afbcb906f988cc66d43606d 02-Feb-2010 Dan Gohman <gohman@apple.com> Fix function names in comments. Thanks Duncan!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95126 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
4f8eea82d8967cffa85b9df6c9255717b059009e 01-Feb-2010 Dan Gohman <gohman@apple.com> Generalize target-independent folding rules for sizeof to handle more
cases, and implement target-independent folding rules for alignof and
offsetof. Also, reassociate reassociative operators when it leads to
more folding.

Generalize ScalarEvolution's isOffsetOf to recognize offsetof on
arrays. Rename getAllocSizeExpr to getSizeOfExpr, and getFieldOffsetExpr
to getOffsetOfExpr, for consistency with analagous ConstantExpr routines.

Make the target-dependent folder promote GEP array indices to
pointer-sized integers, to make implicit casting explicit and exposed
to subsequent folding.

And add a bunch of testcases for this new functionality, and a bunch
of related existing functionality.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94987 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
629bff692ae96dea517dc854e27b57ee6c8729ef 21-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> struct/class mismatch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94075 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
1cd9275c8d612bd1c92fc7ba436b60aaead1efbf 19-Jan-2010 Dan Gohman <gohman@apple.com> Give ScalarEvolution access to the DominatorTree. It'll need this
to make more intellegent AddRec folding decisions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93930 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
d281ed2d03654b9cdb290a2d7c73dfe7b826e554 18-Dec-2009 Dan Gohman <gohman@apple.com> Preserve NSW information in more places.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91656 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
4c7279ac726e338400626fca5a09b5533426eb6a 31-Oct-2009 Dan Gohman <gohman@apple.com> Rename forgetLoopBackedgeTakenCount to forgetLoop, because it
clears out more information than just the stored backedge taken count.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85664 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
8b67f774e9c38b7718b2b300b628388f966df4e0 26-Oct-2009 Chandler Carruth <chandlerc@gmail.com> Move DataTypes.h to include/llvm/System, update all users. This breaks the last
direct inclusion edge from System to Support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85086 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
3645b01002e7ac244c1f3d163e5e350df21d869d 09-Oct-2009 Dan Gohman <gohman@apple.com> Add the ability to track HasNSW and HasNUW on more kinds of SCEV expressions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83601 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
6e70e31810464289a9e9b37e0345847e3ca5d5cf 27-Sep-2009 Dan Gohman <gohman@apple.com> Add a properlyDominates member function to ScalarEvolution.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82898 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
1f96e67f78110d0ac5b30a32375097a28f869c63 17-Sep-2009 Dan Gohman <gohman@apple.com> Teach ScalarEvolution how to reason about no-wrap flags on loops
where the induction variable has a non-unit stride, such as {0,+,2}, and
there are expressions such as {1,+,2} inside the loop formed with
or or add nsw operators.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82151 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
e7125f4babb536df3a2573b6166954da7753c6b8 03-Sep-2009 Dan Gohman <gohman@apple.com> Remove references to expression "handles", which are no longer used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80918 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
42214899082bfb5b6f8c6a09d355fec9ef4a0e82 31-Aug-2009 Dan Gohman <gohman@apple.com> Extend the ValuesAtScope cache to cover all expressions, not just
SCEVUnknowns, as the non-SCEVUnknown cases in the getSCEVAtScope code
can also end up repeatedly climing through the same expression trees,
which can be unusably slow when the trees are very tall.

Also, add a quick check for SCEV pointer equality to the main
SCEV comparison routine, as the full comparison code can be expensive
in the case of large expression trees.

These fix compile-time problems in some pathlogical cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80623 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
9661c13c37d017df6f91a399c0160b82e8a6c39f 24-Aug-2009 Chris Lattner <sabre@nondot.org> remove a few dead insertion methods.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79882 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
45cfe545ec8177262dabc70580ce05feaa1c3880 23-Aug-2009 Chris Lattner <sabre@nondot.org> Change Pass::print to take a raw ostream instead of std::ostream,
update all code that this affects.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79830 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
c40f17b08774c2dcc5787fd83241e3c64ba82974 18-Aug-2009 Dan Gohman <gohman@apple.com> Generalize ScalarEvolution to be able to analyze GEPs when
TargetData is not present. It still uses TargetData when available.
This generalization also fixed some limitations in the TargetData
case; the attached testcase covers this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79344 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
12ddd409535b52a7fa5157ded9a4cedd161fedb6 11-Aug-2009 Benjamin Kramer <benny.kra@googlemail.com> Make LLVMContext and LLVMContextImpl classes instead of structs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78690 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
ffef8acc3e3398bdd04e947c7949befdd52faf86 11-Aug-2009 Dan Gohman <gohman@apple.com> Tidy #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78677 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
48b2f3e4850cd27d54224cd42da8a160d6b95984 05-Aug-2009 Owen Anderson <resistor@mac.com> Factor some of the constants+context related code out into a separate header, to make LLVMContextImpl.h
not hideous. Also, fix some MSVC compile errors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78115 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
07ad19b509530b43e6a9acc5c1285cb560dd7198 27-Jul-2009 Dan Gohman <gohman@apple.com> Fix wording in comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77193 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
7e77f7959162a601291fd5400a88908d021033d3 25-Jul-2009 Dan Gohman <gohman@apple.com> Fix a few comments to say "backedge-taken count" instead of
"trip count".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77081 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
fef8bb24de86ff41d09a7787c6c52b058a853e39 25-Jul-2009 Dan Gohman <gohman@apple.com> Instead of eagerly creating new SCEVs to replace all SCEVs that are
affected after a PHI node has been analyzed, just remove affected
SCEVs from the Scalars map, so that they'll be (lazily) recreated as
needed. This avoids creating SCEV objects that aren't actually needed.

Also, rewrite the associated def-use walking code to be non-recursive
and to continue traversing past Instructions that don't have an
entry in the Scalars map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77032 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
2f1b15386f84a607304fca7e26fa6b67b490df4d 24-Jul-2009 Dan Gohman <gohman@apple.com> Give the SCEV class a SubclassData field.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76927 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
a271d36d7ce96bce52fcb73ca1ef028d9a9d8d0f 24-Jul-2009 Dan Gohman <gohman@apple.com> Fix whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76926 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
e922c0201916e0b980ab3cfe91e1413e68d55647 22-Jul-2009 Owen Anderson <resistor@mac.com> Get rid of the Pass+Context magic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76702 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
0f4b285a5b86b1e9c6e27bb46028dfbb77bb5db4 22-Jul-2009 Dan Gohman <gohman@apple.com> Replace the original ad-hoc code for determining whether (v pred w) implies
(x pred y) with more thorough code that does more complete canonicalization
before resorting to range checks. This helps it find more cases where
the canonicalized expressions match.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76671 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
fc8deb971d2b4dff370ba93948975e33a038605d 17-Jul-2009 Dan Gohman <gohman@apple.com> Commit this change, to accompany r76232.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76238 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
03ee68a145ab5394c070298049d93f305be93ec3 14-Jul-2009 Dan Gohman <gohman@apple.com> Forward-declare Loop and LoopInfo instead of #including LoopInfo.h.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75529 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
85b05a2e60e0e696739167b52cc7cc3e7cf390c0 13-Jul-2009 Dan Gohman <gohman@apple.com> Reapply 75252, with a fix to avoid the infinite recursion case. The
check for avoiding re-analyzing a widening cast needed to happen
earlier, as getSCEV itself may result in a isLoopGuardedByCond query.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75511 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
c050fd94c29e31414591e3a18aa20049e6b3a84f 13-Jul-2009 Dan Gohman <gohman@apple.com> Convert SCEV from FoldingSetNode to FastFoldingSetNode. This eliminates
a bunch of redundent code in Profile methods, and prepares for upcoming
changes to do improved memoization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75494 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
deb052a3dd0227579f86d74b3c1d70384ea5c16b 13-Jul-2009 Daniel Dunbar <daniel@zuster.org> Match declaration to definition.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75440 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
d0cca2415099e80bd11e6b2090896719b07afd93 11-Jul-2009 Nick Lewycky <nicholas@mxc.ca> Revert r75252 which was causing some crashes at compile time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75384 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
1afdc5f3565f09d33de888fede895540059dca4c 10-Jul-2009 Dan Gohman <gohman@apple.com> Remove ScalarEvolution::hasSCEV, which isn't being used, and which
breaks encapsulation. Also remove a dead prototype for setSCEV.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75272 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
1b342583f6fc42f548912632f6aa24fc6e11986a 10-Jul-2009 Dan Gohman <gohman@apple.com> Generalize ScalarEvolution's cast-folding code to support more kinds
of loops. Add several new functions to for working with ScalarEvolution's
add-hoc value-range analysis functionality.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75252 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
7b9547089f0363b803e55dcbde1d6b99710dfe69 10-Jul-2009 Andreas Bolka <a@bolka.at> Fix typo, trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75179 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
59ae6b99872953761dfda5984801d23a66692673 08-Jul-2009 Dan Gohman <gohman@apple.com> Make the code that updates ScalarEvolution's internal state in response
to a loop deletion more thorough. Don't prune the def-use tree search at
instructions that don't have SCEVs computed, because an instruction with
a user that has a computed SCEV may itself lack a computed SCEV. Also,
remove loop-related values from the ValuesAtScopes and
ConstantEvolutionLoopExitValues maps as well.

This fixes a regression in 483.xalancbmk.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75030 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
0bba49cebc50c7bd4662a4807bcb3ee7f42cb470 07-Jul-2009 Dan Gohman <gohman@apple.com> Change all SCEV* to SCEV *.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74918 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
07cf79ef537caff6d39145f190a28a336e629b6f 07-Jul-2009 Owen Anderson <resistor@mac.com> "LLVMContext* " --> "LLVMContext *"


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74878 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
508955156a25a9abc470a29e1760aa176d341cf9 06-Jul-2009 Owen Anderson <resistor@mac.com> Thread LLVMContext through the constant folding APIs, which touches a lot of files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74844 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
1c34375f79b7786351c27ae45f0412cfdfa004ed 27-Jun-2009 Dan Gohman <gohman@apple.com> Convert ScalarEvolution to use BumpPtrAllocator and FoldingSet, instead
of a team of individual allocations and a team of std::maps.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74393 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
650919e8b0aa28d20b8ff11f42ba81fea8b336cc 24-Jun-2009 Dan Gohman <gohman@apple.com> Remove an obsolete comment and fix some 80-column violations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74059 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
40a5a1b39ee1cd40ff9d04740386b667fb27b340 24-Jun-2009 Dan Gohman <gohman@apple.com> Extend ScalarEvolution's multiple-exit support to compute exact
trip counts in more cases.

Generalize ScalarEvolution's isLoopGuardedByCond code to recognize
And and Or conditions, splitting the code out into an
isNecessaryCond helper function so that it can evaluate Ands and Ors
recursively, and make SCEVExpander be much more aggressive about
hoisting instructions out of loops.

test/CodeGen/X86/pr3495.ll has an additional instruction now, but
it appears to be due to an arbitrary register allocation difference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74048 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
6bbcba18db6d1f4bc0f0157df41cc02627bc4aa9 24-Jun-2009 Dan Gohman <gohman@apple.com> Move the special cases for constants out of getUnknown and into
createSCEV. Also, recognize UndefValue in createSCEV.

Change getIntegerSCEV's comment to avoid mentioning FP types,
and re-implement it in terms of getConstant instead of getUnknown.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74041 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
4d289bf4af88759be173a1a809bf8c092d729764 24-Jun-2009 Dan Gohman <gohman@apple.com> Add an isAllOnesValue utility function, similar to isZero and isOne.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74032 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
753ad615f96c3d56d6f17983bdba88012e88677c 22-Jun-2009 Owen Anderson <resistor@mac.com> Remove the parent pointer from SCEV, since it did not end up being needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73907 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
372b46cad9f745859f542f9d2216991585ae83f4 22-Jun-2009 Owen Anderson <resistor@mac.com> SCEVHandle is no more!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73906 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
08367b61638b4d446ebab69e2aad6431daa77ba7 22-Jun-2009 Owen Anderson <resistor@mac.com> Banish global state from ScalarEvolution! SCEV uniquing is now done by tables attached to the ScalarEvolution pass.
This also throws out the SCEV reference counting scheme, as the the SCEVs now have a lifetime controlled by the
ScalarEvolution pass.

Note that SCEVHandle is now a no-op, and will be remove in a future commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73892 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
c9759e80f45e5690c3ed3b69c2e9ffd5a1bffd9c 22-Jun-2009 Dan Gohman <gohman@apple.com> Add a getUMinFromMismatchedTypes helper function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73883 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
f9a9a9928cc977970d9852292b1c139074ecf055 22-Jun-2009 Dan Gohman <gohman@apple.com> Factor out code for computing umin and smin for SCEV expressions into
helper functions. Based on a patch by Nick Lewycky.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73869 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
a334aa7a106d5ebb971862f25daaadad48d96235 22-Jun-2009 Dan Gohman <gohman@apple.com> Teach ScalarEvolution how to analyze loops with multiple exit
blocks, and also exit blocks with multiple conditions (combined
with (bitwise) ands and ors). It's often infeasible to compute an
exact trip count in such cases, but a useful upper bound can often
be found.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73866 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
51f53b7f5a0e859ceef995c61667905166b96f1b 22-Jun-2009 Dan Gohman <gohman@apple.com> Fix ScalarEvolution's backedge-taken count computations to check for
overflow when computing a integer division to round up.

Thanks to Nick Lewycky for noticing this!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73862 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
2c364ad4a65737f3bda876f86eba0061ecbd5470 20-Jun-2009 Dan Gohman <gohman@apple.com> Make GetMinTrailingZeros a member function of ScalarEvolution,
so that it can access the TargetData member (when available) and
use ValueTracking.h information to compute information for
SCEVUnknown Values.

Also add GetMinLeadingZeros and GetMinSignBits functions,
with minimal implementations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73794 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
4a7893b4527819aae229f539ab9c3eeecc6a10e2 19-Jun-2009 Owen Anderson <resistor@mac.com> Add a parent pointer to SCEV, in preparation for getting rid of the global uniquing tables. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73728 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
6de29f8d960505421d61c80cdb738e16720b6c0e 16-Jun-2009 Dan Gohman <gohman@apple.com> Support vector casts in more places, fixing a variety of assertion
failures.

To support this, add some utility functions to Type to help support
vector/scalar-independent code. Change ConstantInt::get and
ConstantFP::get to support vector types, and add an overload to
ConstantInt::get that uses a static IntegerType type, for
convenience.

Introduce a new getConstant method for ScalarEvolution, to simplify
common use cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73431 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
444f49150df8a4280ccea20fc2839cd899fc7558 15-Jun-2009 Dan Gohman <gohman@apple.com> Specialize DenseMapInfo for SCEVHandle, so that SCEVHandles can be
used as keys in DenseMaps.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73360 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
a82752c9eb5fbdd1b7276fde7349ac9453eb5a75 15-Jun-2009 Dan Gohman <gohman@apple.com> Convert several parts of the ScalarEvolution framework to use
SmallVector instead of std::vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73357 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
2ce84c8d4784dfd24458a63db8d531917d2f8ba5 13-Jun-2009 Dan Gohman <gohman@apple.com> Add a ScalarEvolution::getAnyExtendExpr utility function for performing
extension with unspecified bits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73293 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
86fbf2fe4cae21febffa4bb2f64cd0c2ee834694 06-Jun-2009 Dan Gohman <gohman@apple.com> Rename UnknownValue to CouldNotCompute, since it holds an instance of
SCEVCouldNotCompute, and not SCEVUnknown.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72999 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
6c0866ca8373da318741cc90ad7afd1bda22bb1b 25-May-2009 Dan Gohman <gohman@apple.com> Various comment fixes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72376 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
d594e6f0345b3e1e4b640a7099596ca613da16d6 25-May-2009 Dan Gohman <gohman@apple.com> Change ScalarEvolution::getSCEVAtScope to always return the original value
in the case where a loop exit value cannot be computed, instead of only in
some cases while using SCEVCouldNotCompute in others. This simplifies
getSCEVAtScope's callers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72375 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
1959b7562e57f8394496e761486f23b187ac3f1b 19-May-2009 Dan Gohman <gohman@apple.com> Make SCEVCallbackVH a private nested class inside ScalarEvolution, as
it's an implementation detail.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72122 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
5be18e84766fb495b0bde3c8244c1df459a18683 19-May-2009 Dan Gohman <gohman@apple.com> Teach SCEVExpander to expand arithmetic involving pointers into GEP
instructions. It attempts to create high-level multi-operand GEPs,
though in cases where this isn't possible it falls back to casting
the pointer to i8* and emitting a GEP with that. Using GEP instructions
instead of ptrtoint+arithmetic+inttoptr helps pointer analyses that
don't use ScalarEvolution, such as BasicAliasAnalysis.

Also, make the AddrModeMatcher more aggressive in handling GEPs.
Previously it assumed that operand 0 of a GEP would require a register
in almost all cases. It now does extra checking and can do more
matching if operand 0 of the GEP is foldable. This fixes a problem
that was exposed by SCEVExpander using GEPs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72093 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
859b4824eeb2d88c441e855afe3dd7827dfd62a4 18-May-2009 Dan Gohman <gohman@apple.com> Make ScalarEvolution::isLoopGuardedByCond work even when the edge
entering a loop is a non-split critical edge.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72004 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
70a1fe704831f9b842be0b2a2af5f7082b0e540c 18-May-2009 Dan Gohman <gohman@apple.com> Add an isOne() utility function to ScalarEvolution, similar to isZero()
and similar to ConstantInt's isOne().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72003 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
467c430316b7a5b6fa8069531ca8d603b1e1197f 13-May-2009 Dan Gohman <gohman@apple.com> Add three new helper routines, getNoopOrZeroExtend,
getNoopOrSignExtend, and getTruncateOrNoop. These are similar
to getTruncateOrZeroExtend etc., except that they assert that
the conversion is either not widening or narrowing, as
appropriate. These will be used in some upcoming fixes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71632 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
fb791608115b5193419549b02825ed4337fd3a37 08-May-2009 Dan Gohman <gohman@apple.com> Fix another bug in r71252. This code supports GetElementPtr
constant exprs as well as instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71262 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
6bce643c36e7263aada5058f08cd242b4ce6b87d 08-May-2009 Dan Gohman <gohman@apple.com> Add memoization for getSCEVAtScope results for instructions
which are not analyzed with SCEV techniques, which can require
brute-forcing through a large number of instructions. This
fixes a massive compile-time issue on 400.perlbench (in
particular, the loop in MD5Transform).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71259 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
66a7e857aa5843da3a7d0f52aa09a5935cf565dc 08-May-2009 Dan Gohman <gohman@apple.com> Make the SCEV* form of getSCEVAtScope public, to allow ScalarEvolution
clients to use it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71258 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
26466c0eb3451c5c953b3cca8940359152c4f8e3 08-May-2009 Dan Gohman <gohman@apple.com> Factor out the code for creating SCEVs for GEPs into a
separate function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71252 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
35738ac150afafe2359268d4b2169498c6c98c5f 05-May-2009 Dan Gohman <gohman@apple.com> Re-apply 70645, converting ScalarEvolution to use
CallbackVH, with fixes. allUsesReplacedWith need to
walk the def-use chains and invalidate all users of a
value that is replaced. SCEVs of users need to be
recalcualted even if the new value is equivalent. Also,
make forgetLoopPHIs walk def-use chains, since any
SCEV that depends on a PHI should be recalculated when
more information about that PHI becomes available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70927 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
f9a77b77c2324b2ca5c644909ebda387daf82fe3 03-May-2009 Dan Gohman <gohman@apple.com> Revert r70645 for now; it's causing a variety of regressions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70661 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
db6fa2964176c34f0e878e101427c28782c93419 02-May-2009 Dan Gohman <gohman@apple.com> Convert ScalarEvolution to use CallbackVH for its internal map. This
makes ScalarEvolution::deleteValueFromRecords, and it's code that
subtly needed to be called before ReplaceAllUsesWith, unnecessary.

It also makes ValueDeletionListener unnecessary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70645 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
fb7d35f22a958747dd3ae8861ae3ce018146131c 02-May-2009 Dan Gohman <gohman@apple.com> When ScalarEvolution is told to forget the trip count for a loop, have
it also forget any SCEVs associated with loop-header PHIs in the loop,
as they may be dependent on trip count information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70633 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
3d739fe3756bf67be23c2ca54ec7b04bef89bfe0 30-Apr-2009 Dan Gohman <gohman@apple.com> Add some comments, and tidy up some whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70510 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
a1af757e0af9c2fb5ade4b06408e1adfa0425c6c 30-Apr-2009 Dan Gohman <gohman@apple.com> Extend ScalarEvolution's getBackedgeTakenCount to be able to
compute an upper-bound value for the trip count, in addition to
the actual trip count. Use this to allow getZeroExtendExpr and
getSignExtendExpr to fold casts in more cases.

This may eventually morph into a more general value-range
analysis capability; there are certainly plenty of places where
more complete value-range information would allow more folding.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70509 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
f8a8be86e3972608741c1e1ecb89ec3c6f570552 22-Apr-2009 Dan Gohman <gohman@apple.com> De-pImpl-ify ScalarEvolution. The pImpl pattern doesn't provide much
practical benefit in the case of ScalarEvolution, and it's otherwise
a nuisance.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69749 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
af79fb5f47b0088c6a8973a7fdbaea96973a429d 21-Apr-2009 Dan Gohman <gohman@apple.com> Introduce encapsulation for ScalarEvolution's TargetData object, and refactor
the code to minimize dependencies on TargetData.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69644 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
b7ef72963b2215ca23c27fa8ea777bada06994d0 21-Apr-2009 Dan Gohman <gohman@apple.com> Convert ScalarEvolution to use raw_ostream instead of OStream.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69640 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
f4ccfcb70402b34ee55e0b5820cf287b95a8762f 18-Apr-2009 Dan Gohman <gohman@apple.com> Add a ScalarEvolution::getCouldNotCompute() function, and use it
instead of allocating and leaking new SCEVCouldNotCompute objects.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69452 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
2d1be87ee40a4a0241d94448173879d9df2bc5b3 16-Apr-2009 Dan Gohman <gohman@apple.com> Expand GEPs in ScalarEvolution expressions. SCEV expressions can now
have pointer types, though in contrast to C pointer types, SCEV
addition is never implicitly scaled. This not only eliminates the
need for special code like IndVars' EliminatePointerRecurrence
and LSR's own GEP expansion code, it also does a better job because
it lets the normal optimizations handle pointer expressions just
like integer expressions.

Also, since LLVM IR GEPs can't directly index into multi-dimensional
VLAs, moving the GEP analysis out of client code and into the SCEV
framework makes it easier for clients to handle multi-dimensional
VLAs the same way as other arrays.

Some existing regression tests show improved optimization.
test/CodeGen/ARM/2007-03-13-InstrSched.ll in particular improved to
the point where if-conversion started kicking in; I turned it off
for this test to preserve the intent of the test.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69258 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
46bdfb0e6bb9de86b19562fc52fddefd7014cf73 24-Feb-2009 Dan Gohman <gohman@apple.com> Rename ScalarEvolution's getIterationCount to getBackedgeTakenCount,
to more accurately describe what it does. Expand its doxygen comment
to describe what the backedge-taken count is and how it differs
from the actual iteration count of the loop. Adjust names and
comments in associated code accordingly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65382 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
f5a309e989b8d2199cb542793e9edf48395d9fed 18-Feb-2009 Dan Gohman <gohman@apple.com> Use a sign-extend instead of a zero-extend when promoting a
trip count value when the original loop iteration condition is
signed and the canonical induction variable won't undergo signed
overflow. This isn't required for correctness; it just preserves
more information about original loop iteration values.

Add a getTruncateOrSignExtend method to ScalarEvolution,
following getTruncateOrZeroExtend.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64918 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
60f8a63e2502d57e879bf52a4a48505b74fa9716 17-Feb-2009 Dan Gohman <gohman@apple.com> Add a method to ScalarEvolution for telling it when a loop has been
modified in a way that may effect the trip count calculation. Change
IndVars to use this method when it rewrites pointer or floating-point
induction variables instead of using a doInitialization method to
sneak these changes in before ScalarEvolution has a chance to see
the loop. This eliminates the need for LoopPass to depend on
ScalarEvolution.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64810 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
5a6c1a840ad343c0ed2fa54a0edb50b61f828f0f 17-Feb-2009 Evan Cheng <evan.cheng@apple.com> Strengthen the "non-constant stride must dominate loop preheader" check.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64703 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
c2390b14c91764cba6e4394d05e58e387a7dfb19 12-Feb-2009 Dan Gohman <gohman@apple.com> Teach IndVarSimplify to optimize code using the C "int" type for
loop induction on LP64 targets. When the induction variable is
used in addressing, IndVars now is usually able to inserst a
64-bit induction variable and eliminates the sign-extending cast.
This is also useful for code using C "short" types for
induction variables on targets with 32-bit addressing.

Inserting a wider induction variable is easy; the tricky part is
determining when trunc(sext(i)) expressions are no-ops. This
requires range analysis of the loop trip count. A common case is
when the original loop iteration starts at 0 and exits when the
induction variable is signed-less-than a fixed value; this case
is now handled.

This replaces IndVarSimplify's OptimizeCanonicalIVType. It was
doing the same optimization, but it was limited to loops with
constant trip counts, because it was running after the loop
rewrite, and the information about the original induction
variable is lost by that point.

Rename ScalarEvolution's executesAtLeastOnce to
isLoopGuardedByCond, generalize it to be able to test for
ICMP_NE conditions, and move it to be a public function so that
IndVars can use it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64407 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
789558db70d9513a017c11c5be30945839fdff1c 13-Jan-2009 Nick Lewycky <nicholas@mxc.ca> Wind SCEV back in time, to Nov 18th. This 'fixes' PR3275, PR3294, PR3295,
PR3296 and PR3302.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62160 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
48dd644109d97a76288f0b5045f6aa6a3c075732 02-Dec-2008 Nick Lewycky <nicholas@mxc.ca> Add a new SCEV representing signed division.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60407 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
ae73dc1448d25b02cabc7c64c86c64371453dda8 04-Sep-2008 Dan Gohman <gohman@apple.com> Tidy up several unbeseeming casts from pointer to intptr_t.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55779 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
b0b046848faad8e87d02c82d03b5b7b1ba74e041 09-Jul-2008 Nick Lewycky <nicholas@mxc.ca> Remove getValueRange from SCEV. It wasn't doing anything there anyways, and a
more complete version is now available from the LoopVR pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53269 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
cfeb6a450632f2a6cd05302633c8c2b8c90cfdfd 18-Jun-2008 Dan Gohman <gohman@apple.com> Move LSR's private isZero function to a public SCEV member
function, and make use of it in several places.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52463 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
6f8abf929ac173872cc50aff767bc25f2a07a523 13-Jun-2008 Nick Lewycky <nicholas@mxc.ca> Crash less. The i64 restriction in BinomialCoefficient caused some problems
with code that was expecting different bit widths for different values.

Make getTruncateOrZeroExtend a method on ScalarEvolution, and use it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52248 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
1baa88e3de8947b02d9ef4caa73e5860f048ec6e 29-May-2008 Dan Gohman <gohman@apple.com> Prune and tidy #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51697 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
c758209153ca0f6da6737f25ada269c573fba456 19-Mar-2008 Devang Patel <dpatel@apple.com> PassInfo keep tracks whether a pass is an analysis pass or not.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48554 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
c7fe32e840758baa9ce4f93c321b508a69b98262 19-Mar-2008 Devang Patel <dpatel@apple.com> Do not use virtual function to identify an analysis pass.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48520 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
1cee94f04111cfd7114979d6dfddce2669c9380d 18-Mar-2008 Devang Patel <dpatel@apple.com> Identify Analysis pass.
Do not run analysis pass again if analysis info is still available.
This fixes PR1441.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48476 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
3e6307698084e7adfc10b739442ae29742beefd0 20-Feb-2008 Nick Lewycky <nicholas@mxc.ca> Add 'umax' similar to 'smax' SCEV. Closes PR2003.

Parse reversed smax and umax as smin and umin and express them with negative
or binary-not SCEVs (which are really just subtract under the hood).

Parse 'xor %x, -1' as (-1 - %x).

Remove dead code (ConstantInt::get always returns a ConstantInt).

Don't use getIntegerSCEV(-1, Ty). The first value is an int, then it gets
passed into a uint64_t. Instead, create the -1 directly from
ConstantInt::getAllOnesValue().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47360 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
e3320a1bcce3f6653e109cc86ee1011b0a61d808 11-Feb-2008 Wojciech Matyjewicz <wmatyjewicz@fastmail.fm> Fix PR1798 - an error in the evaluation of SCEVAddRecExpr at an
arbitrary iteration.

The patch:
1) changes SCEVSDivExpr into SCEVUDivExpr,
2) replaces PartialFact() function with BinomialCoefficient(); the
computations (essentially, the division) in BinomialCoefficient() are
performed with the apprioprate bitwidth necessary to avoid overflow;
unsigned division is used instead of the signed one.

Computations in BinomialCoefficient() require support from the code
generator for APInts. Currently, we use a hack rounding up the
neccessary bitwidth to the nearest power of 2. The hack is easy to turn
off in future.

One remaining issue: we assume the divisor of the binomial coefficient
formula can be computed accurately using 16 bits. It means we can handle
AddRecs of length up to 9. In future, we should use APInts to evaluate
the divisor.

Thanks to Nicholas for cooperation!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46955 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
7ed47a13356daed2a34cd2209a31f92552e3bdd8 29-Dec-2007 Chris Lattner <sabre@nondot.org> Don't attribute in file headers anymore. See llvmdev for the
discussion of this change. Boy are my fingers tired. ;-)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45411 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
c54c561c9f7270c055dd7ba75a3a003b771a42d9 25-Nov-2007 Nick Lewycky <nicholas@mxc.ca> Add new SCEV, SCEVSMax. This allows LLVM to analyze do-while loops.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44319 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
4e1a0e386c6861a697b0cd2e13a33ac4dd60e17d 15-Nov-2007 Anton Korobeynikov <asl@math.spbu.ru> Reverted r44163 per request


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44177 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
65e2da3b4d6925bf30693595a524a3a43acc1f17 15-Nov-2007 Nick Lewycky <nicholas@mxc.ca> Fix handling of overflow in loop calculation by adding new UDiv SCEV. This SCEV
is disabled in the sense that it will refuse to create one from a UDiv
instruction, until the code is better tested.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44163 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
019b92a70c11319f5ab96c9f5e66e4e111a972f8 14-Nov-2007 Owen Anderson <resistor@mac.com> Start the process of making MachineLoopInfo possible by templating Loop.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44097 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
246b2564d3bbbafe06ebf6a67745cd24141b5cb4 22-Oct-2007 Dan Gohman <gohman@apple.com> Move the SCEV object factors from being static members of the individual
SCEV subclasses to being non-static member functions of the ScalarEvolution
class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43224 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
5cec4db6ae13a41d04d86f37e347fc5b5997c948 19-Jun-2007 Dan Gohman <gohman@apple.com> Rename ScalarEvolution::deleteInstructionFromRecords to
deleteValueFromRecords and loosen the types to all it to accept
Value* instead of just Instruction*, since this is what
ScalarEvolution uses internally anyway. This allows more flexibility
for future uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37657 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
ecd94c804a563f2a86572dcf1d2e81f397e19daa 06-May-2007 Nick Lewycky <nicholas@mxc.ca> Fix typo in comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36873 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
4998264403539a8201899756193261eb4f9d7f0b 03-May-2007 Dan Gohman <gohman@apple.com> Use the explicit keyword for the SCEV class' constructor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36686 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
1997473cf72957d0e70322e2fe6fe2ab141c58a6 03-May-2007 Devang Patel <dpatel@apple.com> Drop 'const'


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36662 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
3e15bf33e024b9df9e89351a165acfdb1dde51ed 02-May-2007 Devang Patel <dpatel@apple.com> Use 'static const char' instead of 'static const int'.
Due to darwin gcc bug, one version of darwin linker coalesces
static const int, which defauts PassID based pass identification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36652 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
794fd75c67a2cdc128d67342c6d88a504d186896 01-May-2007 Devang Patel <dpatel@apple.com> Do not use typeinfo to identify pass in pass manager.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36632 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
ca5183d445954a9b2a570d6bbba1bc2b00ad6442 05-Mar-2007 Jeff Cohen <jeffc@jolt-lang.org> Unbreak VC++ build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34917 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
581b0d453a63f7f657248f80317976995262be11 28-Feb-2007 Reid Spencer <rspencer@reidspencer.com> For PR1205:
Remove ConstantInt from ConstantRange interface and adjust its users to
compensate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34758 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
5c7e326585f3a543388ba871c3425f7664cd9143 17-Dec-2006 Bill Wendling <isanbard@gmail.com> Added an automatic cast to "std::ostream*" etc. from OStream. We then can
rework the hacks that had us passing OStream in. We pass in std::ostream*
instead, check for null, and then dispatch to the correct print() method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32636 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
e81561909d128c6e2d8033cb5465a49b2596b26a 07-Dec-2006 Bill Wendling <isanbard@gmail.com> Changed llvm_ostream et all to OStream. llvm_cerr, llvm_cout, llvm_null, are
now cerr, cout, and NullStream resp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32298 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
b5ebf15b2b2ce8989caf1a1114b05d80b0f9bd48 28-Nov-2006 Bill Wendling <isanbard@gmail.com> Added a temporary hack to get the llvm-streams to work for future checkins.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31978 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
27631a30eb1c5cb1c5190531b10a147f058d6ff1 10-Aug-2005 Chris Lattner <sabre@nondot.org> add two helper methods


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22735 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
9769ab22265b313171d201b5928688524a01bd87 21-Apr-2005 Misha Brukman <brukman+llvm@gmail.com> Remove trailing whitespace


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21408 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
df28a31435f90b322e2a28c8925c564a19fc3b72 09-Mar-2005 Chris Lattner <sabre@nondot.org> export two methods


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20526 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
afc0dc7184cf73ff7ac64e516284fbe0c7023ba4 13-Feb-2005 Chris Lattner <sabre@nondot.org> Add a new replaceSymbolicValuesWithConcrete method to the SCEV class,
adjust const'ness a bit to be more correct.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20145 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
ce9653ce449f1409815547e1bf60abcd1332d2c9 07-Dec-2004 Reid Spencer <rspencer@reidspencer.com> For PR387:\
Make only one print method to avoid overloaded virtual warnings when \
compiled with -Woverloaded-virtual


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18589 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
5aa20212cc8dd1008d05915bf23dd02143fc5de9 24-Jun-2004 Chris Lattner <sabre@nondot.org> Remove distasteful method which is really part of the indvars pass


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14359 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
2cdf0a7a32f08674562b0cf6b071b96b36421f87 23-Apr-2004 Chris Lattner <sabre@nondot.org> Remove the SCEV::expandCodeFor method, add a new SCEVVisitor class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13133 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
7d221c53e521edd36cc1d9f42fdb4d3201d5e014 22-Apr-2004 Chris Lattner <sabre@nondot.org> Add an ugly cast


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13107 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
e1beb8f59d076536b0022496d663344a792a8cab 22-Apr-2004 Chris Lattner <sabre@nondot.org> Add a method


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13105 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
254bacd79a07632548de2f1c91d2768572764f66 02-Apr-2004 Chris Lattner <sabre@nondot.org> cleanup some long-dead code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12628 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h
53e677abadadf71ef33f2f69533a32c1fa3d168f 02-Apr-2004 Chris Lattner <sabre@nondot.org> Add a new analysis


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12619 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/Analysis/ScalarEvolution.h