| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
DecomposeGEPExpression. This dramatically simplifies and shrinks the code by eliminating the horrible CheckGEPInstructions method, fixes a miscompilation (@test3) and makes the code more aggressive. In particular, we now handle the @test4 case, which is reduced from the SmallPtrSet constructor. Missing this caused us to emit a variable length memset instead of a fixed size one.
llvm-svn: 89922
|
| |
|
|
|
|
| |
Value::getUnderlyingObject does (when TD is around). This allows us to avoid calling DecomposeGEPExpression unless the ultimate alias check we care about passes, speedup up BasicAA a bit.
llvm-svn: 89920
|
| |
|
|
|
|
| |
list of scaled offsets. Use this to eliminate some previous ad-hoc code which was subtly broken (it assumed all Constant*'s were non-zero, but strange constant express could be zero).
llvm-svn: 89915
|
| |
|
|
| |
llvm-svn: 89914
|
| |
|
|
| |
llvm-svn: 89912
|
| |
|
|
| |
llvm-svn: 89866
|
| |
|
|
| |
llvm-svn: 89725
|
| |
|
|
| |
llvm-svn: 89713
|
| |
|
|
| |
llvm-svn: 89689
|
| |
|
|
| |
llvm-svn: 89666
|
| |
|
|
|
|
|
|
| |
check if
we have a non-constant pointer. Constant pointers can't be local.
llvm-svn: 89665
|
| |
|
|
| |
llvm-svn: 89664
|
| |
|
|
| |
llvm-svn: 89663
|
| |
|
|
|
|
|
|
|
|
| |
ConstantExpr, not just the top-level operator. This allows it to
fold many more constants.
Also, make GlobalOpt call ConstantFoldConstantExpression on
GlobalVariable initializers.
llvm-svn: 89659
|
| |
|
|
| |
llvm-svn: 89642
|
| |
|
|
| |
llvm-svn: 89641
|
| |
|
|
| |
llvm-svn: 89602
|
| |
|
|
| |
llvm-svn: 89601
|
| |
|
|
| |
llvm-svn: 89600
|
| |
|
|
|
|
|
|
| |
The hasNoModRefInfoForCalls isn't worth it as a filter because
basicaa provides m/r info and everything chains to it, so remove
it.
llvm-svn: 89599
|
| |
|
|
|
|
| |
rest of the file.
llvm-svn: 89577
|
| |
|
|
| |
llvm-svn: 89472
|
| |
|
|
|
|
|
|
|
|
|
|
| |
same object to be a non-capture; Duncan pointed out a way that such
a comparison could be a capture.
Make the rule that considers a comparison against null more specific,
and only consider noalias return values compared against null. This
still supports test/Transforms/GVN/nonescaping-malloc.ll, and is not
susceptible to the problem Duncan pointed out with noalias arguments.
llvm-svn: 89468
|
| |
|
|
|
|
|
|
| |
because if the results from getUnderlyingObject match, the values must
be from the same underlying object, even if we don't know what that
object is.
llvm-svn: 89434
|
| |
|
|
| |
llvm-svn: 89426
|
| |
|
|
|
|
|
|
|
| |
careful about crazy methods of capturing pointers using comparisons.
Comparisons of identified objects with null in the default address
space are not captures. And, comparisons of two pointers within the
same identified object are not captures.
llvm-svn: 89421
|
| |
|
|
| |
llvm-svn: 89419
|
| |
|
|
| |
llvm-svn: 89411
|
| |
|
|
|
|
|
|
| |
if it is not ultimately captured. Teach BasicAliasAnalysis that a
local object address which does not escape and is never stored does
not alias with a value resulting from a load.
llvm-svn: 89398
|
| |
|
|
| |
llvm-svn: 89389
|
| |
|
|
|
|
|
| |
for uses inside the loop. This works better with LSR. Disabled behind
-simplify-iv-users while benchmarking.
llvm-svn: 89299
|
| |
|
|
| |
llvm-svn: 89175
|
| |
|
|
| |
llvm-svn: 89156
|
| |
|
|
| |
llvm-svn: 88884
|
| |
|
|
|
|
|
| |
This allows JT to eliminate a ton of infeasible edges when
handling code like the templates in PatternMatch.h
llvm-svn: 88869
|
| |
|
|
|
|
| |
some conditionals
llvm-svn: 88868
|
| |
|
|
|
|
|
| |
(because the invalidation logic is missing) but LVI isn't enabled
by default anyway.
llvm-svn: 88867
|
| |
|
|
|
|
| |
and LVIQuery classes, no functionality change.
llvm-svn: 88866
|
| |
|
|
|
|
| |
allocated until runtime (such as an alloca). Patch by Hans Wennborg!
llvm-svn: 88760
|
| |
|
|
| |
llvm-svn: 87070
|
| |
|
|
| |
llvm-svn: 87059
|
| |
|
|
|
|
| |
make it permanent and remove old way of inserting intrinsics to encode debug info for line number and scopes.
llvm-svn: 87014
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
cannot be folded into target cmp instruction.
- Avoid a phase ordering issue where early cmp optimization would prevent the
later count-to-zero optimization.
- Add missing checks which could cause LSR to reuse stride that does not have
users.
- Fix a bug in count-to-zero optimization code which failed to find the pre-inc
iv's phi node.
- Remove, tighten, loosen some incorrect checks disable valid transformations.
- Quite a bit of code clean up.
llvm-svn: 86969
|
| |
|
|
| |
llvm-svn: 86952
|
| |
|
|
|
|
|
| |
constant constraints. Improve the LVI lattice to include inequality
constraints.
llvm-svn: 86950
|
| |
|
|
| |
llvm-svn: 86920
|
| |
|
|
|
|
| |
the basic.ll testcase.
llvm-svn: 86918
|
| |
|
|
|
|
|
| |
This allows StringRef to skip controversial if(str) check in constructor.
Buildbots, wait for corresponding clang and llvm-gcc FE check-ins!
llvm-svn: 86914
|
| |
|
|
|
|
| |
strswitch.
llvm-svn: 86889
|
| |
|
|
|
|
|
|
| |
start using them in a trivial way when -enable-jump-threading-lvi
is passed. enable-jump-threading-lvi will be my playground for
awhile.
llvm-svn: 86789
|