| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
| |
block. Other blocks may have pointer cycles that will crash
basicaa and other alias analyses. In any case, there is no
point wasting cycles optimizing dead blocks. This fixes
rdar://7635088
llvm-svn: 95852
|
| |
|
|
|
|
| |
non-zero trip count. Use SmallVector's pop_back_val().
llvm-svn: 92734
|
| |
|
|
|
|
| |
functionality change.
llvm-svn: 92445
|
| |
|
|
| |
llvm-svn: 90298
|
| |
|
|
| |
llvm-svn: 86705
|
| |
|
|
| |
llvm-svn: 86694
|
| |
|
|
| |
llvm-svn: 86683
|
| |
|
|
| |
llvm-svn: 86668
|
| |
|
|
|
|
|
| |
memory just like a store" with bug fixed (partial-overwrite.ll is the
regression test).
llvm-svn: 86667
|
| |
|
|
|
|
| |
llvm-gcc-i386-darwin9 build bot.
llvm-svn: 86391
|
| |
|
|
|
|
| |
a store.
llvm-svn: 86359
|
| |
|
|
|
|
| |
Hans Wennborg!
llvm-svn: 86067
|
| |
|
|
|
|
| |
purposes for GVN/DSE.
llvm-svn: 85383
|
| |
|
|
| |
llvm-svn: 85286
|
| |
|
|
|
|
| |
to free()
llvm-svn: 85181
|
| |
|
|
|
|
|
| |
Remove LowerAllocations pass.
Update some more passes to treate free calls just like they were treating FreeInst.
llvm-svn: 85176
|
| |
|
|
|
|
|
| |
Update all analysis passes and transforms to treat free calls just like FreeInst.
Remove RaiseAllocations and all its tests since FreeInst no longer needs to be raised.
llvm-svn: 84987
|
| |
|
|
|
|
| |
the instruction BBI points to.
llvm-svn: 80768
|
| |
|
|
| |
llvm-svn: 80766
|
| |
|
|
| |
llvm-svn: 76988
|
| |
|
|
|
|
| |
instead of getAnalysis<TargetData>().
llvm-svn: 76982
|
| |
|
|
|
|
|
| |
will make it more obvious what it represents, and stop
it being confused with the StoreSize.
llvm-svn: 71349
|
| |
|
|
|
|
| |
suggested by Chris.
llvm-svn: 62099
|
| |
|
|
|
|
| |
everything interesting anyway.
llvm-svn: 60640
|
| |
|
|
|
|
|
|
| |
doesn't do its own local caching, and is slightly more aggressive about
free/store dse (see testcase). This eliminates the last external client
of MemDep::getDependenceFrom().
llvm-svn: 60619
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. Merge the 'None' result into 'Normal', making loads
and stores return their dependencies on allocations as Normal.
2. Split the 'Normal' result into 'Clobber' and 'Def' to
distinguish between the cases when memdep knows the value is
produced from when we just know if may be changed.
3. Move some of the logic for determining whether readonly calls
are CSEs into memdep instead of it being in GVN. This still
leaves verification that the arguments are hte same to GVN to
let it know about value equivalences in different contexts.
4. Change memdep's call/call dependency analysis to use
getModRefInfo(CallSite,CallSite) instead of doing something
very weak. This only really matters for things like DSA, but
someday maybe we'll have some other decent context sensitive
analyses :)
5. This reimplements the guts of memdep to handle the new results.
6. This simplifies GVN significantly:
a) readonly call CSE is slightly simpler
b) I eliminated the "getDependencyFrom" chaining for load
elimination and load CSE doesn't have to worry about
volatile (they are always clobbers) anymore.
c) GVN no longer does any 'lastLoad' caching, leaving it to
memdep.
7. The logic in DSE is simplified a bit and sped up. A potentially
unsafe case was eliminated.
llvm-svn: 60607
|
| |
|
|
| |
llvm-svn: 60251
|
| |
|
|
|
|
|
| |
former does caching, the later doesn't. This dramatically simplifies
the logic in getDependency and getDependencyFrom.
llvm-svn: 60234
|
| |
|
|
|
|
|
|
|
|
|
| |
query. This makes it crystal clear what cases can escape from MemDep that
the clients have to handle. This also gives the clients a nice simplified
interface to it that is easy to poke at.
This patch also makes DepResultTy and MemoryDependenceAnalysis::DepType
private, yay.
llvm-svn: 60231
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
of a pointer/int pair instead of a manually bitmangled pointer.
This forces clients to think a little more about checking the
appropriate pieces and will be useful for internal
implementation improvements later.
I'm not particularly happy with this. After going through this
I don't think that the clients of memdep should be exposed to
the internal type at all. I'll fix this in a subsequent commit.
This has no functionality change.
llvm-svn: 60230
|
| |
|
|
| |
llvm-svn: 60221
|
| |
|
|
| |
llvm-svn: 60213
|
| |
|
|
|
|
|
| |
elimination to use more modern infrastructure. Also do a bunch
of small cleanups.
llvm-svn: 60201
|
| |
|
|
|
|
|
|
|
|
|
| |
pointer bitcasts and GEP's", and centralize the
logic in Value::getUnderlyingObject. The
difference with stripPointerCasts is that
stripPointerCasts only strips GEPs if all
indices are zero, while getUnderlyingObject
strips GEPs no matter what the indices are.
llvm-svn: 56922
|
| |
|
|
| |
llvm-svn: 55779
|
| |
|
|
| |
llvm-svn: 54144
|
| |
|
|
|
|
|
|
| |
loaded.
This fixes PR2599.
llvm-svn: 54133
|
| |
|
|
| |
llvm-svn: 51021
|
| |
|
|
|
|
|
| |
several things that were neither in an anonymous namespace nor static
but not intended to be global.
llvm-svn: 51017
|
| |
|
|
| |
llvm-svn: 50370
|
| |
|
|
|
|
| |
stores to be deleted in some cases.
llvm-svn: 46694
|
| |
|
|
|
|
| |
list just to see if whether the list is empty.
llvm-svn: 46555
|
| |
|
|
| |
llvm-svn: 46554
|
| |
|
|
| |
llvm-svn: 46553
|
| |
|
|
|
|
| |
to reflect this increased aggressiveness.
llvm-svn: 46542
|
| |
|
|
|
|
|
|
| |
errors I noticed in
the handling of eliminating stores to byval arguments.
llvm-svn: 46494
|
| |
|
|
|
|
| |
for the purpose of removing end-of-function stores.
llvm-svn: 46351
|
| |
|
|
|
|
| |
to complain on x86-64 (gcc 4.1). Use ~0U instead.
llvm-svn: 46197
|
| |
|
|
| |
llvm-svn: 45418
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
into alias analysis. This meant updating the API
which now has versions of the getModRefBehavior,
doesNotAccessMemory and onlyReadsMemory methods
which take a callsite parameter. These should be
used unless the callsite is not known, since in
general they can do a better job than the versions
that take a function. Also, users should no longer
call the version of getModRefBehavior that takes
both a function and a callsite. To reduce the
chance of misuse it is now protected.
llvm-svn: 44487
|