Chris Lattner
fa52af4fb0
Be more const-correct
...
llvm-svn: 7005
2003-06-30 05:27:18 +00:00
Chris Lattner
0929c5ef68
Fix bug in last checkin
...
llvm-svn: 7003
2003-06-30 05:18:26 +00:00
Chris Lattner
348d93c8c2
Handle the case where OldNodeMap == &ScalarMap correctly
...
llvm-svn: 7000
2003-06-30 05:09:29 +00:00
Chris Lattner
6d187fdc5a
Move usages of explicit hash_* datastructures to use typedefs
...
llvm-svn: 6996
2003-06-30 03:36:09 +00:00
Chris Lattner
63aeacfe3d
Revamp DSGraphs so that they can support multiple functions in the same
...
DSGraph at one time
llvm-svn: 6994
2003-06-30 03:15:25 +00:00
Chris Lattner
205d1acfba
Fix minor bug in previous checkin
...
llvm-svn: 6986
2003-06-29 22:36:31 +00:00
Chris Lattner
16e3c398c8
Add support for "physical subtyping", which fixes:
...
DSGraph/2003-06-29-NodeCollapsing2.ll & DSGraph/PhysicalSubtyping.ll
llvm-svn: 6982
2003-06-29 20:27:45 +00:00
Chris Lattner
856a6cbb80
Avoid double negatives
...
llvm-svn: 6945
2003-06-28 21:58:28 +00:00
Chris Lattner
d791d8e427
Remove support for the MultiObject flag, which was fundamentally broken
...
llvm-svn: 6840
2003-06-22 03:03:52 +00:00
Chris Lattner
4853d162af
* Changes to make NodeType be private to DSNode.
...
* Add new MultiObject flag to DSNode which keeps track of whether or not
multiple objects have been merged into the node, allowing must-alias info
to be tracked.
llvm-svn: 6794
2003-06-19 21:15:11 +00:00
Chris Lattner
82f4f85f6d
Remove bogus assertion: a node with no referrers could be collapsed if field-sensitivity was disabled
...
llvm-svn: 6695
2003-06-16 12:07:39 +00:00
Misha Brukman
e5838c4d72
s/convertable/convertible/g
...
llvm-svn: 6248
2003-05-20 18:45:36 +00:00
Chris Lattner
c12e5ccdb5
Don't apply type information to load instructions if it will cause collapsing
...
llvm-svn: 5684
2003-03-03 17:13:31 +00:00
Chris Lattner
b39d6355e1
Fix resolution of indirect function calls... whoops
...
llvm-svn: 5576
2003-02-14 23:27:18 +00:00
Chris Lattner
8acdca64fd
- Eliminate provably non-pointer nodes from graphs.
...
This helps a lot of testcases, for example:
New Time New #Nodes Old Time Old #Nodes
254.gap: 91.1024 21605 91.1397 22657
povray31: 2.7807 8613 3.0152 10338
255.vortex: 1.2034 8153 1.2172 8822
moria: .6756 3150 .7054 3877
300.twolf: .1652 2010 .1851 3270
Typically, testcases which use long and ulong integers a lot get better, f.e. povray above.
llvm-svn: 5566
2003-02-14 06:28:00 +00:00
Chris Lattner
a17866894a
Move node forwarding code from being inlined to being out-of-line.
...
This brings a 11.6% speedup to steens, and a 3.6 overall speedup to ds-aa
llvm-svn: 5552
2003-02-13 19:09:00 +00:00
Chris Lattner
7127d7db7a
Implement a "union-findy" version of DS-Analysis, which eliminates the
...
Referrers list on DSNodes.
llvm-svn: 5536
2003-02-11 23:11:51 +00:00
Chris Lattner
e715357909
Modest speedup which seems to help steens quite a bit on large graphs
...
llvm-svn: 5532
2003-02-10 18:47:23 +00:00
Chris Lattner
f8292feb04
Fix problem breaking GAP, use hasNoReferrers more
...
llvm-svn: 5530
2003-02-10 18:18:18 +00:00
Chris Lattner
0eee7eb390
* 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.
llvm-svn: 5513
2003-02-09 18:41:49 +00:00
Chris Lattner
26bd24cd81
Add a special case for main because we know it's incoming arguments don't alias
...
llvm-svn: 5511
2003-02-08 23:08:02 +00:00
Chris Lattner
f7979c2f2b
Fix an assertion failure
...
llvm-svn: 5496
2003-02-06 00:15:08 +00:00
Chris Lattner
80614ee5ef
Implement optimization for direct function call case. This dramatically
...
reduces the number of function nodes created and speeds up analysis by
about 10% overall.
llvm-svn: 5495
2003-02-05 21:59:58 +00:00
Chris Lattner
a0e9e6ec8c
Add sanity check
...
llvm-svn: 5489
2003-02-04 00:03:57 +00:00
Chris Lattner
1d3922ac0b
* Fix a bug introduced in the last checkin wrt Stack markers
...
* Make cloning more efficient in the process...
llvm-svn: 5479
2003-02-03 20:08:51 +00:00
Chris Lattner
8bb9513bd8
Implement the globals graph!
...
llvm-svn: 5477
2003-02-03 19:12:15 +00:00
Chris Lattner
9e75f38bb9
Fix a bug where we would delete neccesary calls in bu pass
...
llvm-svn: 5465
2003-02-01 06:54:31 +00:00
Chris Lattner
5965bbb02f
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.
llvm-svn: 5464
2003-02-01 06:51:17 +00:00
Chris Lattner
c154bdcd4c
Delete nodes more efficiently
...
llvm-svn: 5463
2003-02-01 06:41:15 +00:00
Chris Lattner
71449ba556
Remove dead nodes more efficiently
...
llvm-svn: 5462
2003-02-01 06:23:33 +00:00
Chris Lattner
4f276cc4dd
Improve efficiency of aliveness traversal code
...
llvm-svn: 5461
2003-02-01 06:17:02 +00:00
Chris Lattner
c44c04af44
Change DSGraph stuff to use hash_(set|map) instead of std::(set|map)
...
This change provides a small (3%) but consistent speedup
llvm-svn: 5460
2003-02-01 04:52:08 +00:00
Chris Lattner
ee97c8b08a
Remove using declarations
...
llvm-svn: 5456
2003-02-01 04:01:21 +00:00
Chris Lattner
87d76c7f01
Remove globals on the bottom up pass which do not contain any information
...
llvm-svn: 5451
2003-01-31 23:57:36 +00:00
Chris Lattner
c5497c816f
Use and implement API for graph traversals
...
llvm-svn: 5431
2003-01-29 21:10:20 +00:00
Chris Lattner
a1d9011d6e
* Eliminate boolean arguments in favor of using enums
...
* T-D pass now eliminates unreachable globals
llvm-svn: 5419
2003-01-23 22:05:33 +00:00
Chris Lattner
2d4945580f
Fix analysis of the Burg program
...
llvm-svn: 5401
2003-01-22 22:00:24 +00:00
Vikram S. Adve
0d5559fdfb
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().
llvm-svn: 4947
2002-12-06 21:15:21 +00:00
Vikram S. Adve
bfff743897
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.
llvm-svn: 4933
2002-12-05 17:17:26 +00:00
Vikram S. Adve
2d2303db22
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.
llvm-svn: 4836
2002-11-27 17:41:13 +00:00
Vikram S. Adve
68690673ad
Keep global nodes in each DS Graph (by forcing them to be marked live).
...
llvm-svn: 4831
2002-11-25 18:21:25 +00:00
Chris Lattner
79d943eb67
Add peak memory usage measurement stuff
...
Add structure padding optimizations
llvm-svn: 4749
2002-11-18 21:44:46 +00:00
Chris Lattner
dcb4ac9594
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.
llvm-svn: 4699
2002-11-12 07:20:45 +00:00
Chris Lattner
8aed9820e2
Elimiante calls to a node with nothing in it.
...
llvm-svn: 4695
2002-11-11 21:35:38 +00:00
Chris Lattner
dd3dd4abeb
Mark stuff reachable by _AUX_ calls as incomplete in the BU graph
...
llvm-svn: 4690
2002-11-11 03:36:55 +00:00
Chris Lattner
6fa9a7f7f4
Use call site mergeWith method to simplify code
...
llvm-svn: 4687
2002-11-11 00:00:46 +00:00
Chris Lattner
d7f9f635ec
Fix a bug that could trigger when varargs call sites had non-matching number of arguments
...
llvm-svn: 4683
2002-11-10 07:46:08 +00:00
Chris Lattner
7b61563d99
* 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!
llvm-svn: 4681
2002-11-10 06:59:55 +00:00
Chris Lattner
715a3a3b5c
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.
llvm-svn: 4666
2002-11-09 22:07:02 +00:00
Chris Lattner
0de21ea32d
Move maskNodeTypes to header file
...
llvm-svn: 4661
2002-11-09 21:02:26 +00:00