Commit Graph

1155 Commits

Author SHA1 Message Date
Chris Lattner
431412735b Add capability to set a preference of what call vector is printed to dot files
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4672 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-10 06:47:35 +00:00
Chris Lattner
d8d97ce857 Fix a problem where bad graphs could be generated
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4671 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-10 06:47:03 +00:00
Chris Lattner
f40f0a39bd eliminate the ability to remove global nodes from deadNodeElminate... for now.
This slows stuff down a bit, but it should get much better before it gets any
worse.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4666 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-09 22:07:02 +00:00
Chris Lattner
aa0b468f6d Add globals graphs to all three passes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4663 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-09 21:12:07 +00:00
Chris Lattner
dc26d45c71 Move maskNodeTypes from cpp file
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4662 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-09 21:02:30 +00:00
Chris Lattner
65f2897f2c Clean up DSGraph::removeDeadNodes interface
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4660 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-09 21:00:49 +00:00
Chris Lattner
3ce235a161 Make removeTriviallyDeadNodes a private interface
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4658 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-09 20:55:04 +00:00
Chris Lattner
2e4f9bf86e Add initial support for a globals graph
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4656 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-09 20:01:01 +00:00
Chris Lattner
b07869b386 Remove unneccesary #include
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4653 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-09 19:24:41 +00:00
Chris Lattner
24b3a880df Remove GlobalDSGraph delcaration
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4652 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-09 19:21:56 +00:00
Chris Lattner
1fa48e9d32 Fix release build
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4647 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-09 00:48:52 +00:00
Chris Lattner
2c8b1f6fc6 Add new methods
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4646 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-08 23:22:48 +00:00
Chris Lattner
02fd6870c1 Add another option to cloneGraph
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4641 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-08 22:28:55 +00:00
Chris Lattner
fb39933b75 - Add support for an "auxillary" call site list
- Original call sites are now never modified after construction by the local
  pass.
