| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
| |
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.
llvm-svn: 105540
|
|
|
|
| |
llvm-svn: 104948
|
|
|
|
|
|
| |
of doing the same thing manually.
llvm-svn: 102997
|
|
|
|
| |
llvm-svn: 102996
|
|
|
|
|
|
| |
same, now that getConstant has overloads consistent with ConstantInt::get.
llvm-svn: 102965
|
|
|
|
|
|
|
|
| |
Also, pass true for isSigned even when creating constants for unsigned
comparisons, because the point is to create an all-ones constant,
rather than UINT64_MAX, even for integers wider than 64 bits.
llvm-svn: 102946
|
|
|
|
|
|
|
|
| |
SimplifyICmpOperands will simplify such cases to EQ or NE. This makes
the correcntess of the code independent on SimplifyICmpOperands doing
certain simplifications.
llvm-svn: 102927
|
|
|
|
|
|
|
| |
comparison instructions, since they aren't interesting, despite having
integer result types.
llvm-svn: 102925
|
|
|
|
|
|
| |
case where both are addrecs in unrelated loops.
llvm-svn: 102924
|
|
|
|
| |
llvm-svn: 102922
|
|
|
|
|
|
|
| |
for unsigned purposes, so >64-bit integer values get a full all-ones
value.
llvm-svn: 102739
|
|
|
|
| |
llvm-svn: 102734
|
|
|
|
|
|
|
| |
Also, generalize ScalarEvolutions's min and max recognition to handle
some new forms of min and max that this change makes more common.
llvm-svn: 102234
|
|
|
|
| |
llvm-svn: 102233
|
|
|
|
| |
llvm-svn: 102232
|
|
|
|
|
|
|
| |
refactored out of ScalarEvolution::isImpliedCond, which will be updated
to use this new utility routine soon.
llvm-svn: 102229
|
|
|
|
|
|
| |
use ScalarEvolutions "any" extend function.
llvm-svn: 102156
|
|
|
|
|
|
| |
assertion failures in extreme cases.
llvm-svn: 102042
|
|
|
|
|
|
| |
with ScalarEvolution's overall approach to pointer types.
llvm-svn: 102003
|
|
|
|
|
|
|
| |
expression canonicalization. Its job is to print what's there, not to
make judgements about it.
llvm-svn: 101461
|
|
|
|
|
|
| |
in addition to the predecessor.
llvm-svn: 101374
|
|
|
|
| |
llvm-svn: 101248
|
|
|
|
|
|
| |
that one operand is always greater than another.
llvm-svn: 101142
|
|
|
|
| |
llvm-svn: 101141
|
|
|
|
| |
llvm-svn: 101086
|
|
|
|
|
|
|
| |
they're used a lot by getNodeForGEP, which can be called a lot.
This speeds up -iv-users by around 15% on several testcases.
llvm-svn: 101083
|
|
|
|
|
|
|
| |
have preheaders or dedicated exit blocks, as clients may not otherwise
need to run LoopSimplify.
llvm-svn: 101030
|
|
|
|
|
|
|
|
|
| |
AddRecs so that it checks for overflow in the computation that it is
performing, rather than just checking hasNo{Signed,Unsigned}Wrap, since
those flags are for a different computation. This fixes a bug that
impacts an upcoming change.
llvm-svn: 101028
|
|
|
|
| |
llvm-svn: 101001
|
|
|
|
|
|
| |
loop conditions which are invariants.
llvm-svn: 100995
|
|
|
|
| |
llvm-svn: 100994
|
|
|
|
|
|
| |
ConstantRange(0, 0) creates an empty range rather than a full one.
llvm-svn: 100993
|
|
|
|
|
|
|
| |
that it's only testing for the entry condition, not full loop-invariant
conditions.
llvm-svn: 100979
|
|
|
|
| |
llvm-svn: 100824
|
|
|
|
|
|
|
| |
undef as 0, since it can't force other analyses to intepret the undef
in the same way.
llvm-svn: 100749
|
|
|
|
|
|
|
| |
RecyclingAllocator to allow client code to be simpler, and
simplify several clients.
llvm-svn: 98847
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
llvm-svn: 98829
|
|
|
|
| |
llvm-svn: 98793
|
|
|
|
| |
llvm-svn: 98762
|
|
|
|
|
|
|
|
|
|
| |
pointer and length, and allocate the arrays in ScalarEvolution's
BumpPtrAllocator, so that they get released when their owning
SCEV gets released. SCEVs are immutable, so they don't need to worry
about operand array resizing. This fixes a memory leak reported
in PR6637.
llvm-svn: 98755
|
|
|
|
|
|
| |
They are lots of trouble, and they don't matter. This fixes PR6559.
llvm-svn: 98103
|
|
|
|
| |
llvm-svn: 97453
|
|
|
|
|
|
|
|
|
|
|
|
| |
which branch on undef to branch on a boolean constant for the edge
exiting the loop. This helps ScalarEvolution compute trip counts for
loops.
Teach ScalarEvolution to recognize single-value PHIs, when safe, and
ForgetSymbolicName to forget such single-value PHI nodes as apprpriate
in ForgetSymbolicName.
llvm-svn: 97126
|
|
|
|
|
|
| |
didn't fold anything.
llvm-svn: 97049
|
|
|
|
| |
llvm-svn: 97048
|
|
|
|
| |
llvm-svn: 97042
|
|
|
|
| |
llvm-svn: 96780
|
|
|
|
| |
llvm-svn: 96688
|
|
|
|
|
|
|
|
| |
true or false as its exit condition. These are usually eliminated by
SimplifyCFG, but the may be left around during a pass which wishes
to preserve the CFG.
llvm-svn: 96683
|
|
|
|
|
|
| |
to be spurious
llvm-svn: 96662
|