summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis/DataStructure
Commit message (Collapse)AuthorAgeFilesLines
...
* 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
* In updateFromGlobalsGraph, instead of iterating over all of the scalars in theChris Lattner2004-01-281-8/+7
| | | | | | | | function to find the globals, iterate over all of the globals directly. This speeds the function up from 14s to 6.3s on perlbmk, reducing DSA time from 53->46s. llvm-svn: 10996
* Minor tweaks, eliminate useless integer pruning optimziation, turn onChris Lattner2004-01-281-4/+6
| | | | | | timers by default llvm-svn: 10993
* Further reduce the number of nodes cloned with getClonedNH, using merge instead.Chris Lattner2004-01-281-1/+1
| | | | | | | | This reduces the number of nodes allocated, then immediately merged and DNE'd from 2193852 to 1298049. unfortunately this only speeds DSA up by ~1.5s (of 53s), because it's spending most of its time waddling through the scalar map :( llvm-svn: 10992
* Add a timer, fix a minor bug.Chris Lattner2004-01-281-4/+12
| | | | | | Also, use RC::merge when possible, reducing the number of nodes allocated, then immediately merged away from 2985444 to 2193852 on perlbmk. llvm-svn: 10991
* Another bugfix, disable "spurious" output.Chris Lattner2004-01-281-1/+4
| | | | | | You gotta love spurious llvm-svn: 10990
* fix bug in previous checkinChris Lattner2004-01-271-1/+0
| | | | llvm-svn: 10989
* * Add a new commandline argument to control the "global roots hack". DefaultChris Lattner2004-01-271-454/+407
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | it to be off. If it looks like it's completely unnecessary after testing, I will remove it completely (which is the hope). * Callers of the DSNode "copy ctor" can not choose to not copy links. * Make node collapsing not create a garbage node in some cases, avoiding a memory allocation, and a subsequent DNE. * When merging types, allow two functions of different types to be merged without collapsing. * Use DSNodeHandle::isNull more often instead of DSNodeHandle::getNode() == 0, as it is much more efficient. *** Implement the new, more efficient reachability cloner class In addition to only cloning nodes that are reachable from interesting roots, this also fixes the huge inefficiency we had where we cloned lots of nodes, only to merge them away immediately after they were cloned. Now we only actually allocate a node if there isn't one to merge it into. * Eliminate the now-obsolete cloneReachable* and clonePartiallyInto methods * Rewrite updateFromGlobalsGraph to use the reachability cloner * Rewrite mergeInGraph to use the reachability cloner * Disable the scalar map scanning code in removeTriviallyDeadNodes. In large SCC's, this is extremely expensive. We need a better data structure for the scalar map, because we really want to scan the unique node handles, not ALL of the scalars. * Remove the incorrect SANER_CODE_FOR_CHECKING_IF_ALL_REFERRERS_ARE_FROM_SCALARMAP code. * Move the code for eliminating integer nodes from the trivially dead eliminator to the dead node eliminator. * removeDeadNodes no longer uses removeTriviallyDeadNodes, as it contains a superset of the node removal power. * Only futz around with the globals graph in removeDeadNodes if it is modified llvm-svn: 10987
* 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
* minor cleanupsChris Lattner2004-01-272-7/+5
| | | | llvm-svn: 10985
* Get clone flags right, so we don't build InlinedGlobals only to clear themChris Lattner2004-01-272-8/+5
| | | | llvm-svn: 10984
* Initial support for implementing clonePartiallyInto in terms of ↵Chris Lattner2004-01-234-60/+128
| | | | | | cloneReachableSubgraph, though this support is currently disabled. llvm-svn: 10970
* Eliminated the CompletedNodes argument to the cloneReachable* methods. ThisChris Lattner2004-01-222-43/+21
| | | | | | | | 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
* Ok, I'm tired of pulling out all my timers to check stuff in, just do it.Chris Lattner2004-01-221-0/+18
| | | | llvm-svn: 10954
* Bug fix: X.mergeWith(Y) was not updating Y if Y was a null node handle!Chris Lattner2004-01-221-2/+9
| | | | llvm-svn: 10953
* Start implementing DSGraph::clonePartiallyInto and implement mergeInGraphChris Lattner2004-01-221-66/+176
| | | | | | | | | | | in terms of it. Though clonePartiallyInto is not cloning partial graphs yet, this change dramatically speeds up inlining of graphs with many scalars. For example, this change speeds up the BU pass on 253.perlbmk from 69s to 36s, because it avoids iteration over the scalar map, which can get pretty large. llvm-svn: 10951
* Allow disabling of ALL printing overhead when performing timingsChris Lattner2004-01-221-0/+5
| | | | llvm-svn: 10948
* Do not depend on index type to determine whether it is a structure or ↵Chris Lattner2003-11-251-11/+12
| | | | | | sequential index llvm-svn: 10221
* Implement a small optimization to handling of GEP's that are equivalent to ↵Chris Lattner2003-11-141-0/+18
| | | | | | | | casts. This results in substantially reduced collapsing for some testcases llvm-svn: 10002
* Trying to get the dsgraph for an external function is bad for DSA's healthChris Lattner2003-11-131-11/+12
| | | | llvm-svn: 9979
* Implement the CompleteBU passChris Lattner2003-11-132-7/+142
| | | | llvm-svn: 9964
* Minor code cleanupChris Lattner2003-11-131-2/+2
| | | | llvm-svn: 9962
* Disable integer tracking by defaultChris Lattner2003-11-131-1/+6
| | | | llvm-svn: 9960
* Add an initial version of the CompleteBUDataStructures class, which is currentlyChris Lattner2003-11-131-0/+75
| | | | | | identical to the BU pass, but has an accurate call graph llvm-svn: 9956
* Fine-grainify namespaces for this libraryChris Lattner2003-11-1210-36/+14
| | | | llvm-svn: 9948
* Add new argument to disable checkingChris Lattner2003-11-121-3/+5
| | | | llvm-svn: 9922
* Print return nodes for graphs with multiple functions in them correctlyChris Lattner2003-11-121-2/+2
| | | | llvm-svn: 9914
* Don't crash if no ggChris Lattner2003-11-121-1/+1
| | | | llvm-svn: 9913
* Put all LLVM code into the llvm namespace, as per bug 109.Brian Gaeke2003-11-1111-6/+46
| | | | llvm-svn: 9903
* Compute node offsets correctlyChris Lattner2003-11-111-2/+2
| | | | llvm-svn: 9895
* Add new method for computing node mappings. This is used by the pool allocatorChris Lattner2003-11-111-0/+31
| | | | llvm-svn: 9880
* Add support for memmoveChris Lattner2003-11-091-0/+9
| | | | llvm-svn: 9824
* Handle bzero and memset in the local analysis, because we were missing the factChris Lattner2003-11-082-4/+17
| | | | | | that memset returns its argument!! llvm-svn: 9811
* This doesn't use DSCallSiteIteratorChris Lattner2003-11-081-1/+1
| | | | llvm-svn: 9809
* All DSGraphs keep a reference to the targetdata they are created with. This isChris Lattner2003-11-023-20/+27
| | | | | | | | used to eliminate the hard coded, hacked in, sparc specific, global TargetData. Changing the TargetData used to actually match the code fixes problems, and eliminates a crash. llvm-svn: 9659
* Fix bug: test/Regression/Analysis/DSGraph/2003-11-02-NodeCollapsing.llChris Lattner2003-11-021-6/+8
| | | | llvm-svn: 9658
* Added LLVM copyright header.John Criswell2003-10-211-0/+7
| | | | llvm-svn: 9321
* Added LLVM copyright notice to Makefiles.John Criswell2003-10-201-0/+8
| | | | llvm-svn: 9312
* Added LLVM project notice to the top of every C++ source file.John Criswell2003-10-2010-0/+70
| | | | | | Header files will be on the way. llvm-svn: 9298
* Use std::string::size_type for for ColonPos to stop gcc from giving a warningAlkis Evlogimenos2003-10-011-1/+1
| | | | llvm-svn: 8811
* DOn't crash if program calls the null pointerChris Lattner2003-09-241-1/+7
| | | | llvm-svn: 8708
* Functions reachable from the arguments of unresolvable call nodes shouldChris Lattner2003-09-202-2/+17
| | | | | | not have their arguments marked complete llvm-svn: 8639
* The Globals graph must become complete at the end of the BU phase!Chris Lattner2003-09-201-0/+5
| | | | llvm-svn: 8638
* 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
* Make sure to add global variable initializers to the Globals graph!Chris Lattner2003-09-201-15/+69
| | | | llvm-svn: 8636
* Don't consider incomplete nodes to be typesafe!Chris Lattner2003-09-201-1/+1
| | | | llvm-svn: 8635
* Remove trivially dead nodes was not removing nodes that were dead due to ↵Chris Lattner2003-09-201-0/+14
| | | | | | forwarding! llvm-svn: 8634
* Add special case handling for calloc and reallocChris Lattner2003-09-201-0/+16
| | | | llvm-svn: 8630
* Switch from using CallInst's to represent call sites to using the LLVMChris Lattner2003-09-205-23/+35
| | | | | | | CallSite class. Now we can represent function calls by invoke instructions too! llvm-svn: 8629
* Make this work better for constants that aren't necessarily in ANY graph, ↵Chris Lattner2003-09-201-4/+15
| | | | | | such as null pointers llvm-svn: 8628
OpenPOWER on IntegriCloud