Chris Lattner
f224b6b511
Critical shadow nodes no do not know their parent explictly.
...
llvm-svn: 2084
2002-04-01 00:15:30 +00:00
Chris Lattner
b4648bb38f
Minor cleanups (use dyn_cast instead of testing manually)
...
Shadow nodes now don't explicitly know their parent.
llvm-svn: 2083
2002-04-01 00:14:41 +00:00
Chris Lattner
6b06aa557e
Allow merging of identical call nodes. Make the shadow node pointed to
...
by the call node noncritical before the call is destroyed.
llvm-svn: 2082
2002-04-01 00:13:56 +00:00
Chris Lattner
a7b3b50381
Increase limit for perimeter
...
llvm-svn: 2081
2002-04-01 00:12:58 +00:00
Chris Lattner
71fc90439b
Shadow nodes don't need to know their explicit parent, they just need to
...
know what type to be.
llvm-svn: 2080
2002-04-01 00:12:36 +00:00
Chris Lattner
d63afb418e
Unify the destruction code used for node pairs vs normal nodes. This was
...
causing a problem before because global values with incoming edges didn't
copy the incoming edges to the node they were being merged from, causing
the poolalloc pass to die.
llvm-svn: 2079
2002-03-31 19:57:44 +00:00
Vikram S. Adve
4973f73ad1
1. Fix a leftover bug in generating memory instructions.
...
2. Fix type used for TmpInstruction holding the return address.
llvm-svn: 2075
2002-03-31 19:07:35 +00:00
Vikram S. Adve
02662bd390
Added function getCallInstIndirectAddrVal() to set call interference
...
for that value.
llvm-svn: 2074
2002-03-31 19:04:50 +00:00
Vikram S. Adve
07c874547b
Minor cleanup in printing constants. I think this included a bug
...
fix related to putting a read-write variable in a read-only section,
but I'm not sure now.
llvm-svn: 2073
2002-03-31 19:03:58 +00:00
Vikram S. Adve
429621cad0
Add method getCallInstIndirectAddrVal() to add call interference
...
for this value.
llvm-svn: 2072
2002-03-31 18:58:49 +00:00
Vikram S. Adve
c533f04176
Add method clearCallInterference().
...
llvm-svn: 2071
2002-03-31 18:58:14 +00:00
Vikram S. Adve
f434a9ed5f
Include temp. values when computing max. size of stack frame!
...
llvm-svn: 2070
2002-03-31 18:57:49 +00:00
Vikram S. Adve
5bf8890305
Fix a bug in previous bug fix.
...
llvm-svn: 2069
2002-03-31 18:56:51 +00:00
Vikram S. Adve
aa2373d2ed
Bug fix: address used by indirect call instruction should also
...
be marked as having a Call Interference, even though it may not
be live after the call.
llvm-svn: 2068
2002-03-31 18:54:37 +00:00
Chris Lattner
0dc225cbf6
Add debug output
...
llvm-svn: 2066
2002-03-31 07:17:46 +00:00
Chris Lattner
041468ff3f
* Fix nondeleted type handle which could cause type pool corruption (and
...
a memory leak)
* Fix memory leak of Argument nodes on function prototypes
llvm-svn: 2065
2002-03-31 07:16:49 +00:00
Chris Lattner
d45f4df2ae
* Move the isEquivalentTo implementations here. They can probably be put
...
someplace nicer in the file though.
* Add new dump method for debugging
llvm-svn: 2064
2002-03-31 07:16:08 +00:00
Chris Lattner
49c3ea8c1e
Print out the instruction instead of just the address!
...
llvm-svn: 2063
2002-03-31 07:15:20 +00:00
Chris Lattner
ed9bfd95a9
* Move isEquivalentTo implementations to NodeImpl
...
* Implement a new form of node folding to catch cases missed in Addtree
* Add removeIndistinguishableNodePairs to merge calls (todo) and globals
llvm-svn: 2062
2002-03-31 07:14:52 +00:00
Chris Lattner
a2cdaba6ed
* Convert CallMap to be a vector, because the keys can change, and the map
...
doesn't resort!
* Be more generous with the cached matches that we allow now.
* Recursive calls should all work now!
llvm-svn: 2061
2002-03-31 07:13:27 +00:00
Chris Lattner
aeef4cbb21
* Allow access to DSNode iterator as DSNode::iterator/begin/end
...
* Add debugging "dump" method to DSNode
* Fix bugs in DSNode iterator
llvm-svn: 2060
2002-03-31 07:11:20 +00:00
Vikram S. Adve
bd4e68c280
Fix CreateUIntSetInstruction() to handle sign extensions correctly.
...
llvm-svn: 2059
2002-03-31 00:13:12 +00:00
Chris Lattner
847b6e2ee7
* Catch and ignore (for now) return instructions in tranformed functions
...
* Add more debugging output
* Fix problems refering to wrong versions of various graphs
* Build the pool descriptor map!
* Clear the nodemapping map after building pool descriptor to avoid assert
* Transform the NEw function body, not the old one...
* Matrix.ll now works!
llvm-svn: 2058
2002-03-30 20:53:14 +00:00
Chris Lattner
a84b29784e
Initial checkin of file:
...
Define an iterator to operate over data structure outgoing links and
graph implementation so generic graph functions can be used.
llvm-svn: 2057
2002-03-30 09:13:23 +00:00
Chris Lattner
ca9f4d39f3
* Clean up data structures [AllocDSNode -> DSNode]
...
* TransformFunctionInfo now has call field form field mapping. May be
removed in the future.
* Moved the computation of "Scalars" into transformFunctionBody so
transformFunction didn't have to recompute it.
* Implement the node mapping calculation in preparation to calculate
PoolDescriptors to pass to transformFunctionBody
* Print out the node mapping [it looks right!]
* Other minor changes
llvm-svn: 2056
2002-03-30 09:12:35 +00:00
Chris Lattner
79f148ddbc
Add accessors and a method to get all the outgoing links for ALL nodes
...
llvm-svn: 2055
2002-03-30 09:07:51 +00:00
Chris Lattner
104dd00d74
Add an accessor
...
llvm-svn: 2054
2002-03-30 04:02:41 +00:00
Chris Lattner
396d5d7c62
Maintain enough information so that the pools for all of the nodes of
...
the graph can be passed around.
llvm-svn: 2053
2002-03-30 04:02:31 +00:00
Chris Lattner
f32d65d5ca
Implement the first batch of transformations to the methods. So far it:
...
* Converts malloc instructions to poolalloc
* Converts free instructions to poolfree
* Convert calls to call the new cloned hacked up versions
Note that this does not modify hacked up stuff yet, just the top level
function
llvm-svn: 2052
2002-03-29 21:25:19 +00:00
Chris Lattner
619dc920df
Add a hook to allow the datastructure to keep naturally up to date, even
...
though it's not entirely fleshed out.
llvm-svn: 2051
2002-03-29 21:23:29 +00:00
Chris Lattner
3e6e3e6bce
* s/Method/Function
...
* Implement a check to make sure a function is not internal and external
at the same time
llvm-svn: 2050
2002-03-29 19:06:18 +00:00
Chris Lattner
291a1b1eb2
Correctly clone the function with the extra argument types. Now we need
...
to modify the function next.
This also properly recycles functions so that we don't get exponential
code blowup in the common case.
llvm-svn: 2049
2002-03-29 19:05:48 +00:00
Chris Lattner
f50cffce10
s/Method/Function
...
llvm-svn: 2048
2002-03-29 19:04:45 +00:00
Chris Lattner
8fea42d955
Add more accessors
...
llvm-svn: 2047
2002-03-29 19:04:19 +00:00
Chris Lattner
0623f2984f
Checkin new useful routine
...
llvm-svn: 2046
2002-03-29 19:04:08 +00:00
Chris Lattner
16bfdb5f02
New clone function routine
...
llvm-svn: 2045
2002-03-29 19:03:54 +00:00
Chris Lattner
692ad5d9bd
Find out which calls in the function we need to transform and how.
...
Next step is to start hacking functions up.
llvm-svn: 2044
2002-03-29 17:13:46 +00:00
Chris Lattner
15deaa0ab9
s/Method/Function
...
llvm-svn: 2043
2002-03-29 17:08:29 +00:00
Chris Lattner
adbb711895
Rename getCalledMethod to getCalledFunction
...
llvm-svn: 2042
2002-03-29 17:08:01 +00:00
Chris Lattner
b388895b0a
Remove getCalledMethod. Use getCalledFunction instead
...
llvm-svn: 2041
2002-03-29 17:07:34 +00:00
Chris Lattner
66df97d436
Modularize code a bit
...
llvm-svn: 2040
2002-03-29 06:21:38 +00:00
Chris Lattner
e0618ca2bd
Implement the first step of pool allocation - Creating, initialization, and
...
destruction of the pools.
llvm-svn: 2039
2002-03-29 05:50:20 +00:00
Chris Lattner
5c1f41eb97
Add an insert method to VAlueHolder to allow batch insertion
...
llvm-svn: 2038
2002-03-29 05:49:37 +00:00
Chris Lattner
13ae72f175
Add new addTypeName method to Module class
...
llvm-svn: 2037
2002-03-29 04:48:40 +00:00
Chris Lattner
f94811af13
s/Method/Function
...
llvm-svn: 2036
2002-03-29 03:57:15 +00:00
Chris Lattner
ff87436f48
s/Method/Function
...
llvm-svn: 2035
2002-03-29 03:51:11 +00:00
Chris Lattner
91db58298a
s/Method/Function
...
llvm-svn: 2034
2002-03-29 03:44:36 +00:00
Chris Lattner
a483b0616a
Implement new getFunction and getOrInsertFunction methods
...
llvm-svn: 2033
2002-03-29 03:44:18 +00:00
Chris Lattner
c46dcca220
Simplify code a bit by using Module::getOrInsertFunction
...
llvm-svn: 2032
2002-03-29 03:43:24 +00:00
Chris Lattner
175f37c47b
Flesh out a bunch more code, print allocations that are poolable.
...
llvm-svn: 2031
2002-03-29 03:40:59 +00:00