| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 12128
|
|
|
|
| |
llvm-svn: 12127
|
|
|
|
| |
llvm-svn: 12126
|
|
|
|
|
|
|
| |
This reduces CBU time from 145s -> 122s (debug build), reduces # allocated nodes
from 129420 to 116477.
llvm-svn: 12125
|
|
|
|
|
|
| |
about 90s on povray
llvm-svn: 12123
|
|
|
|
|
|
|
|
| |
The problem was that we were merging a field of a node with a value that was
deleted. Thanks to bugpoint for reducing povray to a nice small 3 function
example. :)
llvm-svn: 12116
|
|
|
|
|
|
|
| |
Make sure to scope the NodeMap passed into cloneInto so that it doesn't point
to nodes that are deleted. Add some FIXME's for future performance enhancements.
llvm-svn: 12115
|
|
|
|
|
|
|
|
| |
This improves
povray from having ~600K nodes and 300K call nodes to 65K nodes and 25K call nodes.
llvm-svn: 12109
|
|
|
|
| |
llvm-svn: 12105
|
|
|
|
|
|
|
|
|
|
| |
forever to
do it on povray. The problem is that we were not copying globals from callees to
callers unless the existed in both graphs. We should have copied them in the case
where the global pointed to a node that was copied as well.
llvm-svn: 12104
|
|
|
|
| |
llvm-svn: 12102
|
|
|
|
|
|
|
|
| |
allocate
nodes that were globally live, thus breaking programs.
llvm-svn: 12094
|
|
|
|
| |
llvm-svn: 12082
|
|
|
|
| |
llvm-svn: 12080
|
|
|
|
| |
llvm-svn: 12055
|
|
|
|
| |
llvm-svn: 11928
|
|
|
|
| |
llvm-svn: 11927
|
|
|
|
|
|
| |
are beastly ConstantPointerRefs in the way...
llvm-svn: 11883
|
|
|
|
| |
llvm-svn: 11864
|
|
|
|
|
|
| |
not have any globals.
llvm-svn: 11863
|
|
|
|
| |
llvm-svn: 11862
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. Functions do not make things incomplete, only variables
2. Constant global variables no longer need to be marked incomplete, because
we are guaranteed that the initializer for the global will be in the
graph we are hacking on now. This makes resolution of indirect calls happen
a lot more in the bu pass, supports things like vtables and the C counterparts
(giant constant arrays of function pointers), etc...
Testcase here: test/Regression/Analysis/DSGraph/constant_globals.ll
llvm-svn: 11852
|
|
|
|
|
|
| |
local graph that uses the global.
llvm-svn: 11850
|
|
|
|
|
|
|
|
|
|
| |
Make the incompleteness marker faster by looping directly over the globals
instead of over the scalars to find the globals
Fix a bug where we didn't mark a global incomplete if it didn't have any
outgoing edges. This wouldn't break any current clients but is still wrong.
llvm-svn: 11848
|
|
|
|
| |
llvm-svn: 11847
|
|
|
|
| |
llvm-svn: 11846
|
|
|
|
| |
llvm-svn: 11824
|
|
|
|
| |
llvm-svn: 11813
|
|
|
|
|
|
|
| |
Also fix problem where we didn't check to see if a node pointer was null.
Though fclose(null) doesn't make a lot of sense, 300.twolf does it.
llvm-svn: 11810
|
|
|
|
|
|
|
|
|
| |
cheaper.
FIX MAJOR BUG, whereby we didn't merge null edges correctly. Correcting this
fixes poolallocation on 175.vpr, and possibly others.
llvm-svn: 11695
|
|
|
|
|
|
| |
correctly merged over!
llvm-svn: 11693
|
|
|
|
| |
llvm-svn: 11692
|
|
|
|
|
|
|
|
|
| |
BU propagation, clone the globals into the GG of EACH FUNCTION that finishes
processing! The GlobalsGraph *must* include all globals and effects from
all functions in the program. Fixing this makes pool allocation work better
on 175.vpr, but it still ultimately crashes.
llvm-svn: 11686
|
|
|
|
|
|
|
|
| |
end of the BU and CBU passes. The globals will be marked incomplete, so it
doesn't matter if they are missing some info, and merging isn't guaranteed
to bring everything in anyway!
llvm-svn: 11684
|
|
|
|
|
|
| |
printf and scanf families!
llvm-svn: 11683
|
|
|
|
| |
llvm-svn: 11673
|
|
|
|
|
|
|
|
| |
'main' into
the globals graph.
llvm-svn: 11562
|
|
|
|
|
|
| |
Add more special case handling for stdio functions. I feel dirty, how about you?
llvm-svn: 11506
|
|
|
|
| |
llvm-svn: 11503
|
|
|
|
| |
llvm-svn: 11471
|
|
|
|
| |
llvm-svn: 11395
|
|
|
|
|
|
|
|
|
|
| |
of the
operands as incomplete, though fopen is known to only read them. This just adds
fclose for symmetry, though it doesn't gain anything. This makes the dsgraphs for
181.mcf much more precise.
llvm-svn: 11390
|
|
|
|
| |
llvm-svn: 11374
|
|
|
|
|
|
| |
getElementTypes() is gone.
llvm-svn: 11228
|
|
|
|
| |
llvm-svn: 11179
|
|
|
|
|
|
|
|
|
| |
removeDeadNodes is called, only call it at the end of the pass being run.
This saves 1.3 seconds running DSA on 177.mesa (5.3->4.0s), which is
pretty big. This is only possible because of the automatic garbage
collection done on forwarding nodes.
llvm-svn: 11178
|
|
|
|
| |
llvm-svn: 11177
|
|
|
|
| |
llvm-svn: 11176
|
|
|
|
|
|
|
|
|
| |
DSGraphs while they are forwarding. When the last reference to the forwarding
node is dropped, the forwarding node is autodeleted. This should simplify
removeTriviallyDead nodes, and is only (efficiently) possible because we are
using an ilist of dsnodes now.
llvm-svn: 11175
|
|
|
|
|
|
| |
G == 0
llvm-svn: 11174
|