Chris Lattner
5206a78804
simplify-cfg is really a function pass
...
llvm-svn: 8868
2003-10-05 19:14:16 +00:00
Chris Lattner
e2a7875d26
Be more careful handling PHI nodes, which might be of potentially high degree.
...
This reduces the time to verify a function from eon with a large number of
large PHI nodes from 22996s (6.38 hours) to 10.5499s
llvm-svn: 8866
2003-10-05 17:44:18 +00:00
Chris Lattner
ada012bfcd
The first PHI node may be null, scan for the first non-null one
...
llvm-svn: 8865
2003-10-05 05:34:39 +00:00
Chris Lattner
a5fd39ee21
The VersionNumbers vector is only used during PHI placement. Turn it into an argument, allowing us to get rid of the vector.
...
llvm-svn: 8864
2003-10-05 04:33:22 +00:00
Chris Lattner
4877c37b80
* Update file header comment
...
*** Revamp the code which handled unreachable code in the function. Now the
code is much more efficient for high-degree basic blocks, such as those
that occur in the 252.eon SPEC benchmark.
For the interested, the time to promote a SINGLE alloca in _ZN7mrScene4ReadERSi
function used to be > 3.5s. Now it is < .075s. The function has a LOT of
allocas in it, so it appeared to be infinite looping, this should make it much
nicer. :)
llvm-svn: 8863
2003-10-05 04:26:39 +00:00
Chris Lattner
baba417853
Simplify the loop a bit
...
llvm-svn: 8862
2003-10-05 03:45:44 +00:00
Chris Lattner
59281d3581
There is no need for separate WriteSets and PhiNodeBlocks lists. It is just a
...
work-list of value definitions. This allows elimination of the explicit
'iterative' step of the algorithm, and also reuses temporary memory better.
llvm-svn: 8861
2003-10-05 03:39:10 +00:00
Chris Lattner
5958d93c95
The PhiNodes 2D vector is only used during PHI node placement. It doesn't
...
need to be an instance variable!
llvm-svn: 8860
2003-10-05 03:26:25 +00:00
Chris Lattner
91d69f2693
* Document instance vars better
...
* Fuse two parallel loops
* Use a more specific type for AllocaLookup
llvm-svn: 8859
2003-10-05 03:16:07 +00:00
Chris Lattner
773a1c4474
Two small cleanups/speedups:
...
* Do not insert a new entry into NewPhiNodes during the rename pass if there are no PHIs in a block.
* Do not compute WriteSets in parallel
llvm-svn: 8858
2003-10-05 02:37:36 +00:00
Chris Lattner
9f0a542057
* Minor cleanups
...
* Eliminate the KillList instance variable, instead, just delete loads and
stores as they are "renamed", and delete allocas when they are done
* Make the 'visited' set an instance variable to avoid passing it on the stack.
llvm-svn: 8857
2003-10-05 01:52:53 +00:00
Chris Lattner
dcefc3244a
A couple of minor code cleanups.
...
Print literal doubles using ftostr instead of <<, because it yields higher precision numbers.
llvm-svn: 8855
2003-10-05 00:40:51 +00:00
Chris Lattner
b5f0d32b91
Type tables are now AbstractTypeUsers. This allows them to merge together
...
constants as necessary due to type resolution. With this change, the
following spec benchmarks now link: 176.gcc, 177.mesa, 252.eon,
253.perlbmk, & 300.twolf. IOW, all SPEC INT and FP benchmarks now link.
llvm-svn: 8853
2003-10-05 00:17:43 +00:00
Chris Lattner
def80d731a
Rename AbstractModuleProvider -> ModuleProvider, to match the header file name,
...
and because, while the class used by the interface is abstract, the actual
concept is not.
llvm-svn: 8850
2003-10-04 20:14:59 +00:00
Chris Lattner
7a9db7a722
Transform two methods to return pointers directly instead of returning them
...
as 'by reference' arguments.
llvm-svn: 8849
2003-10-04 20:00:03 +00:00
Chris Lattner
0e866f36a0
Use V for values, not D.
...
llvm-svn: 8848
2003-10-04 19:29:21 +00:00
Chris Lattner
2b8c4bf029
Do not leak the ModuleProvider if releaseModule() throws.
...
llvm-svn: 8847
2003-10-04 19:19:37 +00:00
Chris Lattner
06dbcc0540
Minor random speedup: make Constant::getNullValue only call ConstantFOO::get
...
once!
llvm-svn: 8845
2003-10-03 19:34:51 +00:00
Chris Lattner
f66ac75a94
Explicit copy ctors are no longer needed
...
llvm-svn: 8844
2003-10-03 19:02:41 +00:00
Chris Lattner
a2c1509b21
Minor cleanups
...
llvm-svn: 8843
2003-10-03 18:57:54 +00:00
Chris Lattner
18c3f42894
This checkin basically amounts to a complete rewrite of the type-resolution
...
machinery. This dramatically simplifies how things works, removes irritating
little corner cases, and overall improves speed and reliability.
Highlights of this change are:
1. The exponential algorithm built into the code is now gone. For example
the time to disassemble one bytecode file from the mesa benchmark went
from taking 12.5s to taking 0.16s.
2. The linker bugs should be dramatically reduced. The one remaining bug
has to do with constant handling, which I actually introduced in
"union-find" checkins.
3. The code is much easier to follow, as a result of fewer special cases.
It's probably also smaller. yaay.
llvm-svn: 8842
2003-10-03 18:46:24 +00:00
Chris Lattner
101d5058cb
These methods are dead, remove them. Because the bodies will soon be
...
ressurected, just ifdef them out for now.
llvm-svn: 8840
2003-10-03 18:39:57 +00:00
Chris Lattner
85444d1dbd
Dramatically simplify DerivedType::refineAbstractTypeToInternal
...
This makes use of the new PATypeHolder's to keep types from being deleted
prematurely, instead of the wierd "self reference" garbage. This is easier
to understand and more efficient as well.
llvm-svn: 8834
2003-10-03 04:48:21 +00:00
Chris Lattner
b217f24289
Make the PATypeHolder use a simple union-find implementation to handle
...
merging of types. This makes it MUCH more efficient than before, also
making things simpler.
llvm-svn: 8833
2003-10-02 23:35:57 +00:00
Chris Lattner
62331c44ab
There is no need for BytecodeParser to be an AbstractTypeUser. Instead, it
...
can just use PATypeHolders
llvm-svn: 8832
2003-10-02 20:26:18 +00:00
Chris Lattner
83856d0df1
There is no reason for Value to be an AbstractTypeUser. This just makes things
...
significantly more complete. Instead, just make DerivedType's AbstractTypeUser's,
and make Value contain a PATypeHolder.
llvm-svn: 8828
2003-10-02 19:44:40 +00:00
Chris Lattner
9f5802fac5
The objects mapped are really PATypeHolders, not PATypeHandles
...
llvm-svn: 8822
2003-10-02 19:00:34 +00:00
Alkis Evlogimenos
a37b58ce09
Moved enum and command-line option in separate file. Also added function that returns the user selected register allocator to the caller.
...
llvm-svn: 8819
2003-10-02 16:57:49 +00:00
Chris Lattner
059033218b
Implement InstCombine/add.ll:test17 & 18
...
llvm-svn: 8817
2003-10-02 15:11:26 +00:00
Alkis Evlogimenos
42a09316bb
Change llc command line for register allocators
...
llvm-svn: 8815
2003-10-02 06:13:19 +00:00
Alkis Evlogimenos
e6fdc87045
Use std::string::size_type for for ColonPos to stop gcc from giving a warning
...
llvm-svn: 8811
2003-10-01 22:49:22 +00:00
Alkis Evlogimenos
a50598c684
Revert previous change. For some reason this went into the main branch
...
llvm-svn: 8805
2003-10-01 19:40:13 +00:00
Alkis Evlogimenos
e3af981096
Added command line option for linear scan allocator
...
llvm-svn: 8804
2003-10-01 19:38:10 +00:00
Misha Brukman
15fd4fd90c
The comment seems irrelevant as the pass has become a BasicBlock pass.
...
llvm-svn: 8803
2003-10-01 05:24:50 +00:00
Chris Lattner
bdca1b438d
Make sure to get the definition of getRegisterAllocator
...
llvm-svn: 8801
2003-09-30 22:24:00 +00:00
Chris Lattner
5509b86d74
RegisterAllocation.h is going away
...
llvm-svn: 8795
2003-09-30 20:15:04 +00:00
Chris Lattner
b0860d88c2
include passes.h which defines the interface this file exposes
...
llvm-svn: 8793
2003-09-30 20:13:59 +00:00
Brian Gaeke
ed1c780821
Add statistic for # of emitWord() calls.
...
llvm-svn: 8772
2003-09-30 17:49:41 +00:00
Misha Brukman
e156f46fa8
Fixed space issues, code alignment, tabs -> spaces.
...
llvm-svn: 8755
2003-09-29 22:40:07 +00:00
Misha Brukman
4d40649e9a
Implementation of the abstraction of running our tools + gcc, taken out of
...
bugpoint for general usage and enjoyment.
llvm-svn: 8754
2003-09-29 22:39:25 +00:00
John Criswell
48274726cd
Removed Support directory. It now lives in llvm/support/lib.
...
llvm-svn: 8739
2003-09-29 16:10:43 +00:00
John Criswell
22cf58bc33
Moved code from llvm/lib/Support to llvm/support/lib/Support.
...
llvm-svn: 8735
2003-09-29 15:02:30 +00:00
Chris Lattner
ae8b7c1a56
Just rethrow previous exception instead of making a new one
...
llvm-svn: 8718
2003-09-26 14:44:52 +00:00
Chris Lattner
222df3cfc5
Define the instance variable Buffer, not the automatic variable Buffer.
...
This was causing us to munmap random stuff, which is obviously bad.
llvm-svn: 8709
2003-09-25 04:13:53 +00:00
Chris Lattner
471405e2ba
DOn't crash if program calls the null pointer
...
llvm-svn: 8708
2003-09-24 23:42:58 +00:00
Chris Lattner
6d9f1022d5
Fix alignment problem
...
llvm-svn: 8707
2003-09-24 22:34:17 +00:00
Chris Lattner
36559daef0
Remove explicit use of BasicBlock::succ_iterator
...
llvm-svn: 8706
2003-09-24 22:18:35 +00:00
Misha Brukman
08e8d47b1e
Actually assign the string correctly through the std::string pointer.
...
llvm-svn: 8704
2003-09-24 22:10:47 +00:00
Chris Lattner
a72fa3ea50
Use global *_iterator
...
llvm-svn: 8703
2003-09-24 22:07:33 +00:00
Chris Lattner
feb17a5fbf
Do not use BasicBlock::*_iterator, just use *_iterator itself.
...
Isn't updating copy and pasted code a joy
llvm-svn: 8702
2003-09-24 22:06:25 +00:00