| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
to a few tests where it is required for the expected transformation.
llvm-svn: 77290
|
| |
|
|
| |
llvm-svn: 77266
|
| |
|
|
| |
llvm-svn: 77247
|
| |
|
|
| |
llvm-svn: 77193
|
| |
|
|
| |
llvm-svn: 77152
|
| |
|
|
| |
llvm-svn: 77148
|
| |
|
|
| |
llvm-svn: 77080
|
| |
|
|
|
|
|
| |
the step value as unsigned, the start value and the addrec
itself still need to be treated as signed.
llvm-svn: 77078
|
| |
|
|
| |
llvm-svn: 77065
|
| |
|
|
|
|
| |
analyzing add recurrences.
llvm-svn: 77034
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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.
llvm-svn: 77032
|
| |
|
|
|
|
| |
getAnalysisIfAvailable<TargetData>().
llvm-svn: 77028
|
| |
|
|
|
|
|
|
|
|
| |
- Some clients which used DOUT have moved to DEBUG. We are deprecating the
"magic" DOUT behavior which avoided calling printing functions when the
statement was disabled. In addition to being unnecessary magic, it had the
downside of leaving code in -Asserts builds, and of hiding potentially
unnecessary computations.
llvm-svn: 77019
|
| |
|
|
| |
llvm-svn: 77014
|
| |
|
|
|
|
| |
thanks to contexts-on-types. More to come.
llvm-svn: 77011
|
| |
|
|
| |
llvm-svn: 76963
|
| |
|
|
| |
llvm-svn: 76962
|
| |
|
|
| |
llvm-svn: 76929
|
| |
|
|
|
|
|
|
|
|
|
|
| |
- Yay for '-'s and simplifications!
- I kept StringMap::GetOrCreateValue for compatibility purposes, this can
eventually go away. Likewise the StringMapEntry Create functions still follow
the old style.
- NIFC.
llvm-svn: 76888
|
| |
|
|
|
|
|
|
|
| |
This introduces an LDA-internal DependencePair class. The intention is,
that this is a place where dependence testers can store various results
such as SCEVs describing conflicting iterations, breaking conditions,
distance/direction vectors, etc.
llvm-svn: 76877
|
| |
|
|
| |
llvm-svn: 76839
|
| |
|
|
| |
llvm-svn: 76769
|
| |
|
|
|
|
| |
complex types.
llvm-svn: 76765
|
| |
|
|
| |
llvm-svn: 76702
|
| |
|
|
|
|
|
|
| |
(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.
llvm-svn: 76671
|
| |
|
|
| |
llvm-svn: 76598
|
| |
|
|
|
|
|
| |
as they aren't currently prepared to handle complicated overflow
cases.
llvm-svn: 76524
|
| |
|
|
| |
llvm-svn: 76523
|
| |
|
|
| |
llvm-svn: 76521
|
| |
|
|
| |
llvm-svn: 76505
|
| |
|
|
|
|
|
| |
by determining if (B pred (B-A)) is known, as it doesn't handle
overflow correctly.
llvm-svn: 76504
|
| |
|
|
| |
llvm-svn: 76496
|
| |
|
|
| |
llvm-svn: 76492
|
| |
|
|
| |
llvm-svn: 76438
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Getelementptrs that are defined to wrap are virtually useless to
optimization, and getelementptrs that are undefined on any kind
of overflow are too restrictive -- it's difficult to ensure that
all intermediate addresses are within bounds. I'm going to take
a different approach.
Remove a few optimizations that depended on this flag.
llvm-svn: 76437
|
| |
|
|
|
|
|
|
| |
all values belonging to the intersection will belong to the resulting range.
The former was inconsistent about that point (either way is fine, just pick
one.) This is part of PR4545.
llvm-svn: 76289
|
| |
|
|
|
|
|
|
| |
GEPOperator's hasNoPointer0verflow(), and make a few places in instcombine
that create GEPs that may overflow clear the NoOverflow value. Among
other things, this partially addresses PR2831.
llvm-svn: 76252
|
| |
|
|
|
|
|
|
|
| |
in a convenient manner, factoring out some common code from
InstructionCombining and ValueTracking. Move the contents of
BinaryOperators.h into Operator.h and use Operator to generalize them
to support ConstantExprs as well as Instructions.
llvm-svn: 76232
|
| |
|
|
|
|
|
|
|
|
| |
isSafeToSpeculativelyExecute. The new method is a bit closer to what
the callers actually care about in that it rejects more things callers
don't want. It also adds more precise handling for integer
division, and unifies code for analyzing the legality of a speculative
load.
llvm-svn: 76150
|
| |
|
|
|
|
|
|
| |
number of issues in
our current context-passing stuff, which is also fixed here
llvm-svn: 76089
|
| |
|
|
|
|
|
| |
analysis. This allows indvars to emit a simpler loop trip count
expression.
llvm-svn: 76085
|
| |
|
|
|
|
|
| |
isLCSSAForm(), to test whether a loop is in the form guaranteed
by the LoopSimplify pass.
llvm-svn: 76077
|
| |
|
|
| |
llvm-svn: 75831
|
| |
|
|
|
|
| |
and use this to simplify more code.
llvm-svn: 75722
|
| |
|
|
| |
llvm-svn: 75703
|
| |
|
|
|
|
|
|
| |
the operands have pointer type, so that the resulting type matches
the original SCEV type, and so that unnecessary ptrtoints are
avoided in common cases.
llvm-svn: 75680
|
| |
|
|
| |
llvm-svn: 75666
|
| |
|
|
|
|
|
|
| |
For now this only computes the allocated size of the memory pointed to by a
pointer, and offset a pointer from allocated pointer.
The actual checkLimits part will come later, after another round of review.
llvm-svn: 75657
|
| |
|
|
|
|
|
|
|
| |
This adds location info for all llvm_unreachable calls (which is a macro now) in
!NDEBUG builds.
In NDEBUG builds location info and the message is off (it only prints
"UREACHABLE executed").
llvm-svn: 75640
|
| |
|
|
|
|
| |
users from the Scalars map.
llvm-svn: 75634
|