| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 30933
|
|
|
|
| |
llvm-svn: 29921
|
|
|
|
|
|
| |
to merge in globals during recursion and to back annotate DSNodes when function pointers are resolved. This makes PA work for a whole lot more things (unresolved call sites being what has been killing various DSA based passes)
llvm-svn: 28859
|
|
|
|
| |
llvm-svn: 27829
|
|
|
|
| |
llvm-svn: 25513
|
|
|
|
| |
llvm-svn: 22523
|
|
|
|
| |
llvm-svn: 21537
|
|
|
|
| |
llvm-svn: 21416
|
|
|
|
| |
llvm-svn: 21396
|
|
|
|
|
|
| |
memory usage in the TD pass for 254.gap from 31.3MB to 3.9MB.
llvm-svn: 20834
|
|
|
|
| |
llvm-svn: 20827
|
|
|
|
|
|
|
|
|
|
|
| |
1. Instead of copying Local graphs to the BU graphs to start with, use
spliceFrom to do the job (which is constant time in this case). On
176.gcc, this chops off .17s from the bu pass.
2. When building SCC graphs, simplify the logic and use spliceFrom to
do the heavy lifting, instead of cloneInto/delete. This slices
another .14s off 176.gcc.
llvm-svn: 20826
|
|
|
|
| |
llvm-svn: 20815
|
|
|
|
|
|
| |
when using ds-aa
llvm-svn: 20802
|
|
|
|
| |
llvm-svn: 20791
|
|
|
|
|
|
| |
Analysis/DSGraph/2005-03-22-IncompleteGlobal.ll
llvm-svn: 20773
|
|
|
|
|
|
| |
cloneInto: make it an internally used mapping.
llvm-svn: 20760
|
|
|
|
|
|
| |
passing it.
llvm-svn: 20758
|
|
|
|
| |
llvm-svn: 20754
|
|
|
|
|
|
| |
more than 1 callee. This fixes Analysis/DSGraph/FunctionPointerTable-const.ll
llvm-svn: 20740
|
|
|
|
| |
llvm-svn: 20713
|
|
|
|
| |
llvm-svn: 20708
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
to tell apart anyway, and only track the leader for of these equivalence
classes in our graphs.
This dramatically reduces the number of GlobalValue*'s that appear in scalar
maps, which A) reduces memory usage, by eliminating many many scalarmap entries
and B) reduces time for operations that need to execute an operation for each
global in the scalar map.
As an example, this reduces the memory used to analyze 176.gcc from 1GB to
511MB, which (while it's still way too much) is better because it doesn't hit
swap anymore. On eon, this shrinks the local graphs from 14MB to 6.8MB,
shrinks the bu+td graphs of povray from 50M to 40M, shrinks the TD graphs of
130.li from 8.8M to 3.6M, etc.
This change also speeds up DSA on large programs where this makes a big
difference. For example, 130.li goes from 1.17s -> 0.56s, 134.perl goes
from 2.14 -> 0.93s, povray goes from 15.63s->7.99s (!!!).
This also apparently either fixes the problem that caused DSA to crash on
perlbmk and gcc, or it hides it, because DSA now works on these. These
both take entirely too much time in the TD pass (147s for perl, 538s for
gcc, vs 7.67/5.9s in the bu pass for either one), but this is a known
problem that I'll deal with later.
llvm-svn: 20696
|
|
|
|
|
|
|
|
|
| |
effect these calls can have is due to global variables, and these passes
all use the globals graph to capture their effect anyway. This speeds up
the BU pass very slightly on perlbmk, reducing the number of dsnodes
allocated from 98913 to 96423.
llvm-svn: 20676
|
|
|
|
| |
llvm-svn: 20627
|
|
|
|
| |
llvm-svn: 20618
|
|
|
|
| |
llvm-svn: 20585
|
|
|
|
|
|
| |
graph into main and mark them complete.
llvm-svn: 20583
|
|
|
|
| |
llvm-svn: 20065
|
|
|
|
|
|
|
|
|
|
|
|
| |
into a temporary graph, remember it for later, then inline the tmp graph into
the call site.
In the case where there are other call sites to the same set of functions, this
permits us to just inline the temporary graph instead of all of the callees.
This turns N*M inlining situations into an N+M inlining situation.
llvm-svn: 20036
|
|
|
|
| |
llvm-svn: 19980
|
|
|
|
| |
llvm-svn: 19979
|
|
|
|
|
|
| |
a tasty speedup.
llvm-svn: 19978
|
|
|
|
| |
llvm-svn: 19968
|
|
|
|
| |
llvm-svn: 19941
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
|
|
|
|
|
| |
program.
llvm-svn: 19818
|
|
|
|
| |
llvm-svn: 17632
|
|
|
|
| |
llvm-svn: 17377
|
|
|
|
|
|
|
| |
from ModulePass. Instead of implementing Pass::run, then should implement
ModulePass::runOnModule.
llvm-svn: 16436
|
|
|
|
|
|
|
|
| |
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: 14665
|
|
|
|
|
|
|
| |
Make sure to scope the NodeMap passed into cloneInto so that it doesn't point
to nodes that are deleted. Add some FIXME's for future performance enhancements.
llvm-svn: 12115
|
|
|
|
| |
llvm-svn: 11928
|
|
|
|
|
|
|
|
|
| |
BU propagation, clone the globals into the GG of EACH FUNCTION that finishes
processing! The GlobalsGraph *must* include all globals and effects from
all functions in the program. Fixing this makes pool allocation work better
on 175.vpr, but it still ultimately crashes.
llvm-svn: 11686
|
|
|
|
|
|
|
|
| |
end of the BU and CBU passes. The globals will be marked incomplete, so it
doesn't matter if they are missing some info, and merging isn't guaranteed
to bring everything in anyway!
llvm-svn: 11684
|
|
|
|
|
|
|
|
| |
'main' into
the globals graph.
llvm-svn: 11562
|
|
|
|
|
|
|
|
|
| |
removeDeadNodes is called, only call it at the end of the pass being run.
This saves 1.3 seconds running DSA on 177.mesa (5.3->4.0s), which is
pretty big. This is only possible because of the automatic garbage
collection done on forwarding nodes.
llvm-svn: 11178
|
|
|
|
|
|
| |
fixes the crash in 176.gcc.
llvm-svn: 11033
|
|
|
|
| |
llvm-svn: 10984
|