| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
|
| |
{ short, short }
to
short
where the second short maps onto the second field of the first struct. In
this case, the struct index is not aligned, so we should avoid calling
getLink(2), which asserts out.
llvm-svn: 20626
|
|
|
|
| |
llvm-svn: 20622
|
|
|
|
| |
llvm-svn: 20618
|
|
|
|
|
|
|
|
| |
using Function::arg_{iterator|begin|end}. Likewise Module::g* -> Module::global_*.
This patch is contributed by Gabor Greif, thanks!
llvm-svn: 20597
|
|
|
|
| |
llvm-svn: 20595
|
|
|
|
| |
llvm-svn: 20593
|
|
|
|
| |
llvm-svn: 20588
|
|
|
|
|
|
|
|
| |
incomplete,
ALWAYS mark them incomplete if they are external!
llvm-svn: 20586
|
|
|
|
| |
llvm-svn: 20584
|
|
|
|
| |
llvm-svn: 20580
|
|
|
|
| |
llvm-svn: 20576
|
|
|
|
| |
llvm-svn: 20342
|
|
|
|
| |
llvm-svn: 20308
|
|
|
|
| |
llvm-svn: 20195
|
|
|
|
| |
llvm-svn: 20194
|
|
|
|
| |
llvm-svn: 20086
|
|
|
|
| |
llvm-svn: 20035
|
|
|
|
| |
llvm-svn: 20018
|
|
|
|
| |
llvm-svn: 19942
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Change the FunctionCalls and AuxFunctionCalls vectors into std::lists.
This makes many operations on these lists much more natural, and avoids
*exteremely* expensive copying of DSCallSites (e.g. moving nodes around
between lists, erasing a node from not the end of the vector, etc).
With a profile build of analyze, this speeds up BU DS from 25.14s to
12.59s on 176.gcc. I expect that it would help TD even more, but I don't
have data for it.
This effectively eliminates removeIdenticalCalls and children from the
profile, going from 6.53 to 0.27s.
llvm-svn: 19939
|
|
|
|
| |
llvm-svn: 19506
|
|
|
|
|
|
| |
Add some ifdefs for some stuff I like to be able to toggle easily
llvm-svn: 18665
|
|
|
|
| |
llvm-svn: 17375
|
|
|
|
| |
llvm-svn: 17367
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. Calls to external global VARIABLES should not be treated as a call to an
external function
2. Efficiently deleting an element from a vector by using std::swap with
the back, then pop_back is NOT a good way to keep the vector sorted.
3. Our hope of having stuff get deleted by making them redundant just won't
work. In particular, if we have three calls in sequence that should be
merged: A, B, C first we unify B into A. To be sure that they appeared
identical (so B would be erased) we set B = A. On the next step, we
unified C into A and set C = A. Unfortunately, this is no guarantee that
C = B, so we would fail to delete the dead call. Switch to a more
explicit scheme.
llvm-svn: 17357
|
|
|
|
|
|
|
|
|
| |
* change some uses of NH.getNode() in a bool context to use !NH.isNull()
* Fix a bunch of places where we depended on the (undefined) order of
evaluation of arguments to function calls to ensure that getNode() was
called before getOffset(). In practice, this was NOT happening.
llvm-svn: 17354
|
|
|
|
|
|
|
|
| |
Move include/Config and include/Support into include/llvm/Config,
include/llvm/ADT and include/llvm/Support. From here on out, all LLVM
public header files must be under include/llvm/.
llvm-svn: 16137
|
|
|
|
| |
llvm-svn: 15334
|
|
|
|
| |
llvm-svn: 14682
|
|
|
|
| |
llvm-svn: 14663
|
|
|
|
|
|
|
|
|
|
|
|
| |
is HOPELESSLY broken. The problem is that the embedded getNode call can
change the offset of the node handle in unpredictable ways.
As it turns out, all of the clients of this method really want to set
both the node and the offset, thus it is more efficient (and less buggy)
to just do both of them in one method call. This fixes some obscure bugs
handling non-forwarded node handles.
llvm-svn: 14660
|
|
|
|
|
|
| |
several mallocbench programs, including perl.
llvm-svn: 14342
|
|
|
|
| |
llvm-svn: 14201
|
|
|
|
| |
llvm-svn: 13264
|
|
|
|
|
|
| |
boxed-sim.
llvm-svn: 12358
|
|
|
|
| |
llvm-svn: 12264
|
|
|
|
| |
llvm-svn: 12208
|
|
|
|
|
|
|
| |
This reduces CBU time from 145s -> 122s (debug build), reduces # allocated nodes
from 129420 to 116477.
llvm-svn: 12125
|
|
|
|
|
|
|
|
| |
The problem was that we were merging a field of a node with a value that was
deleted. Thanks to bugpoint for reducing povray to a nice small 3 function
example. :)
llvm-svn: 12116
|
|
|
|
|
|
|
|
| |
This improves
povray from having ~600K nodes and 300K call nodes to 65K nodes and 25K call nodes.
llvm-svn: 12109
|
|
|
|
|
|
|
|
|
|
| |
forever to
do it on povray. The problem is that we were not copying globals from callees to
callers unless the existed in both graphs. We should have copied them in the case
where the global pointed to a node that was copied as well.
llvm-svn: 12104
|
|
|
|
| |
llvm-svn: 12102
|
|
|
|
|
|
|
|
| |
allocate
nodes that were globally live, thus breaking programs.
llvm-svn: 12094
|
|
|
|
| |
llvm-svn: 11928
|
|
|
|
| |
llvm-svn: 11864
|
|
|
|
|
|
| |
not have any globals.
llvm-svn: 11863
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. Functions do not make things incomplete, only variables
2. Constant global variables no longer need to be marked incomplete, because
we are guaranteed that the initializer for the global will be in the
graph we are hacking on now. This makes resolution of indirect calls happen
a lot more in the bu pass, supports things like vtables and the C counterparts
(giant constant arrays of function pointers), etc...
Testcase here: test/Regression/Analysis/DSGraph/constant_globals.ll
llvm-svn: 11852
|
|
|
|
|
|
|
|
|
|
| |
Make the incompleteness marker faster by looping directly over the globals
instead of over the scalars to find the globals
Fix a bug where we didn't mark a global incomplete if it didn't have any
outgoing edges. This wouldn't break any current clients but is still wrong.
llvm-svn: 11848
|
|
|
|
|
|
|
|
|
| |
cheaper.
FIX MAJOR BUG, whereby we didn't merge null edges correctly. Correcting this
fixes poolallocation on 175.vpr, and possibly others.
llvm-svn: 11695
|
|
|
|
|
|
| |
correctly merged over!
llvm-svn: 11693
|