summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis/DataStructure/DataStructure.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Tighten up array handlingChris Lattner2002-11-091-1/+5
| | | | llvm-svn: 4655
* Fix warning & release buildChris Lattner2002-11-091-3/+1
| | | | llvm-svn: 4648
* Fold arrays down to a single element. This causes huge wins on some benchmarksChris Lattner2002-11-081-0/+10
| | | | | | | for example: 197.parser (64M->14M), 164.gzip (14M->2.7M). The actual graphs represented should not change at all. llvm-svn: 4643
* Allow specification of whether the call sites should be copied, AND whetherChris Lattner2002-11-081-2/+11
| | | | | | the aux call sites should be copied llvm-svn: 4639
* - Add a bunch of checking to make sure that dead nodes are not used after theyChris Lattner2002-11-081-12/+40
| | | | | | | | | are marked DEAD. This helped track down some bugs - Fix a bunch of bugs where we were doing work on nodes after they became dead - Add support for aux function call sites - Add support for not cloning call sites llvm-svn: 4633
* Use DSNodeHandleMap instead to be safeChris Lattner2002-11-081-11/+17
| | | | llvm-svn: 4622
* Add flushChris Lattner2002-11-081-27/+17
| | | | llvm-svn: 4619
* Instead of using a bool that constant has to be explained, use a selfChris Lattner2002-11-071-6/+5
| | | | | | explanitory enum instead. llvm-svn: 4600
* Implement a new mergeInGraph method, which basically factors code out ofChris Lattner2002-11-071-0/+52
| | | | | | | | | | | | the BU class. This will be used by the IPModRef class to do stuff, eventually perhaps the TD pass will use it also. Speaking of the TD pass, this also eliminates the self recursive case, which was broken, and couldn't occur anyway. llvm-svn: 4599
* Rename DataStructureAnalysis namespace to DSChris Lattner2002-11-071-6/+2
| | | | llvm-svn: 4596
* Minor bugfix to enable generation of methcall.llvm.lib, objinst.llvm.lib, andChris Lattner2002-11-071-2/+2
| | | | | | | The problem was merging two unsized types like function's, ie int (int*) with int (uint *) llvm-svn: 4594
* Move printouts to be wrapped in DEBUG() macrosChris Lattner2002-11-071-7/+7
| | | | llvm-svn: 4588
* Make PointerSize & Shift be enumsChris Lattner2002-11-061-6/+1
| | | | | | Fix problem with recursive merging llvm-svn: 4570
* Dramatically simplify internal DSNode representation, get implementationChris Lattner2002-11-061-268/+236
| | | | | | | *FULLY OPERATIONAL* and safe. We are now capable of completely analyzing at LEAST the Olden benchmarks + 181.mcf llvm-svn: 4562
* Attempted fixes to the mergemap to make it work better.Chris Lattner2002-11-051-15/+28
| | | | | | Ended up disabling merge map merging completely. It shall be removed. llvm-svn: 4550
* Change the "Cannot merge two portions of the same node yet" from an assertionChris Lattner2002-11-041-6/+13
| | | | | | into a "oh crap, lets collapse" case llvm-svn: 4530
* Rename ValueMap to ScalarMapChris Lattner2002-11-031-27/+27
| | | | llvm-svn: 4516
* Rename NewNode flag to HeapNodeChris Lattner2002-11-031-2/+3
| | | | llvm-svn: 4515
* Stop representing scalars as explicit nodes in the graph. Now the onlyChris Lattner2002-11-021-34/+30
| | | | | | | | | nodes in the graph are memory objects, which is very nice. This also greatly reduces the size and memory footprint for DSGraphs. For example, the local DSGraph for llu went from 65 to 13 nodes with this change. As a side bonus, dot seems to lay out the graphs slightly better too. :) llvm-svn: 4488
* * Minor optimization: when merging nodes, merge the smaller one into theChris Lattner2002-10-311-3/+13
| | | | | | | larger one. * Handle the case where we are merging two nodes of different size better. llvm-svn: 4476
* This fixes all kinds of problems with array handling. There are still bugs toChris Lattner2002-10-311-52/+164
| | | | | | | | | | | | | | | | be fixed, but we are getting much closer now. * Make DSNode::TypeRec a full fledged DSTypeRec type. * Add methods used to update and access the typerecords elements * Add methods to query if and to cause a node to be completely folded * DSGraph construction doesn't use the allocation type for anything at all, now nodes get their type information based on how they are used. * Fixed a bug with global value handling introduced in the last checkin * GEP support is now much better, arrays are handled correctly. The array flag is now updated in type records. There are still cases that are not handled yet (we do not detect pessimizations), but getting much closer. llvm-svn: 4465
* Delete unused arguments to DSGraph::cloneInto methodChris Lattner2002-10-211-2/+1
| | | | llvm-svn: 4253
* Add another copy ctor formChris Lattner2002-10-211-0/+5
| | | | llvm-svn: 4251
* As it turns out, we don't need a fully generic mapping copy ctor, we just needChris Lattner2002-10-211-19/+1
| | | | | | | something that maps through a std::map. Since this simplified the client and implementation code, do so now. llvm-svn: 4250
* Remove some unneccesary 'using' directivesChris Lattner2002-10-211-1/+1
| | | | llvm-svn: 4246
* Fix bug with prior checkinChris Lattner2002-10-211-2/+2
| | | | llvm-svn: 4242
* - Make DSCallSite not inherit from std::vector. Renamed methods slightly.Chris Lattner2002-10-211-30/+56
| | | | | | | | Make copy ctor have two versions to avoid dealing with conditional template argument. DSCallSite ctor now takes all arguments instead of taking one and being populated later. llvm-svn: 4240
* Simplify code a bit, add comment flyerChris Lattner2002-10-201-10/+11
| | | | llvm-svn: 4238
* Remove spurious caller pointer in DSCallSite.Vikram S. Adve2002-10-201-5/+10
| | | | | | Also add functions to access pointer argument nodes cleanly. llvm-svn: 4235
* This function can be staticChris Lattner2002-10-201-2/+2
| | | | llvm-svn: 4234
* Added a first-class representation for each call site that can beVikram S. Adve2002-10-201-22/+37
| | | | | | | | | used in the DS graphs. Essentially, what was vector<DSNodeHandle> before is now a DSCallSite with the same vector, plus pointers to the CallInst and the caller Function. The special-purpose class BUDataStructure::CallSite is no longer needed. llvm-svn: 4228
* Convert typerec to be a structure instead of a pairChris Lattner2002-10-181-4/+4
| | | | llvm-svn: 4226
* * Make the DSGraph cloner automatically merge global nodesChris Lattner2002-10-171-4/+15
| | | | | | | | * BUClosure doesn't have to worry about global nodes * TDClosure now works with global nodes * Reenable DNE on TD pass, now that globals work right llvm-svn: 4220
* Remove obsolete codeChris Lattner2002-10-171-9/+0
| | | | llvm-svn: 4218
* Prune function nodes that are no longer referenced due to inliningChris Lattner2002-10-031-2/+2
| | | | llvm-svn: 4036
* Handle bug exposed by power benchmarkChris Lattner2002-10-031-1/+1
| | | | llvm-svn: 4033
* * Significant rework of DSNode to support arbitrary aliasing due to mergingChris Lattner2002-10-021-20/+146
| | | | | | | | * Now all and any bytes of a DSNode can be merged together individually. This is neccesary to support the full generality of C and support aliasing correctly. llvm-svn: 4008
* Checkin some major reworks of data structure analysis. This is not done,Chris Lattner2002-10-011-165/+261
| | | | | | | nor does it work very well, but I need to get it checked in before I break the tree unintentionally. llvm-svn: 3996
* Reorder #includes to be rightChris Lattner2002-08-071-1/+1
| | | | llvm-svn: 3260
* Changes to be GCC3.1 friendlyChris Lattner2002-07-311-6/+6
| | | | llvm-svn: 3186
* Use a separate globals graph to hold externally visible nodes.Vikram S. Adve2002-07-301-64/+406
| | | | | | | | | This changes both the bottom-up and top-down propagation so that globals and other external objects do not have to appear in every function, but only in functions in which they are referenced or they can be used to access something else that is referenced. llvm-svn: 3170
* * Standardize how analysis results/passes as printed with the print() virtualChris Lattner2002-07-271-4/+0
| | | | | | | | | | methods * Eliminate AnalysisID: Now it is just a typedef for const PassInfo* * Simplify how AnalysisID's are initialized * Eliminate Analysis/Writer.cpp/.h: incorporate printing functionality into the analyses themselves. llvm-svn: 3115
* * Add support for different "PassType's"Chris Lattner2002-07-261-0/+2
| | | | | | | | | | | | | | | * Add new RegisterOpt/RegisterAnalysis templates for registering passes that are to show up in opt or analyze * Register Analyses now * Change optimizations to use RegisterOpt instead of RegisterPass * Add support for different "PassType's" * Add new RegisterOpt/RegisterAnalysis templates for registering passes that are to show up in opt or analyze * Register Analyses now * Change optimizations to use RegisterOpt instead of RegisterPass * Remove getPassName implementations from various subclasses llvm-svn: 3112
* * Inline CopyFunctionCallsListChris Lattner2002-07-181-35/+88
| | | | | | | | * Don't clone OrigCallList * Rename removeDeadNodes -> removeTriviallyDeadNodes * Implement new removeDeadNodes method llvm-svn: 2970
* Add support for a top-down propagation pass.Vikram S. Adve2002-07-181-17/+39
| | | | | | | | | Each DSGraph now keeps a list of pending callers that have not been inlined into the function represented by that graph. It also keeps a copy of the original call nodes before the BU pass eliminates some of them. llvm-svn: 2965
* Implement cast nodes correctly.Chris Lattner2002-07-181-2/+2
| | | | llvm-svn: 2964
* Lots of bug fixes, add BottomUpClosure, which has bugs, but is a start.Chris Lattner2002-07-181-12/+216
| | | | llvm-svn: 2945
* * Nodes now keep track of any global variables in themChris Lattner2002-07-111-0/+15
| | | | llvm-svn: 2879
* New implementation of data structure analysis. Only local analysis has beenChris Lattner2002-07-101-130/+92
| | | | | | implemented so far. llvm-svn: 2871
* Fix anand's last checkinChris Lattner2002-06-301-1/+0
| | | | llvm-svn: 2804
OpenPOWER on IntegriCloud