summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis
Commit message (Collapse)AuthorAgeFilesLines
...
* 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
* expose this pass to both opt and analyzeChris Lattner2005-03-181-2/+3
| | | | llvm-svn: 20672
* 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
* Do not include the Function* for direct call/invoke instructions in theChris Lattner2005-03-171-1/+6
| | | | | | alias evaluation. Clients really don't care. llvm-svn: 20664
* 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-173-0/+3
| | | | | | 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
* Start using retnodes_* for iteration.Chris Lattner2005-03-156-39/+34
| | | | llvm-svn: 20618
* avoid varialbe name collisionsChris Lattner2005-03-151-2/+3
| | | | llvm-svn: 20606
* This mega patch converts us from using Function::a{iterator|begin|end} toChris Lattner2005-03-159-20/+20
| | | | | | | | using Function::arg_{iterator|begin|end}. Likewise Module::g* -> Module::global_*. This patch is contributed by Gabor Greif, thanks! llvm-svn: 20597
* Don't crash if computing a mapping to a node with zero sizeChris Lattner2005-03-151-0/+2
| | | | llvm-svn: 20595
* rename method, add counterpartChris Lattner2005-03-152-4/+16
| | | | llvm-svn: 20593
* add a method to compute a commonly used mapping.Chris Lattner2005-03-142-5/+16
| | | | llvm-svn: 20588
* regardless of whether or not the client things we should mark globals ↵Chris Lattner2005-03-131-7/+7
| | | | | | | | incomplete, ALWAYS mark them incomplete if they are external! llvm-svn: 20586
* Make sure to remove incomplete markers before we add to them! :)Chris Lattner2005-03-133-0/+3
| | | | llvm-svn: 20585
* The incoming arguments to main (the argv list) are not complete!Chris Lattner2005-03-131-4/+3
| | | | llvm-svn: 20584
* After finishing BU analysis, move all global variables from the globalsChris Lattner2005-03-133-6/+71
| | | | | | graph into main and mark them complete. llvm-svn: 20583
* ADd support for printing eqgraphs.Chris Lattner2005-03-132-2/+8
| | | | llvm-svn: 20582
* Replace linear search with logrithmic one.Chris Lattner2005-03-131-4/+1
| | | | llvm-svn: 20580
* make sure to mark nodes returned from functions as incompleteChris Lattner2005-03-121-0/+1
| | | | llvm-svn: 20576
* remove this from the PA namespace, leaving it in the llvm nsChris Lattner2005-03-121-8/+7
| | | | llvm-svn: 20574
* Move this from the pool allocator project to here, where it logically belongs.Chris Lattner2005-03-121-0/+442
| | | | llvm-svn: 20570
* Fix Regression/Analysis/BasicAA/2005-03-09-BrokenBasicAA.ll, a miscompilationChris Lattner2005-03-091-2/+6
| | | | | | that Alkis found with Java, thanks Alkis! llvm-svn: 20531
* Export two methods for getting -X and A-B.Chris Lattner2005-03-091-10/+11
| | | | llvm-svn: 20527
* Make sure the two arguments of a setcc instruction point to the same node.Chris Lattner2005-03-051-1/+8
| | | | llvm-svn: 20462
* Trivial cleanup patchChris Lattner2005-03-041-2/+2
| | | | llvm-svn: 20436
* Fix spelling, patch contributed by Gabor GreifChris Lattner2005-02-271-1/+1
| | | | llvm-svn: 20342
* DCE a dead functionChris Lattner2005-02-261-19/+0
| | | | llvm-svn: 20339
* 1 + 100 + 51 == 152, not 52.Chris Lattner2005-02-261-0/+2
| | | | | | | | If we fold three constants together (c1+c2+c3), make sure to keep LHSC updated, instead of reusing (in this case), the 1 instead of the partial sum. llvm-svn: 20337
* Handle null a bit more carefully.Chris Lattner2005-02-251-1/+11
| | | | | | | | Actually teach dsa about select instructions. This doesn't affect the graph in any way other than not setting a spurious U marker on pointer nodes that are selected. llvm-svn: 20324
* This instruction:Chris Lattner2005-02-241-1/+2
| | | | | | | | | X = gep null, ... Used to not create a scalar map entry for X, which caused clients to barf. This is bad. llvm-svn: 20316
OpenPOWER on IntegriCloud