summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis/DataStructure
Commit message (Collapse)AuthorAgeFilesLines
...
* Totally gut mergeInGraph. There is absolutely no reason to be mergingChris Lattner2005-03-231-73/+47
| | | | | | | | | | | global roots in from callees to callers. The BU graphs do not have accurate globals information and all of the clients know it. Instead, just make sure the GG is up-to-date, and they will be perfectly satiated. This speeds up the BU pass on 176.gcc from 5.5s to 1.5s, and Loc+BU+TD from 7s to 2.7s. llvm-svn: 20786
* wrap a long lineChris Lattner2005-03-231-1/+2
| | | | llvm-svn: 20785
* Make -steens-aa more conservative (aka correct) by making sure to obeyChris Lattner2005-03-231-8/+18
| | | | | | | | | incompleteness flags. Make it more aggressive by taking field sensitive information into account. llvm-svn: 20781
* implement Analysis/DSGraph/field-sensitive.llChris Lattner2005-03-231-3/+2
| | | | llvm-svn: 20779
* Several changes here:Chris Lattner2005-03-221-19/+42
| | | | | | | | | | | | 1. Increase max node size from 64->256 to avoid collapsing an important structure in 181.mcf 2. If we have multiple calls to an indirect call node with an indirect callee, fold these call nodes together, to avoid DSA turning apoc into a flaming fireball of death when analyzing 176.gcc. With this change, 176.gcc now takes ~7s to analyze for loc+bu+td, with 5.7s of that in the BU pass. llvm-svn: 20775
* Mark external globals incomplete in the BU Globals graph, fixingChris Lattner2005-03-221-0/+3
| | | | | | Analysis/DSGraph/2005-03-22-IncompleteGlobal.ll llvm-svn: 20773
* Remove an iteration pass over the entire scalarmap for each function createdChris Lattner2005-03-221-15/+8
| | | | | | | by not allowing integer constants to get into the scalar map in the first place. llvm-svn: 20764
* When making a clone of a DSGraph from the BU pass, make sure to remember thatChris Lattner2005-03-221-1/+8
| | | | | | | | | | this clone is supposed to be used for *ALL* of the functions in the SCC. This fixes the memory explosion problem the TD pass was having, reducing the memory growth from 24MB -> 3.5MB on povray and 270MB ->8.3MB on perlbmk! This obviously also speeds up the TD pass *a lot*. llvm-svn: 20763
* Don't use operator[], use the new method instead, which is faster. This speedsChris Lattner2005-03-221-1/+1
| | | | | | | up the TD pass about 30% for povray and perlbmk. It's still not clear why copying a 5MB set of graphs turns into a 25MB set of graphs though :( llvm-svn: 20762
* Now that the dead ctor is gone, nothing uses the old node mapping exported byChris Lattner2005-03-225-25/+12
| | | | | | cloneInto: make it an internally used mapping. llvm-svn: 20760
* remove a dead ctorChris Lattner2005-03-221-7/+0
| | | | llvm-svn: 20759
* now that the second argument is always this->ReturnNodes, don't bother ↵Chris Lattner2005-03-225-16/+18
| | | | | | passing it. llvm-svn: 20758
* instead of using a local RetValMap, just use the graph we are cloning intoChris Lattner2005-03-221-8/+5
| | | | | | for the return node map. llvm-svn: 20757
* now that the valuemapping is always the local scalar map, we can eliminateChris Lattner2005-03-221-4/+0
| | | | | | this identity merge. llvm-svn: 20755
* remove the second argument to cloneIntoChris Lattner2005-03-225-19/+14
| | | | llvm-svn: 20754
* add some timers, don't clone aux nodesChris Lattner2005-03-221-2/+29
| | | | llvm-svn: 20752
* move this out of lineChris Lattner2005-03-221-0/+28
| | | | llvm-svn: 20751
* don't generate temporary scalarmaps.Chris Lattner2005-03-221-17/+5
| | | | llvm-svn: 20749
* allow passing clone flags down to cloneIntoChris Lattner2005-03-211-2/+3
| | | | llvm-svn: 20748
* Enhance the TD pass to build composite graphs when we have indirect callChris Lattner2005-03-211-17/+108
| | | | | | | | | | sites that target multiple callees. If we have a function table, for example, with N callees, and M callers call through it, we used to have to perform O(M*N) graph inlinings. Now we perform O(M+N) inlinings. This speeds up the td pass on perlbmk from 36.26s to 25.75s. llvm-svn: 20743
* make this const correctChris Lattner2005-03-211-2/+2
| | | | llvm-svn: 20741
* Fix a major problem where we didn't add call graph edges for call sites withChris Lattner2005-03-211-6/+10
| | | | | | more than 1 callee. This fixes Analysis/DSGraph/FunctionPointerTable-const.ll llvm-svn: 20740
* Ugh, for some reason, I can't call this unless the reference is const!?!?!?Chris Lattner2005-03-211-2/+2
| | | | llvm-svn: 20732
* The reachability cloner should add arguments to merged calls when the RHS ofChris Lattner2005-03-211-1/+4
| | | | | | the merge has more operands than the LHS. llvm-svn: 20731
* 'note to self'Chris Lattner2005-03-211-2/+5
| | | | llvm-svn: 20727
* Change the way that the TD pass inlines graphs. Instead of inlining eachChris Lattner2005-03-211-72/+87
| | | | | | | | | | | | | | | | | | | | graph into all of the functions it calls when we visit a graph, change it so that the graph visitor inlines all of the callers of a graph into the current graph when it visits it. While we're at it, inline global information from the GG instead of from each of the callers. The GG contains a superset of the info that the callers do anyway, and this way we only need to do it one time (not one for each caller). This speeds up the TD pass substantially on several programs, and there is still room for improvement. For example, the TD pass used to take 147s on perlbmk, it now takes 36s. On povray, we went from about 5s to 1.97s. 134.perl is down from ~1s for Loc+BU+TD to .6s. The TD pass needs a lot of improvement though, which will occur with later patches. llvm-svn: 20723
* Don't strip modref bits when inlining down the call graph. This fixesChris Lattner2005-03-201-1/+1
| | | | | | the DSGraph/2003-06-30-TopDownResolve.ll regression from last night. llvm-svn: 20717
* Remove the ability to keep track of inlined globals, which is always dead.Chris Lattner2005-03-201-36/+1
| | | | llvm-svn: 20716
* This call is always a noop, remove it.Chris Lattner2005-03-201-9/+0
| | | | llvm-svn: 20714
* remove some pointless assertsChris Lattner2005-03-203-3/+0
| | | | llvm-svn: 20713
* -steens doesn't use the inlined globals facility.Chris Lattner2005-03-201-2/+1
| | | | llvm-svn: 20712
* Build EC's for globals twice. The first is after constructing the initialChris Lattner2005-03-201-23/+99
| | | | | | | | | Globals Graph for the local pass, the second is after all of the locals graphs have been constructed. This allows for many additional global EC's to be recognized that weren't before. This speeds up analysis of programs like 177.mesa, where it changes DSA from taking 0.712s to 0.4018s. llvm-svn: 20711
* Add a new DSNode::removeGlobal method.Chris Lattner2005-03-201-0/+9
| | | | llvm-svn: 20710
* Transform BU pass to not use the horrible DSCallSiteIterator class.Chris Lattner2005-03-202-176/+54
| | | | llvm-svn: 20708
* Implement new methods for dealing with DSNode global lists, rename uses ofChris Lattner2005-03-201-16/+56
| | | | | | old methods. llvm-svn: 20707
* use simpler methods.Chris Lattner2005-03-201-4/+3
| | | | llvm-svn: 20706
* method was renamed.Chris Lattner2005-03-201-2/+3
| | | | llvm-svn: 20705
* print out equiv class info.Chris Lattner2005-03-201-2/+16
| | | | llvm-svn: 20704
* some methods got renamedChris Lattner2005-03-201-2/+2
| | | | llvm-svn: 20703
* Make use of simpler DSNode methods.Chris Lattner2005-03-202-14/+8
| | | | llvm-svn: 20702
* #ifdef out a function only used by #ifdef'd code.Chris Lattner2005-03-201-0/+2
| | | | llvm-svn: 20700
* comment cleanupChris Lattner2005-03-201-1/+1
| | | | llvm-svn: 20699
* Create an equivalence class of global variables that DSA will never be ableChris Lattner2005-03-197-48/+72
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Switch to use the new interface for the EquivalenceClasses class, and fixChris Lattner2005-03-191-59/+63
| | | | | | a bug involving SCC's who have multiple members that are part of an EC. llvm-svn: 20678
* do not bother inlining nullary functions without return values. The onlyChris Lattner2005-03-183-1/+15
| | | | | | | | | 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
* fix a bogus assertionChris Lattner2005-03-181-1/+1
| | | | llvm-svn: 20675
* another fastpathChris Lattner2005-03-181-1/+2
| | | | llvm-svn: 20674
* remove a bogus optimization. This only works if there are no globals in theChris Lattner2005-03-181-4/+0
| | | | | | | graph, and the combination of a function that does not reference globals, takes not arguments and returns no value is pretty rare. llvm-svn: 20670
* Rewrite DSAA::getModRefInfo to compute the mapping between caller and calleeChris Lattner2005-03-181-24/+47
| | | | | | | | | | to determine mod/ref behavior, instead of creating a *copy* of the caller graph and inlining the callee graph into the copy. This speeds up aa-eval on Ptrdist/yacr2 from 109.13s to 3.98s, and gives identical results. The speedup is similar on other programs. llvm-svn: 20669
* implement a new method.Chris Lattner2005-03-171-0/+36
| | | | llvm-svn: 20668
OpenPOWER on IntegriCloud