summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis/DataStructure/TopDownClosure.cpp
Commit message (Collapse)AuthorAgeFilesLines
* 'Pass' should now not be derived from by clients. Instead, they should deriveChris Lattner2004-09-201-1/+1
| | | | | | | from ModulePass. Instead of implementing Pass::run, then should implement ModulePass::runOnModule. llvm-svn: 16436
* Changes For Bug 352Reid Spencer2004-09-011-2/+2
| | | | | | | | 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
* Move all of the DSA headers into the Analysis/DataStructure subdir.Chris Lattner2004-07-071-2/+2
| | | | llvm-svn: 14663
* Wrapped code and comments at 80 cols; doxygenified some comments.Misha Brukman2004-04-291-2/+3
| | | | llvm-svn: 13264
* Instead of callign removeTriviallyDeadNodes on the global graph every timeChris Lattner2004-02-081-0/+2
| | | | | | | | | 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
* Remove another unneeded call.Chris Lattner2004-02-081-1/+0
| | | | llvm-svn: 11177
* In the TD pass, iterate over globals directly instead of through the whole ↵Chris Lattner2004-01-281-9/+8
| | | | | | | | scalar map. This saves 5s in the TD pass, from 22->17s on perlbmk llvm-svn: 10998
* In the TD pass, don't iterate over the scalar map to find the globals, ↵Chris Lattner2004-01-281-3/+2
| | | | | | | | | iterate over the globals directly. This doesn't save any substantial time, however, because the globals graph only contains globals! llvm-svn: 10997
* Rewrite to use the reachability cloner interface. Also, make this much moreChris Lattner2004-01-271-58/+39
| | | | | | | | efficient in the case where a function calls into the same graph multiple times (ie, it either contains multiple calls to the same function, or multiple calls to functions in the same SCC graph) llvm-svn: 10986
* Eliminated the CompletedNodes argument to the cloneReachable* methods. ThisChris Lattner2004-01-221-2/+1
| | | | | | | | map was only used to implement a marginal GlobalsGraph optimization, and it actually slows the analysis down (due to the overhead of keeping it), so just eliminate it entirely. llvm-svn: 10955
* Fine-grainify namespaces for this libraryChris Lattner2003-11-121-4/+1
| | | | llvm-svn: 9948
* Put all LLVM code into the llvm namespace, as per bug 109.Brian Gaeke2003-11-111-0/+3
| | | | llvm-svn: 9903
* This doesn't use DSCallSiteIteratorChris Lattner2003-11-081-1/+1
| | | | llvm-svn: 9809
* Added LLVM project notice to the top of every C++ source file.John Criswell2003-10-201-0/+7
| | | | | | Header files will be on the way. llvm-svn: 9298
* Functions reachable from the arguments of unresolvable call nodes shouldChris Lattner2003-09-201-1/+13
| | | | | | not have their arguments marked complete llvm-svn: 8639
* Do not mark incoming arguments to functions complete if the function is ↵Chris Lattner2003-09-201-10/+30
| | | | | | pointed to by a global in the globals graph llvm-svn: 8637
* Switch from using CallInst's to represent call sites to using the LLVMChris Lattner2003-09-201-2/+4
| | | | | | | CallSite class. Now we can represent function calls by invoke instructions too! llvm-svn: 8629
* DEBUG got moved to Support/Debug.hChris Lattner2003-08-011-0/+1
| | | | llvm-svn: 7492
* (1) Rematerialize nodes from the globals graph into the current graphVikram S. Adve2003-07-161-57/+84
| | | | | | | | | | | | after all callers are inlined into the current graph. (2) Optimize the way a graph is inlined into its callees in the TD phase: (a) Use DSGraph::cloneReachableSubgraph to clone only a subgraph at each call site, for faster inlining. (b) Clone separately for the same callee at different call sites, since only the reachable subgraph is being cloned, not the entire caller graph. llvm-svn: 7188
* Remove space at end of lineChris Lattner2003-07-021-1/+1
| | | | llvm-svn: 7084
* Fix how we are handling unreachable functions. This DRAMATICALLY improves ↵Chris Lattner2003-07-021-36/+35
| | | | | | efficiency llvm-svn: 7082
* Try using trivially dead deletionChris Lattner2003-07-021-0/+1
| | | | llvm-svn: 7075
* Complete rewrite of td passChris Lattner2003-07-021-103/+101
| | | | llvm-svn: 7064
* Rework TD pass to work with the precise call graph constructed by the BU phaseChris Lattner2003-07-011-113/+147
| | | | llvm-svn: 7031
* Remove dead methodChris Lattner2003-06-301-27/+0
| | | | llvm-svn: 6999
* Do not multiply delete graphs if functions are sharing graphsChris Lattner2003-06-301-4/+6
| | | | llvm-svn: 6997
* Revamp DSGraphs so that they can support multiple functions in the sameChris Lattner2003-06-301-4/+8
| | | | | | DSGraph at one time llvm-svn: 6994
* Abstract out the predicate which decides whether a function gets completeChris Lattner2003-06-291-13/+23
| | | | | | arguments or not... llvm-svn: 6987
* Propagate globals graph from the local to bu to td globals graphs. ThisChris Lattner2003-06-281-2/+2
| | | | | | fixes bug: DSGraph/buglobals.ll llvm-svn: 6947
* Remove support for the MultiObject flag, which was fundamentally brokenChris Lattner2003-06-221-0/+1
| | | | llvm-svn: 6840
* Implement a "union-findy" version of DS-Analysis, which eliminates theChris Lattner2003-02-111-9/+3
| | | | | | Referrers list on DSNodes. llvm-svn: 5536
* Rearrange codeChris Lattner2003-02-101-11/+13
| | | | llvm-svn: 5527
* Fix major bugs in incompleteness marking that were pessimizing resultsChris Lattner2003-02-091-96/+101
| | | | llvm-svn: 5515
* Fix a bug where we would mark the callees arguments incomplete if the caller ↵Chris Lattner2003-02-081-2/+2
| | | | | | was external. llvm-svn: 5510
* Implement optimization for direct function call case. This dramaticallyChris Lattner2003-02-051-9/+14
| | | | | | | reduces the number of function nodes created and speeds up analysis by about 10% overall. llvm-svn: 5495
* Make the TD pass not include all of the call nodes from the local pass,Chris Lattner2003-02-041-0/+1
| | | | | | eliminating incomplete markers from them llvm-svn: 5490
* Hack to work around deficiency in pass infrastructureChris Lattner2003-02-031-3/+9
| | | | llvm-svn: 5485
* Change DSGraph stuff to use hash_(set|map) instead of std::(set|map)Chris Lattner2003-02-011-3/+3
| | | | | | This change provides a small (3%) but consistent speedup llvm-svn: 5460
* * Eliminate boolean arguments in favor of using enumsChris Lattner2003-01-231-2/+3
| | | | | | * T-D pass now eliminates unreachable globals llvm-svn: 5419
* Fix logical error in TD pass: we should clear Mod/Ref bits of each callerVikram S. Adve2002-11-271-2/+3
| | | | | | | before inlining their graphs into a function. To support this, added flags to CloneFlags to strip/keep Mod/Ref bits. llvm-svn: 4836
* Handle a mismatch between # function args and call site argsChris Lattner2002-11-111-1/+2
| | | | llvm-svn: 4696
* eliminate the ability to remove global nodes from deadNodeElminate... for now.Chris Lattner2002-11-091-1/+1
| | | | | | | This slows stuff down a bit, but it should get much better before it gets any worse. llvm-svn: 4666
* Add globals graphs to all three passesChris Lattner2002-11-091-13/+19
| | | | llvm-svn: 4663
* Clean up DSGraph::removeDeadNodes interfaceChris Lattner2002-11-091-2/+1
| | | | llvm-svn: 4660
* Make removeTriviallyDeadNodes a private interface of DSGraphChris Lattner2002-11-091-1/+0
| | | | llvm-svn: 4659
* Reenable 'quick exit' caseChris Lattner2002-11-081-2/+1
| | | | llvm-svn: 4638
* Reimplement TD pass completely it now worksChris Lattner2002-11-081-113/+119
| | | | llvm-svn: 4635
* Use DSNodeHandleMap instead to be safeChris Lattner2002-11-081-4/+4
| | | | llvm-svn: 4622
* Add flushChris Lattner2002-11-081-1/+2
| | | | llvm-svn: 4619
* Instead of using a bool that constant has to be explained, use a selfChris Lattner2002-11-071-1/+1
| | | | | | explanitory enum instead. llvm-svn: 4600
OpenPOWER on IntegriCloud