summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis/DataStructure
Commit message (Collapse)AuthorAgeFilesLines
...
* 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
* add some possibly bogus assertions.Chris Lattner2005-03-171-0/+10
| | | | llvm-svn: 20665
* simplify this function a bit, allow DS-AA to build on/improve the mod/refChris Lattner2005-03-171-8/+11
| | | | | | results returned by AA, not just use one or the other. llvm-svn: 20662
* Clean up some code, handle null pointer specially to avoid an assertionChris Lattner2005-03-171-6/+10
| | | | llvm-svn: 20660
* Two changes:Chris Lattner2005-03-171-3/+3
| | | | | | | | | 1. Chain to the parent implementation of M/R analysis if we can't find any information. It has some heuristics that often do well. 2. Do not clear all flags, this can make invalid nodes by turning nodes that used to be collapsed into non-collapsed nodes (fixing crashes) llvm-svn: 20659
* Fix the missing symbols problem Bill was hitting. Patch contributed byChris Lattner2005-03-171-0/+1
| | | | | | Bill Wendling!! llvm-svn: 20649
* Do not create ridiculously huge DSNodes, as described in the comments.Chris Lattner2005-03-171-1/+21
| | | | | | This speeds up the BU pass on 172.mgrid from 62.3 -> 0.1242s. llvm-svn: 20648
* remove use of compat_iterator.Chris Lattner2005-03-163-14/+15
| | | | llvm-svn: 20643
* make sure to mark nodes in the globals graph incomplete after computing itChris Lattner2005-03-151-0/+1
| | | | | | so that external globals (and whatever they point to) are marked incomplete. llvm-svn: 20628
* fix crashes when we only have a prototype for main.Chris Lattner2005-03-153-3/+3
| | | | llvm-svn: 20627
* Fix a crash that happens when mapping something like this:Chris Lattner2005-03-151-6/+12
| | | | | | | | | | | | | { 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
* Make computeGGToGMapping compute an invnodemapChris Lattner2005-03-151-9/+11
| | | | llvm-svn: 20622
* Finally fix (the right way) the problem where functions like this:Chris Lattner2005-03-151-0/+24
| | | | | | | | | | | void foo() { G = 1; } would have an empty DSGraph even though G (a global) is directly used in the function. llvm-svn: 20619
OpenPOWER on IntegriCloud