summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis/DataStructure/Local.cpp
Commit message (Collapse)AuthorAgeFilesLines
* 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
* 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
* some methods got renamedChris Lattner2005-03-201-2/+2
| | | | llvm-svn: 20703
* 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-191-7/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* another fastpathChris Lattner2005-03-181-1/+2
| | | | llvm-svn: 20674
* This mega patch converts us from using Function::a{iterator|begin|end} toChris Lattner2005-03-151-2/+2
| | | | | | | | using Function::arg_{iterator|begin|end}. Likewise Module::g* -> Module::global_*. This patch is contributed by Gabor Greif, thanks! llvm-svn: 20597
* 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
* 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
* * Make some methods more const correct.Chris Lattner2005-01-301-2/+2
| | | | | | | | | | | | | | | | * Change the FunctionCalls and AuxFunctionCalls vectors into std::lists. This makes many operations on these lists much more natural, and avoids *exteremely* expensive copying of DSCallSites (e.g. moving nodes around between lists, erasing a node from not the end of the vector, etc). With a profile build of analyze, this speeds up BU DS from 25.14s to 12.59s on 176.gcc. I expect that it would help TD even more, but I don't have data for it. This effectively eliminates removeIdenticalCalls and children from the profile, going from 6.53 to 0.27s. llvm-svn: 19939
* Silence VC++ warnings.Chris Lattner2005-01-121-3/+4
| | | | llvm-svn: 19506
* Work correctly with ICC, Patch contributed by Bjørn WennbergChris Lattner2004-12-081-8/+16
| | | | llvm-svn: 18630
* Handle assert_fail specialChris Lattner2004-11-081-0/+7
| | | | llvm-svn: 17631
* Don't call Constant::getNullValue when the argument could be VoidTyChris Lattner2004-11-031-2/+3
| | | | llvm-svn: 17457
* Fix more undefined behaviorChris Lattner2004-10-301-10/+13
| | | | llvm-svn: 17356
* add support for UndefValueChris Lattner2004-10-261-1/+1
| | | | llvm-svn: 17260
* Add support for undefChris Lattner2004-10-161-0/+3
| | | | llvm-svn: 17055
* Dont' let null nodes sneak past cast instructionsChris Lattner2004-10-061-1/+4
| | | | llvm-svn: 16779
* '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-3/+3
| | | | | | | | 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
* Hide this optionChris Lattner2004-08-021-1/+1
| | | | llvm-svn: 15415
* These files don't need to include <iostream> since they include ↵Brian Gaeke2004-07-211-1/+0
| | | | | | "Support/Debug.h". llvm-svn: 15089
* bug 122:Reid Spencer2004-07-181-13/+8
| | | | | | | | - Replace ConstantPointerRef usage with GlobalValue usage - Minimize redundant isa<GlobalValue> usage - Correct isa<Constant> for GlobalValue subclass llvm-svn: 14942
* Move all of the DSA headers into the Analysis/DataStructure subdir.Chris Lattner2004-07-071-2/+2
| | | | llvm-svn: 14663
* As much as I hate to say it, the whole setNode interface for DSNodeHandlesChris Lattner2004-07-071-2/+1
| | | | | | | | | | | | is HOPELESSLY broken. The problem is that the embedded getNode call can change the offset of the node handle in unpredictable ways. As it turns out, all of the clients of this method really want to set both the node and the offset, thus it is more efficient (and less buggy) to just do both of them in one method call. This fixes some obscure bugs handling non-forwarded node handles. llvm-svn: 14660
* Add #include <iostream> since Value.h does not #include it any more.Reid Spencer2004-07-041-0/+1
| | | | llvm-svn: 14622
* Recognize memalign and friends, and handle them specially.Vikram S. Adve2004-05-251-1/+2
| | | | llvm-svn: 13741
* Fix a really nasty bug with the -disable-ds-field-sensitivity optionChris Lattner2004-05-231-0/+3
| | | | llvm-svn: 13681
* Support getelementptr instructions which use uint's to index into structureChris Lattner2004-04-051-1/+2
| | | | | | | types and can have arbitrary 32- and 64-bit integer types indexing into sequential types. llvm-svn: 12653
* Rename the intrinsic enum values for llvm.va_* from Intrinsic::va_* toChris Lattner2004-03-131-5/+3
| | | | | | Intrinsic::va*. This avoid conflicting with macros in the stdlib.h file. llvm-svn: 12356
* Unbreak the build on Sparc.Misha Brukman2004-03-051-0/+2
| | | | llvm-svn: 12161
* Add support for strto* and v*printfChris Lattner2004-03-041-0/+66
| | | | llvm-svn: 12127
* Add non-crappy support for varargsChris Lattner2004-03-041-6/+32
| | | | llvm-svn: 12126
* Fix a minor bug handling incomplete programsChris Lattner2004-03-031-1/+1
| | | | llvm-svn: 12105
* Really, only if reopenChris Lattner2004-03-021-1/+2
| | | | llvm-svn: 12080
* Correctly add an array marker on a node when appropriate!Chris Lattner2004-03-011-0/+4
| | | | llvm-svn: 12055
* ADD MORE FUNCTIONS!Chris Lattner2004-02-271-14/+20
| | | | llvm-svn: 11927
* Be a good little compiler and handle direct calls efficiently, even if thereChris Lattner2004-02-261-10/+13
| | | | | | are beastly ConstantPointerRefs in the way... llvm-svn: 11883
* Add _more_ functionsChris Lattner2004-02-261-3/+20
| | | | llvm-svn: 11862
* When building local graphs, clone the initializer for constant globals into eachChris Lattner2004-02-251-7/+21
| | | | | | local graph that uses the global. llvm-svn: 11850
* Add a bunch more functionsChris Lattner2004-02-251-8/+55
| | | | llvm-svn: 11847
* Add a bunch more functions used by perlbmkChris Lattner2004-02-251-14/+50
| | | | llvm-svn: 11824
* Add support for 'rename'Chris Lattner2004-02-241-4/+9
| | | | llvm-svn: 11813
* Add support for remove, fwrite, and freadChris Lattner2004-02-241-22/+53
| | | | | | | Also fix problem where we didn't check to see if a node pointer was null. Though fclose(null) doesn't make a lot of sense, 300.twolf does it. llvm-svn: 11810
* Add two missing returns, which caused us to be very pessimistic about theChris Lattner2004-02-201-1/+2
| | | | | | printf and scanf families! llvm-svn: 11683
* Add support for some string functions, the scanf family, and sprintfChris Lattner2004-02-201-4/+66
| | | | llvm-svn: 11673
* Only spit out warning for functions that take pointers, not for sin and the likeChris Lattner2004-02-161-5/+25
| | | | | | Add more special case handling for stdio functions. I feel dirty, how about you? llvm-svn: 11506
* memset and bcopy and now unified by the llvm.memset intrinsicChris Lattner2004-02-161-14/+5
| | | | llvm-svn: 11503
OpenPOWER on IntegriCloud