| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 110460
|
|
|
|
| |
llvm-svn: 110410
|
|
|
|
|
|
|
|
| |
address of the static
ID member as the sole unique type identifier. Clean up APIs related to this change.
llvm-svn: 110396
|
|
|
|
|
|
| |
test that
llvm-svn: 109581
|
|
|
|
| |
llvm-svn: 109045
|
|
|
|
|
|
|
| |
have any effect, and second, deleting stores can potentially invalidate
an AliasAnalysis, and there's currently no notification for this.
llvm-svn: 107496
|
|
|
|
|
|
| |
able to use isFreeCall whithout a cast or new overload
llvm-svn: 106823
|
|
|
|
| |
llvm-svn: 106734
|
|
|
|
| |
llvm-svn: 106542
|
|
|
|
|
|
|
| |
Probably the best way to know that all getOperand() calls have been handled
is to replace that API instead of updating.
llvm-svn: 101579
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
with a fix for self-hosting
rotate CallInst operands, i.e. move callee to the back
of the operand array
the motivation for this patch are laid out in my mail to llvm-commits:
more efficient access to operands and callee, faster callgraph-construction,
smaller compiler binary
llvm-svn: 101465
|
|
|
|
| |
llvm-svn: 101434
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
with a fix
rotate CallInst operands, i.e. move callee to the back
of the operand array
the motivation for this patch are laid out in my mail to llvm-commits:
more efficient access to operands and callee, faster callgraph-construction,
smaller compiler binary
llvm-svn: 101397
|
|
|
|
| |
llvm-svn: 101368
|
|
|
|
|
|
|
|
|
|
| |
of the operand array
the motivation for this patch are laid out in my mail to llvm-commits:
more efficient access to operands and callee, faster callgraph-construction,
smaller compiler binary
llvm-svn: 101364
|
|
|
|
|
|
|
|
|
| |
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
|