Chris Lattner
a954b5eb3a
Modest speedup which seems to help steens quite a bit on large graphs
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5532 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-10 18:47:23 +00:00
Chris Lattner
2609c07df3
Fix problem breaking GAP, use hasNoReferrers more
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5530 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-10 18:18:18 +00:00
Chris Lattner
e79eaa9b49
Implement a new "viewGraph" method which can be used to instantly view a graph from gdb
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5528 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-10 18:17:07 +00:00
Chris Lattner
4f2cfc0d74
Rearrange code
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5527 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-10 18:16:36 +00:00
Chris Lattner
88c7294b80
Fix problem breaking Fhourstones
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5526 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-10 18:16:19 +00:00
Chris Lattner
0f777ab96a
Make steensgaards performance not shameful
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5524 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-10 00:14:57 +00:00
Chris Lattner
1e56c54f41
Don't insert null entries into the scalar map for constexpr (cast null to Ty)
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5523 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-09 23:04:12 +00:00
Chris Lattner
af28351773
Switch to using the right call vector
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5517 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-09 19:26:47 +00:00
Chris Lattner
e0fbd48e19
Fix major bugs in incompleteness marking that were pessimizing results
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5515 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-09 18:42:43 +00:00
Chris Lattner
47a307aef0
Print out the steens graph if -debug is specified
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5514 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-09 18:42:16 +00:00
Chris Lattner
93d7a212cc
* Fix a bug where global incompleteness marking would not mark the global
...
itself incomplete!
* Allow incompleteness callers to specify they don't want globals to be
considered sources of incompleteness.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5513 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-09 18:41:49 +00:00
Chris Lattner
e77f1456d7
Add a special case for main because we know it's incoming arguments don't alias
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5511 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-08 23:08:02 +00:00
Chris Lattner
1ef0da2e25
Fix a bug where we would mark the callees arguments incomplete if the caller was external.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5510 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-08 23:07:39 +00:00
Chris Lattner
6022ef463f
Remove explicit result counters
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5508 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-08 23:03:17 +00:00
Chris Lattner
ca3f790f71
Add a flag which effectively disables field sensitivity
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5506 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-08 20:18:39 +00:00
Chris Lattner
1dbd1b820f
Don't bother counting alias results, allow the AliasAnalysisCounter to do that.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5505 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-07 20:39:48 +00:00
Chris Lattner
5d2745801c
Fix an assertion failure
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5496 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-06 00:15:08 +00:00
Chris Lattner
923fc05b3a
Implement optimization for direct function call case. This dramatically
...
reduces the number of function nodes created and speeds up analysis by
about 10% overall.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5495 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-05 21:59:58 +00:00
Chris Lattner
b8925bce83
Remove bogus assertion
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5492 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-04 16:33:23 +00:00
Chris Lattner
878e521b1e
Fix a huge bug with handling non-pointer instructions
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5491 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-04 00:59:50 +00:00
Chris Lattner
24d80079a8
Make the TD pass not include all of the call nodes from the local pass,
...
eliminating incomplete markers from them
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5490 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-04 00:59:32 +00:00
Chris Lattner
f52ade928c
Add sanity check
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5489 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-04 00:03:57 +00:00
Chris Lattner
e6c0b5dba4
Fix steensgaard to work on a lot more cases...
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5488 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-04 00:03:37 +00:00
Chris Lattner
714752fa8e
Fix printing of nonfunction graphs
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5487 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-04 00:03:18 +00:00
Chris Lattner
0a91e63d92
Rename variable
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5486 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-03 22:51:53 +00:00
Chris Lattner
4923d1be91
Hack to work around deficiency in pass infrastructure
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5485 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-03 22:51:28 +00:00
Chris Lattner
8105cfbed0
Initial implementation of ds-aa
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5484 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-03 22:50:46 +00:00
Chris Lattner
1e88369afe
* Fix a bug introduced in the last checkin wrt Stack markers
...
* Make cloning more efficient in the process...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5479 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-03 20:08:51 +00:00
Chris Lattner
0ac7d5c534
Implement the globals graph!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5477 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-03 19:12:15 +00:00
Chris Lattner
20167e3c6d
Add better debug output
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5476 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-03 19:11:38 +00:00
Chris Lattner
32d10ddefa
Be a bit more specific in caption
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5469 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-02 16:42:01 +00:00
Chris Lattner
7094b7ae8f
Fix a bug where we would delete neccesary calls in bu pass
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5465 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-01 06:54:31 +00:00
Chris Lattner
706e7ab871
Fix a bug where we would incorrectly delete globals which had edges to alive nodes in
...
a graph in the t-d pass. This slows down the TD pass by quite a bit (1/3), but is
needed for correctness.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5464 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-01 06:51:17 +00:00
Chris Lattner
d4400c8297
Delete nodes more efficiently
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5463 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-01 06:41:15 +00:00
Chris Lattner
5e7d0e2691
Remove dead nodes more efficiently
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5462 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-01 06:23:33 +00:00
Chris Lattner
a1220afc3a
Improve efficiency of aliveness traversal code
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5461 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-01 06:17:02 +00:00
Chris Lattner
41c04f730b
Change DSGraph stuff to use hash_(set|map) instead of std::(set|map)
...
This change provides a small (3%) but consistent speedup
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5460 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-01 04:52:08 +00:00
Chris Lattner
b3416bc9cc
Remove using declarations
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5456 91177308-0d34-0410-b5e6-96231b3b80d8
2003-02-01 04:01:21 +00:00
Chris Lattner
100f87252d
Remove globals on the bottom up pass which do not contain any information
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5451 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-31 23:57:36 +00:00
Chris Lattner
11d71edd0d
Add functions to the ban list
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5450 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-31 23:57:10 +00:00
Chris Lattner
5c7380e567
Use and implement API for graph traversals
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5431 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-29 21:10:20 +00:00
Chris Lattner
3f24d7a2cd
free instructions mark their operands as being heap nodes.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5425 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-28 20:59:57 +00:00
Chris Lattner
381977d191
* Eliminate boolean arguments in favor of using enums
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5420 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-23 22:06:33 +00:00
Chris Lattner
394471f197
* Eliminate boolean arguments in favor of using enums
...
* T-D pass now eliminates unreachable globals
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5419 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-23 22:05:33 +00:00
Chris Lattner
787645839a
Slight efficiency improvement
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5418 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-23 21:31:16 +00:00
Chris Lattner
6f6fef8c26
Fix analysis of the Burg program
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5401 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-22 22:00:24 +00:00
Misha Brukman
f4445dfcb7
'graph' is spelled without a 'c'.
...
Also added Statistic counters for NoAlias and MayAlias.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4972 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-12 05:34:10 +00:00
Vikram S. Adve
e12c74c07b
This file implements a pass that automatically parallelizes a program,
...
using the Cilk multi-threaded runtime system to execute parallel code.
The current version inserts too many sync() operations in the program
because it does not attempt to optimize their placement.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4962 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-10 00:43:34 +00:00
Vikram S. Adve
0d4f76637d
Iterator that enumerates the ProgramDependenceGraph (PDG) for a function,
...
i.e., enumerates all data and control dependences for the function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4958 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-08 14:13:19 +00:00
Vikram S. Adve
96b21c1054
An explicit representation of dependence graphs, and a pass that
...
computes a dependence graph for data dependences on memory locations
using interprocedural Mod/Ref information.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4957 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-08 13:26:29 +00:00
Vikram S. Adve
bac0622ef9
Two bug fixes:
...
(1) Make entries for Constant values in the ScalarMap.
(2) Set MOD bit for the node pointed to by the
argument of a free instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4948 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-06 21:17:10 +00:00
Vikram S. Adve
2b7a92c72f
Fix several related bugs in DSNode::mergeWith() caused by the
...
fact that the incoming nodes may be merged away at intermediate
steps. Use an extra level of indirection via DSNodeHandles
to track the nodes being merged. All this now happens in a
static helper function MergeNodes().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4947 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-06 21:15:21 +00:00
Vikram S. Adve
c102cb7359
Cute bug fix: when moving links from N to this, some links could have
...
been missed if node *this got merged away due to recursive merging!
Also, links were not moved correctly if a node is collapsed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4933 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-05 17:17:26 +00:00
Vikram S. Adve
61ff02982f
Fix logical error in TD pass: we should clear Mod/Ref bits of each caller
...
before inlining their graphs into a function. To support this,
added flags to CloneFlags to strip/keep Mod/Ref bits.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4836 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-27 17:41:13 +00:00
Vikram S. Adve
9a96428297
(1) Bug fix that was causing nodes with dangling references to be freed.
...
We run removeDeadNodes() on the TD graph up front before using it.
(2) Major enhancement to printing of results: now we list the actual objects
that are mod/ref instead of just printing the bit vectors.
Also an important bug fix in TDDataStructures pass (no change here):
clear Mod/Ref bits of callers before inlining into a function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4833 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-27 17:37:46 +00:00
Vikram S. Adve
e31267dd9a
Keep global nodes in each DS Graph (by forcing them to be marked live).
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4831 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-25 18:21:25 +00:00
Chris Lattner
1855292172
Add peak memory usage measurement stuff
...
Add structure padding optimizations
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4749 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-18 21:44:46 +00:00
Chris Lattner
4fe346184a
Add peak memory usage support
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4748 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-18 21:44:19 +00:00
Chris Lattner
49a1ed07ab
Add stats
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4747 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-18 21:42:45 +00:00
Chris Lattner
ed806bf9fc
Add hack to only consider indirect calls indirect if they do more than cast
...
their source function
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4723 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-17 22:17:12 +00:00
Chris Lattner
ae5f603665
Add MaxSCC statistics
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4722 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-17 22:16:28 +00:00
Vikram S. Adve
586aa3c801
Pass to compute various statisics related to DSGraphs.
...
For now, this just computes the #indirect call sites and
the avg. #callees per indirect call site (actually it prints
both totals and the average is their ratio).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4705 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-13 15:41:00 +00:00
Chris Lattner
5f1f2c6162
Inline graphs from outside the SCC into the SCC before SCC resolution starts
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4701 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-12 15:58:08 +00:00
Chris Lattner
5190ce8374
Fix two bugs:
...
* The globals vector was getting broken and unsorted, this caused vortex
to get badly pessimized
* Node offset handling was being handled really poorly, and in particular
we were not merging types with offsets right. This causes several graphs
to be non-merged.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4699 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-12 07:20:45 +00:00
Chris Lattner
3ba8893af5
Fix bug
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4697 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-11 22:23:56 +00:00
Chris Lattner
0ecc42619f
Handle a mismatch between # function args and call site args
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4696 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-11 21:36:05 +00:00
Chris Lattner
e425844d8c
Elimiante calls to a node with nothing in it.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4695 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-11 21:35:38 +00:00
Chris Lattner
a9c9c0216e
Complete rewrite of BU code to use Tarjan's SCC finding algorithm to drive
...
the algorithm instead of hand coded depth first iteration
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4694 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-11 21:35:13 +00:00
Chris Lattner
e71ffc291c
Mark stuff reachable by _AUX_ calls as incomplete in the BU graph
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4690 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-11 03:36:55 +00:00
Chris Lattner
8a5db46967
Fix infinite loop in the BU algorithm. Unfortunately this dies a serious
...
death when handling moderately sized SCC's, but what can you do
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4689 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-11 00:01:34 +00:00
Chris Lattner
6052594209
Print the right call set size
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4688 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-11 00:01:02 +00:00
Chris Lattner
998c49c247
Use call site mergeWith method to simplify code
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4687 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-11 00:00:46 +00:00
Chris Lattner
d11e954f08
Fix a bug that could trigger when varargs call sites had non-matching number of arguments
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4683 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-10 07:46:08 +00:00
Chris Lattner
aa8146f5c4
* Dramatically rework liveness evaluation.
...
* Implement the first step of the Globals graph: Deleting nodes from function
graphs. In practice, these nodes need to be moved to the globals graph, but
this will be taken care of later. Note that the graphs computed right now are
not strictly correct!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4681 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-10 06:59:55 +00:00
Chris Lattner
4f7815f684
Honor the shouldPrintAuxCalls flag
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4678 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-10 06:53:59 +00:00
Chris Lattner
2a06886759
Initialize PrintAuxCalls member
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4677 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-10 06:53:38 +00:00
Chris Lattner
a1079051d8
* Bottom-Up graphs print the Aux call vector
...
* Significantly improve DEBUG output
* Aggressively fold calls together if we inlined a graph that provides
call nodes.
* Add a bailout if the current graph has over 200 call nodes in it, this is
a really whacky case that should never happen.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4675 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-10 06:52:47 +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
dd398486ca
Remove obsolete code
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4665 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-09 21:41:44 +00:00
Chris Lattner
f76e754c2e
Fix logic
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4664 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-09 21:40:58 +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
7900ed146f
Move maskNodeTypes to header file
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4661 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-09 21:02:26 +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
96517253a1
Make removeTriviallyDeadNodes a private interface of DSGraph
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4659 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-09 20:55:24 +00:00
Chris Lattner
2cfbaaf3b9
Don't put constants into the scalar map!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4657 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-09 20:14:03 +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
d888893a54
Tighten up array handling
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4655 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-09 19:25:27 +00:00
Chris Lattner
0779ba6c47
#include Datastructure.h first
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4654 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-09 19:25:10 +00:00
Chris Lattner
bf10f05bf7
Fix warning & release build
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4648 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-09 00:49:05 +00:00
Chris Lattner
23f83dce3f
Fold arrays down to a single element. This causes huge wins on some benchmarks
...
for example: 197.parser (64M->14M), 164.gzip (14M->2.7M). The actual graphs
represented should not change at all.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4643 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-08 22:49:57 +00:00
Chris Lattner
70925b0569
ONLY merge in the aux call sites, this causes a HUGE speedup
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4640 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-08 22:27:25 +00:00
Chris Lattner
acf491f0b4
Allow specification of whether the call sites should be copied, AND whether
...
the aux call sites should be copied
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4639 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-08 22:27:09 +00:00
Chris Lattner
ce2d1328fc
Reenable 'quick exit' case
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4638 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-08 22:26:43 +00:00
Chris Lattner
7cc9875c9d
Reduce amount of work needed to compute ip/modref
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4637 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-08 22:17:01 +00:00
Chris Lattner
7a21163cef
Reimplement TD pass completely it now works
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4635 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-08 21:28:37 +00:00
Chris Lattner
01fb0c75aa
Cannot modify original call sites vector
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4634 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-08 21:27:37 +00:00
Chris Lattner
679e8e1b19
- Add a bunch of checking to make sure that dead nodes are not used after they
...
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
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4633 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-08 21:27:12 +00:00
Chris Lattner
1a948a8269
Remove gunk used by broken TD pass
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4632 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-08 21:25:24 +00:00
Chris Lattner
d321593330
Fix IPModRef to use new DS interface
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4628 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-08 19:13:14 +00:00
Chris Lattner
f8c6aab05e
Use DSNodeHandleMap instead to be safe
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4622 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-08 05:01:14 +00:00
Chris Lattner
5134006f93
* actually handle constants (especially constantexprs) correctly.
...
- This seems to dramatically improve many benchmarks, only slowing down
gzip significantly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4621 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-08 05:00:44 +00:00
Chris Lattner
33312f7031
Add flush
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4619 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-08 01:21:07 +00:00
Chris Lattner
ed8e6499dd
Implement ResolveCallSiteModRefInfo for IPModRef. computeModRef is not yet done though!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4602 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-07 07:12:23 +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
076c1f923b
Implement a new mergeInGraph method, which basically factors code out of
...
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4599 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-07 06:31:54 +00:00
Chris Lattner
b10604341f
Rename DataStructureAnalysis namespace to DS
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4596 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-07 05:20:53 +00:00
Chris Lattner
e83cb5316b
Fix problem with dangling referrers
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4595 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-07 05:00:35 +00:00
Chris Lattner
f17b39ab2a
Minor bugfix to enable generation of methcall.llvm.lib, objinst.llvm.lib, and
...
The problem was merging two unsized types like function's, ie int (int*) with
int (uint *)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4594 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-07 04:59:28 +00:00
Chris Lattner
1421233dc1
Compute total number of nodes and # call nodes
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4592 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-07 02:18:46 +00:00
Chris Lattner
3c87b29985
Move printouts to be wrapped in DEBUG() macros
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4588 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-07 01:54:56 +00:00
Chris Lattner
95a80adc23
When the -only-print-main-ds option is specified, still print out graph size
...
statistics for skipped functions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4587 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-07 01:54:44 +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
fc928245ad
Remove a couple of #includes, move some code from .h file
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4575 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-06 18:38:18 +00:00
Chris Lattner
d747e8ffe9
Change Steens class to build with Vikram's changes
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4572 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-06 18:08:32 +00:00
Chris Lattner
2c0bd014c5
Make PointerSize & Shift be enums
...
Fix problem with recursive merging
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4570 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-06 18:01:39 +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
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
ef5af99195
Delete "StripScalars" argument to cloneInto method
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4560 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-06 06:16:30 +00:00
Chris Lattner
5953513308
Attempted fixes to the mergemap to make it work better.
...
Ended up disabling merge map merging completely. It shall be removed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4550 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-05 00:01:58 +00:00
Chris Lattner
02606637e0
Change the "Cannot merge two portions of the same node yet" from an assertion
...
into a "oh crap, lets collapse" case
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4530 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-04 06:48:26 +00:00
Chris Lattner
048912bad9
Give a better error message in an unhandled case
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4521 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-04 02:29:15 +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
ef69ccf71b
Change the letters used to represent stack and heap allocations to "S" and "H"
...
respectively. This is to make presentation easier in the paper.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4514 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-03 19:46:15 +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
7a0b5bb7ab
Oops, this was not meant to be checked in
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4489 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-02 00:26:32 +00:00
Chris Lattner
92673296e6
Stop representing scalars as explicit nodes in the graph. Now the only
...
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. :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4488 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-02 00:13:20 +00:00
Chris Lattner
4f53bef7cd
Fix comments, steens is context sensitive, we just haven't implemented
...
mod/ref apis yet
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4485 91177308-0d34-0410-b5e6-96231b3b80d8
2002-11-01 17:34:23 +00:00
Chris Lattner
7f124e3abd
Add a fixme
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4479 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-31 23:24:00 +00:00
Chris Lattner
9b87c5c53c
* Minor optimization: when merging nodes, merge the smaller one into the
...
larger one.
* Handle the case where we are merging two nodes of different size better.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4476 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-31 22:41:15 +00:00
Chris Lattner
7e51c8741f
Remove dead code
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4467 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-31 06:52:26 +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
4bdb9b7ebe
- Make sure to only keep track of mappings that the TD pass may need in the
...
future. This prevents having spurious map entries to nodes that we really
don't care about. This allows us to reenable the DeadNodeElim, which was
disabled.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4260 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-22 16:01:03 +00:00
Chris Lattner
9faf18d523
The callee is not correct, and confuses the TD pass. Null it out.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4259 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-22 15:58:46 +00:00
Chris Lattner
e4ae3041f9
Delete unused arguments to DSGraph::cloneInto method
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4253 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-21 19:50:29 +00:00
Chris Lattner
198be22cec
- Add "ResolvingCaller" to the CallSite record. This keeps track of which
...
function was finally able to resolve the function call. Adding this allows
the TD pass to actually work right!
- Temporarily disable dead node pruning. This will be reenabled soon.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4252 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-21 19:47:18 +00:00
Chris Lattner
eff0da9d33
Add another copy ctor form
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4251 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-21 15:32:34 +00:00
Chris Lattner
99a22847ba
As it turns out, we don't need a fully generic mapping copy ctor, we just need
...
something that maps through a std::map. Since this simplified the client and
implementation code, do so now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4250 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-21 15:04:18 +00:00
Chris Lattner
448f4949dc
Don't create a new node for every reference to a global. This caused a huge
...
node explosion that doesn't help anything at all. In previous versions of
the representation this DID help, but not anymore.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4249 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-21 13:51:30 +00:00
Chris Lattner
482b651cf8
Fix a confusing bug that caused return value and callee pointers to not
...
be printed!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4248 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-21 13:47:57 +00:00
Chris Lattner
13ec72a12a
Remove some unneccesary 'using' directives
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4246 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-21 13:31:48 +00:00
Chris Lattner
65d6a9ee47
Fix bug with prior checkin
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4242 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-21 02:18:55 +00:00
Chris Lattner
0969c50cb8
- Make DSCallSite not inherit from std::vector. Renamed methods slightly.
...
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4240 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-21 02:08:03 +00:00
Chris Lattner
0c8d73b74c
Avoid extra copy
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4239 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-20 22:12:06 +00:00
Chris Lattner
9de906c72a
Simplify code a bit, add comment flyer
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4238 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-20 22:11:44 +00:00
Chris Lattner
7836d609fa
Split some long lines
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4237 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-20 22:11:17 +00:00
Vikram S. Adve
26b98265b7
Remove spurious caller pointer in DSCallSite.
...
Also add functions to access pointer argument nodes cleanly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4235 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-20 21:41:02 +00:00
Chris Lattner
e80fe61a72
This function can be static
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4234 91177308-0d34-0410-b5e6-96231b3b80d8
2002-10-20 20:39:31 +00:00