- DSGraph::cloneInto can now optionally not clone the call sites
- BUDataStructures no longer has a ton of book-keeping info for a broken
  implementation of the TD data structures


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4631 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-08 21:24:51 +00:00
Chris Lattner
a9a93f3777 Add a method "getMainFunction()" that efficiently locates 'main' in a module
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4629 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-08 20:34:02 +00:00
Chris Lattner
b16fb0db91 Use DSNodeHandle for persistent maps
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4623 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-08 05:03:37 +00:00
Chris Lattner
df2f35ee2b Add flag that may be used to determine if dead nodes are used. It's temporary
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4620 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-08 01:22:26 +00:00
Vikram S. Adve
2e4f37ac42 Restore a #include because this header file needs the definitions
of DSCallSite::~DSCallSite and DSNodeHandle::~DSNodeHandle.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4616 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-08 00:23:23 +00:00
Chris Lattner
0ed8e2a862 Add interfaces for ResolveCallSiteModRefInfo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4601 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-07 07:11:49 +00:00
Chris Lattner
460ea29b45 Instead of using a bool that constant has to be explained, use a self
explanitory enum instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4600 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-07 07:06:20 +00:00
Chris Lattner
cee3a4ef10 Add new method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4598 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-07 06:30:17 +00:00
Chris Lattner
04781177b9 Expose isPointerType to clients of dsanalysis
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4597 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-07 05:21:15 +00:00
Chris Lattner
17e43de579 Add a comment
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4586 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-06 23:26:21 +00:00
Chris Lattner
4476ceb414 Allow the ResolveCallSiteModRefInfo method to return a mapping of nodes,
implement the mod/ref bit masking


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4578 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-06 19:59:33 +00:00
Chris Lattner
268748a0d8 Add a stub to implement the context sensitive mod/ref info for call sites
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4577 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-06 19:38:43 +00:00
Chris Lattner
2110808fd8 Give a back pointer to the IPModRef object to the FunctionModRefInfo object
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4576 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-06 19:07:13 +00:00
Chris Lattner
76351e9bab Remove a couple of #includes, move some code to .cpp file
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4574 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-06 18:38:10 +00:00
Chris Lattner
45a9116e0a Make maxSize a private variable, add a size() accessor
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4573 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-06 18:34:40 +00:00
Chris Lattner
ce4a2e1132 Make PointerShift/Size be enums so they are constants instead of globals
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4571 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-06 18:02:26 +00:00
Vikram S. Adve
75310d59c9 Make query operations non-const to allow demand-driven analyses.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4569 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-06 17:17:55 +00:00
Vikram S. Adve
5f76054a79 An implementation of the bit-vector representation of sets.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4568 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-06 17:14:14 +00:00
Vikram S. Adve
895c0bd3fb An interprocedural analysis pass that computes flow-insensitive
IP Mod and Ref information for every function and every call site.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4567 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-06 17:02:03 +00:00
Vikram S. Adve
db7ab14434 Add const version of function getNodeForValue:
const DSNodeHandle &getNodeForValue(Value *V) const.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4566 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-06 17:00:41 +00:00
Chris Lattner
08db719c4b Dramatically simplify internal DSNode representation, get implementation
*FULLY OPERATIONAL* and safe.  We are now capable of completely analyzing
at LEAST the Olden benchmarks + 181.mcf


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4562 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-06 06:20:27 +00:00
Chris Lattner
4268c93b00 Remove stripscalars argument to cloneInto
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4561 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-06 06:18:56 +00:00
Chris Lattner
55d77d9a3f Add a bunch of assertions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4549 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-04 23:59:41 +00:00
Chris Lattner
b7843a4f57 Allow memory sizes to be negative, eliminate TmpRSS
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4539 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-04 19:20:09 +00:00
Vikram S. Adve
5fe9171b38 Generic graph iterator to enumerate the SCCs of a graph
in linear time using Tarjan's DFS algorithm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4531 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-04 14:15:57 +00:00
Chris Lattner
7e5f46a441 Implement methods needed to print out call graph
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4522 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-04 02:53:39 +00:00
Chris Lattner
1650015822 Allow the call graph to be called from analyze naturally with print implemented
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4517 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-04 00:21:19 +00:00
Chris Lattner
c875f023d4 Rename ValueMap to ScalarMap
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4516 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-03 21:27:48 +00:00
Chris Lattner
d18f342af8 Rename NewNode flag to HeapNode
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4515 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-03 21:24:04 +00:00
Chris Lattner
36aff6ec2d Check in header file that was missing, thus broke the build
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4513 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-03 19:24:49 +00:00
Misha Brukman
0d05e6d942 Fixed comment on top of DSNode.h, added note to DSSupport.h as to why
functions were split out from DSNode class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4509 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-02 21:18:53 +00:00
Chris Lattner
5af344d79d Implement the "unknown flag" which mainly consists of aligning printing code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4490 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-02 00:36:03 +00:00
Chris Lattner
332043264e * Eliminate Scalar node type (renumber other node types)
* Allow DSNodeHandle::mergeWith to work if a node handle isn't pointing to a node yet


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4487 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-02 00:11:12 +00:00
Chris Lattner
e3aa8aa08f Eliminate some unneccesary #includes and forward decls
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4475 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-31 21:24:10 +00:00
Misha Brukman
caf18622c5 Refactored DSGraph.h:
* DSGraph.h   contains DSGraph
* DSNode.h    contains DSNode (soon UDSNode and MDSNode)
* DSSupport.h contains DSCallsite, DSTypeRec, and DSNodeHandler


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4466 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-31 06:34:18 +00:00
Chris Lattner
8f0a16eac6 This fixes all kinds of problems with array handling. There are still bugs to
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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4465 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-31 05:45:02 +00:00
Chris Lattner
f2da7241f5 New isAssociative/isCommutative inspection methods, graciously contributed by
Casey Carter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4459 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-31 04:14:01 +00:00