| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 7227
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
and (2) faster inlining by cloning only reachable nodes. In particular:
(1) Added DSGraph::cloneReachableSubgraph and DSGraph::cloneReachableNodes
to clone the subgraph reachable from a set of root nodes, into the
current graph, merging the global nodes into thos in the current graph.
The TD pass now uses this for faster inlining, and so does the
next function.
(2) Added DSGraph::updateFromGlobalGraph() to rematerialize nodes from the
globals graph into the current graph in both BU and TD passes.
(3) `I' flags are removed from all nodes in the globals graph, because they
are difficult to maintain correctly and are not needed anyway.
(4) Aux. function calls are only removed to the globals graph if they
will never be resovled. (This is what fixed gap.) The immediate
reason is that if we took these out of a function (and moved them to
the globals graph) we would need to rematerialize these nodes into the
function graph for every function in the BU pass. The longer term
problem is that we would need to find a way to remove them from the
globals graph iff they have been resolved on all paths through the
call graph.
llvm-svn: 7187
|
| |
|
|
|
|
| |
Fix a bug where we removed nodes that were marked U.
llvm-svn: 7090
|
| |
|
|
| |
llvm-svn: 7088
|
| |
|
|
|
|
| |
Minor cleanups, reenable folding of call nodes to external functions
llvm-svn: 7061
|
| |
|
|
| |
llvm-svn: 7031
|
| |
|
|
| |
llvm-svn: 7007
|
| |
|
|
| |
llvm-svn: 7005
|
| |
|
|
| |
llvm-svn: 7003
|
| |
|
|
| |
llvm-svn: 7000
|
| |
|
|
| |
llvm-svn: 6996
|
| |
|
|
|
|
| |
DSGraph at one time
llvm-svn: 6994
|
| |
|
|
| |
llvm-svn: 6986
|
| |
|
|
|
|
| |
DSGraph/2003-06-29-NodeCollapsing2.ll & DSGraph/PhysicalSubtyping.ll
llvm-svn: 6982
|
| |
|
|
| |
llvm-svn: 6945
|
| |
|
|
| |
llvm-svn: 6840
|
| |
|
|
|
|
|
|
| |
* 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
|
| |
|
|
|
|
| |
field-sensitivity was disabled
llvm-svn: 6695
|
| |
|
|
| |
llvm-svn: 6248
|
| |
|
|
| |
llvm-svn: 5684
|
| |
|
|
| |
llvm-svn: 5576
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
This brings a 11.6% speedup to steens, and a 3.6 overall speedup to ds-aa
llvm-svn: 5552
|
| |
|
|
|
|
| |
Referrers list on DSNodes.
llvm-svn: 5536
|
| |
|
|
| |
llvm-svn: 5532
|
| |
|
|
| |
llvm-svn: 5530
|
| |
|
|
|
|
|
|
| |
itself incomplete!
* Allow incompleteness callers to specify they don't want globals to be
considered sources of incompleteness.
llvm-svn: 5513
|
| |
|
|
| |
llvm-svn: 5511
|
| |
|
|
| |
llvm-svn: 5496
|
| |
|
|
|
|
|
| |
reduces the number of function nodes created and speeds up analysis by
about 10% overall.
llvm-svn: 5495
|
| |
|
|
| |
llvm-svn: 5489
|
| |
|
|
|
|
| |
* Make cloning more efficient in the process...
llvm-svn: 5479
|
| |
|
|
| |
llvm-svn: 5477
|
| |
|
|
| |
llvm-svn: 5465
|
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 5463
|
| |
|
|
| |
llvm-svn: 5462
|
| |
|
|
| |
llvm-svn: 5461
|
| |
|
|
|
|
| |
This change provides a small (3%) but consistent speedup
llvm-svn: 5460
|
| |
|
|
| |
llvm-svn: 5456
|
| |
|
|
| |
llvm-svn: 5451
|
| |
|
|
| |
llvm-svn: 5431
|
| |
|
|
|
|
| |
* T-D pass now eliminates unreachable globals
llvm-svn: 5419
|
| |
|
|
| |
llvm-svn: 5401
|
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
| |
before inlining their graphs into a function. To support this,
added flags to CloneFlags to strip/keep Mod/Ref bits.
llvm-svn: 4836
|
| |
|
|
| |
llvm-svn: 4831
|
| |
|
|
|
|
| |
Add structure padding optimizations
llvm-svn: 4749
|
| |
|
|
|
|
|
|
|
|
| |
* 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
|