Chris Lattner
5b7e3cae42
Remove two using decls
...
Remove usage of alloca
llvm-svn: 6725
2003-06-16 22:18:28 +00:00
Brian Gaeke
7a719ed20c
Isolate machine-dependent use of <alloca.h> in "Support/Alloca.h",
...
so that we can easily change its use to be conditional on the result of
an autoconf test later.
llvm-svn: 6723
2003-06-16 21:54:01 +00:00
John Criswell
cfac736363
Included assert.h so that the code compiles under newer versions of GCC.
...
llvm-svn: 6682
2003-06-11 14:01:36 +00:00
Guochun Shi
c40f66c928
add some comments
...
add a function ModuloScheduling::dumpFinalSchedule() to print out final schedule
llvm-svn: 6677
2003-06-10 20:04:30 +00:00
Guochun Shi
f6b88e55ed
add an brief instruction what this pass is
...
llvm-svn: 6676
2003-06-10 20:03:39 +00:00
Guochun Shi
d2656536f5
a simple introduction to this pass
...
llvm-svn: 6675
2003-06-10 20:02:16 +00:00
Guochun Shi
9766f8c3a2
cleaned code
...
add some comments
llvm-svn: 6674
2003-06-10 19:09:00 +00:00
Guochun Shi
2ee8c115d8
delete useless functions
...
add comment
llvm-svn: 6673
2003-06-08 23:16:07 +00:00
Guochun Shi
1ecd0e0228
change DEBUG to DEBUG_PRINT
...
llvm-svn: 6672
2003-06-08 20:40:47 +00:00
Misha Brukman
366494ab0d
Do not hastily change the Opcode from 'r' to 'i' type if we're not actually
...
SETTING the operand to be an immediate or have verified that one of the operands
is really a SignExtended or Unextended immediate value already, which warrants
an 'i' opcode.
llvm-svn: 6662
2003-06-07 02:34:43 +00:00
Chris Lattner
a7c5e0fba3
Fix bug: Jello/2003-06-04-bzip2-bug.ll
...
llvm-svn: 6624
2003-06-05 17:15:04 +00:00
Misha Brukman
4e7bad01ff
I have finally seen the light. The code to change the opcode must live higher in
...
the loop, and in both cases. In the first case, it is a VReg that is a constant
so it may be actually converted to a constant. In the second case, it is already
a constant, but then if it doesn't change its type (e.g. to become a register
and have the value loaded from memory if it is too large to live in its
instruction field), we must change the opcode BEFORE the 'continue', otherwise
we miss the opportunity.
llvm-svn: 6602
2003-06-04 04:54:06 +00:00
Misha Brukman
a6c3f896da
Pass through the emitConstantPool() call to the real emitter.
...
llvm-svn: 6590
2003-06-03 20:00:49 +00:00
Misha Brukman
0cf667165e
Moved code to modify the opcode from 'reg' to 'imm' form to a more logical place.
...
llvm-svn: 6563
2003-06-03 03:18:20 +00:00
Misha Brukman
e7021ad033
Moved FInfo.cpp to lib/Target/Sparc as it is Sparc-specific.
...
llvm-svn: 6554
2003-06-02 23:27:09 +00:00
Chris Lattner
17776f432e
Minor cleanups.
...
This pass should be moved to lib/Target/Sparc since it's sparc specific
It also needs a file comment.
llvm-svn: 6553
2003-06-02 22:57:41 +00:00
Chris Lattner
396680793c
Remove usage of noncopyable classes to clean up doxygen output.
...
In particular these classes are the last that link the noncopyable classes
with the hash_map, vector, and list classes.
llvm-svn: 6552
2003-06-02 22:45:07 +00:00
Chris Lattner
a0a3ef8d21
Add #include
...
llvm-svn: 6550
2003-06-02 22:05:13 +00:00
Misha Brukman
155bdf6993
Removed a useless ofstream.
...
llvm-svn: 6547
2003-06-02 20:49:09 +00:00
Guochun Shi
8dfdb0f68e
compiled with the new SchedGraphCommon
...
llvm-svn: 6545
2003-06-02 17:48:56 +00:00
Misha Brukman
6fd0681010
Remove spurious assert()
...
llvm-svn: 6529
2003-06-02 04:10:41 +00:00
Chris Lattner
0c1475caf0
Changes to be compatible with MachineCodeEmitter.h
...
llvm-svn: 6515
2003-06-01 23:22:11 +00:00
Vikram S. Adve
24ce4d8eb8
Minor changes.
...
llvm-svn: 6470
2003-05-31 07:41:54 +00:00
Vikram S. Adve
ad83684c77
Added MachineCodeForInstruction object as an argument to
...
TmpInstruction constructors because every TmpInstruction object has
to be registered with a MachineCodeForInstruction to prevent leaks.
This simplifies the user's code.
llvm-svn: 6469
2003-05-31 07:41:24 +00:00
Vikram S. Adve
c468882155
Allow explicit physical registers for implicit operands.
...
llvm-svn: 6468
2003-05-31 07:39:06 +00:00
Vikram S. Adve
465f9b6738
Changes to allow explicit physical register arguments that have been
...
preallocated. While reg-to-reg dependences were already handled, this
change required new code for adding edges to/from call instructions.
This was part of the extensive changes to the way code generation occurs
for function call arguments and return values.
See log for CodeGen/PhyRegAlloc.cpp.
llvm-svn: 6467
2003-05-31 07:37:05 +00:00
Vikram S. Adve
a83804a29a
Extensive changes to the way code generation occurs for function
...
call arguments and return values:
Now all copy operations before and after a call are generated during
selection instead of during register allocation.
The values are copied to virtual registers (or to the stack), but
in the former case these operands are marked with the correct physical
registers according to the calling convention.
Although this complicates scheduling and does not work well with
live range analysis, it simplifies the machine-dependent part of
register allocation.
llvm-svn: 6465
2003-05-31 07:32:01 +00:00
Misha Brukman
736e6172dc
When converting virtual registers to immediate constants, change the opcode.
...
llvm-svn: 6452
2003-05-30 20:36:27 +00:00
Misha Brukman
94908b010e
Added saveBBreferences() for BasicBlock resolution.
...
llvm-svn: 6451
2003-05-30 20:32:45 +00:00
Guochun Shi
856ee9154f
so far everything compiles
...
llvm-svn: 6423
2003-05-30 00:17:09 +00:00
Misha Brukman
df88104198
Correctly write out binary data as chars, before they're cast to ints.
...
llvm-svn: 6385
2003-05-28 18:27:19 +00:00
Misha Brukman
cbd4678663
Added a debugging code emitter that prints code to a file, debug to std::cerr,
...
and passes the real code to a memory-outputting code emitter. This may be
removed at a later point in development.
llvm-svn: 6379
2003-05-27 22:43:19 +00:00
Vikram S. Adve
7366fa1aa6
(1) Added special register class containing (for now) %fsr.
...
Fixed spilling of %fcc[0-3] which are part of %fsr.
(2) Moved some machine-independent reg-class code to class TargetRegInfo
from SparcReg{Class,}Info.
(3) Renamed MachienOperand::opIsDef to MachineOperand::opIsDefOnly()
and related functions and flags. Fixed several bugs where only
"isDef" was being checked, not "isDefAndUse".
llvm-svn: 6341
2003-05-27 00:05:23 +00:00
Misha Brukman
7ca74ef252
Cleaned up code layout. No functional changes.
...
llvm-svn: 6304
2003-05-22 21:49:18 +00:00
Misha Brukman
b674a1b95b
Kill `using' directives.
...
llvm-svn: 6301
2003-05-22 21:24:35 +00:00
Chris Lattner
1103e8349d
Use a kill, not a dead definition, update comment
...
llvm-svn: 6131
2003-05-12 17:37:30 +00:00
Chris Lattner
51ae817fd6
* Keep LiveVariable information more up-to-date and consistent
...
* *** Finally mark values that are inputs to PHIs as killed when appropriate.
This should make the generated code quite a bit better. For example, the
local-ra will not have to spill PHI inputs at the end of predecessor BB's
anymore.
llvm-svn: 6117
2003-05-12 14:28:28 +00:00
Chris Lattner
2e50ac75a0
Fix bug where we could iterate off the end of a basic block
...
llvm-svn: 6116
2003-05-12 14:26:38 +00:00
Chris Lattner
584bae4733
* Keep the BBMap around as long as the pass is live
...
* Change getVarInfo to take real virtual register numbers and offset them
itself. This has caused me so much grief, it's not even funny.
llvm-svn: 6115
2003-05-12 14:24:00 +00:00
Chris Lattner
bd854dafec
Fix N^2 algorithm
...
llvm-svn: 6112
2003-05-12 04:08:54 +00:00
Chris Lattner
00ee7cfa83
* Fix several comments
...
* Update LiveVar info better, fixing bug: Jello/2003-05-11-PHIRegAllocBug.ll
llvm-svn: 6110
2003-05-12 03:55:21 +00:00
Chris Lattner
5a78ee85c6
Fix tab infestation!
...
llvm-svn: 6109
2003-05-12 03:54:14 +00:00
Chris Lattner
2274c71150
Allow const functions
...
llvm-svn: 6056
2003-05-09 03:27:41 +00:00
Chris Lattner
c9a4f4c6b4
Add methods for stub function generation
...
llvm-svn: 6054
2003-05-08 21:54:18 +00:00
Chris Lattner
5ab42e5739
Add a vector to keep track of which registers are allocatable. Remove FIXMEs
...
llvm-svn: 6015
2003-05-07 20:08:36 +00:00
Chris Lattner
9eb2172176
Re-add gross hack, it's still necessary. :(
...
llvm-svn: 6012
2003-05-06 21:44:54 +00:00
Chris Lattner
824698b891
Remove hideously nasty hack
...
llvm-svn: 6011
2003-05-06 21:32:39 +00:00
Misha Brukman
e842da3dcc
Debug output should go to cerr, not cout, because that's where bytecode goes.
...
llvm-svn: 6002
2003-05-04 22:51:30 +00:00
Chris Lattner
f22d1f5912
Fix a bug which occurred with empty basic blocks
...
llvm-svn: 5982
2003-05-02 18:44:42 +00:00
Chris Lattner
f641fd08bc
Minor cleanup
...
llvm-svn: 5976
2003-05-01 21:18:47 +00:00
Chris Lattner
6ee2cf5d89
Remove unneccesary &*
...
llvm-svn: 5871
2003-04-23 16:36:11 +00:00
Misha Brukman
3b78995848
Just some code beautification changes I had sitting around in my tree.
...
llvm-svn: 5859
2003-04-22 23:00:08 +00:00
Misha Brukman
a45606276d
Fixed compilation errors, command-line argument declarations, cleaned up code to
...
look nicer and removed useless stuff.
Also renamed a few variables, moved them into namespaces, converted outputting
to a file into a print to std::cerr with a DEBUG() guard, as all passes should
do anyway.
No functional changes have been made. However, this code now compiles.
llvm-svn: 5769
2003-04-10 19:19:23 +00:00
Misha Brukman
218a732724
Made the code readable:
...
* Lines must be wrapped at 80 chars. This is a hard limit.
* Consistent style on functions, braces, if, for, etc. Code must be readable.
No functional changes have been made, even though I added a new typedef.
llvm-svn: 5768
2003-04-09 21:51:34 +00:00
Guochun Shi
b250dc6909
change the include file names and some class names to make it compile
...
llvm-svn: 5764
2003-04-06 23:56:19 +00:00
Guochun Shi
45d8f3279e
*** empty log message ***
...
llvm-svn: 5755
2003-03-27 17:57:44 +00:00
Chris Lattner
eb45c982ae
Print machine frame objects with the frame offset intrinsic to the machine
...
llvm-svn: 5329
2003-01-16 18:35:57 +00:00
Chris Lattner
176866caed
Fix problems with empty basic blocks
...
llvm-svn: 5326
2003-01-16 18:06:43 +00:00
Chris Lattner
c52c791806
Arg, fix bugs in previous checkin...
...
llvm-svn: 5322
2003-01-16 02:24:20 +00:00
Chris Lattner
910ee768d0
Add assertion
...
llvm-svn: 5321
2003-01-16 02:22:08 +00:00
Chris Lattner
86ee825bce
* Insert prolog/epilog code before rewriting indexes
...
* Fix calculation of frame offsets when there is an offset.
llvm-svn: 5318
2003-01-15 22:52:34 +00:00
Chris Lattner
dea36ca100
Move sparc specific code into the Sparc backend
...
llvm-svn: 5317
2003-01-15 21:36:50 +00:00
Chris Lattner
1ff57d914c
Adjust to new interfaces
...
llvm-svn: 5314
2003-01-15 21:14:01 +00:00
Chris Lattner
e46165fcf0
Move headers around
...
llvm-svn: 5312
2003-01-15 21:02:16 +00:00
Chris Lattner
14802a539d
Header is moved into local directory
...
llvm-svn: 5311
2003-01-15 21:00:02 +00:00
Chris Lattner
5f738161ae
Fix bug in previous checkin
...
llvm-svn: 5310
2003-01-15 20:32:15 +00:00
Chris Lattner
c75dc4856e
Add new method
...
llvm-svn: 5309
2003-01-15 20:28:36 +00:00
Chris Lattner
a23969b669
#include RegClass.h explicitly
...
llvm-svn: 5307
2003-01-15 19:57:07 +00:00
Chris Lattner
19a7cb2240
Remvoe dependency on RegClass.h
...
llvm-svn: 5306
2003-01-15 19:56:21 +00:00
Chris Lattner
d840ccd2e0
Prune #includes
...
llvm-svn: 5303
2003-01-15 19:48:13 +00:00
Chris Lattner
46d4d231c5
Minor changes
...
llvm-svn: 5302
2003-01-15 19:47:53 +00:00
Chris Lattner
5da071b265
Remove obsolete ctor
...
llvm-svn: 5301
2003-01-15 19:47:02 +00:00
Chris Lattner
4f7088f6a2
Remove dead code
...
llvm-svn: 5298
2003-01-15 19:22:38 +00:00
Chris Lattner
8128936c33
Use buildmi not MI ctor directly
...
llvm-svn: 5293
2003-01-15 18:08:07 +00:00
Chris Lattner
24c1d5e551
Rename llvm/Analysis/LiveVar/FunctionLiveVarInfo.h -> llvm/CodeGen/FunctionLiveVarInfo.h
...
llvm-svn: 5284
2003-01-14 23:05:08 +00:00
Chris Lattner
de1d729747
Move llvm/Analysis/LiveVar/ValueSet.h to CodeGen/ValueSet.h
...
llvm-svn: 5282
2003-01-14 22:56:37 +00:00
Chris Lattner
b4d58d7f9e
Rename MachineInstrInfo -> TargetInstrInfo
...
llvm-svn: 5272
2003-01-14 22:00:31 +00:00
Chris Lattner
cab0b442f2
New files
...
llvm-svn: 5262
2003-01-13 20:01:16 +00:00
Chris Lattner
cbedb8b400
* Use the PHI Elimination pass
...
llvm-svn: 5220
2003-01-13 00:26:08 +00:00
Chris Lattner
bfa5319eb2
* Convert to use LiveVariable analysis
...
* Convert to use PHIElimination pass
* Don't spill values which have just been reloaded (big win reducing spills)
* Add experimental support for eliminating spills before TwoAddress
instructions. It currently is broken so it is #ifdef'd out.
* Use new "is terminator" flag on instructions instead of looking for
branches and returns explicitly.
llvm-svn: 5219
2003-01-13 00:25:40 +00:00
Chris Lattner
8d2a07ab2f
Convert to MachineFunctionPass
...
llvm-svn: 5218
2003-01-13 00:23:41 +00:00
Chris Lattner
a2ad874c95
Add support for 3 new forms of MachineOperand
...
llvm-svn: 5217
2003-01-13 00:23:24 +00:00
Chris Lattner
c6807e8f5d
Add support for constant pool
...
Add helper methods for MachineFrameInfo
llvm-svn: 5216
2003-01-13 00:23:03 +00:00
Chris Lattner
6178ee9b36
Add support for global address by string and constant pool values
...
llvm-svn: 5215
2003-01-13 00:22:37 +00:00
Chris Lattner
f9781b59ab
More renamings of Target/Machine*Info to Target/Target*Info
...
llvm-svn: 5204
2002-12-29 03:13:05 +00:00
Chris Lattner
42d59219c7
Rename MachineOptInfo to TargetoptInfo
...
Rename MachineCacheInfo to TargetCacheInfo
llvm-svn: 5203
2002-12-29 02:50:35 +00:00
Chris Lattner
ca4362fee7
Rename FunctionFrameInfo to MachineFrameInfo
...
llvm-svn: 5200
2002-12-28 21:08:26 +00:00
Chris Lattner
871e591e34
Rename MachineFrameInfo to TargetFrameInfo.h
...
llvm-svn: 5199
2002-12-28 21:00:25 +00:00
Chris Lattner
c8b36e6362
Initial checkin of Prolog/Epilog code inserter, which is an important part
...
of the abstract frame representation
llvm-svn: 5198
2002-12-28 20:43:30 +00:00
Chris Lattner
bf9d12ac8b
* Convert to be a MachineFunctionPass instance
...
* Use new FunctionFrameInfo object to manage stack slots instead of doing
it directly
* Adjust to new MRegisterInfo API
* Don't take a TM as a ctor argument
* Don't keep track of which callee saved registers are modified
* Don't emit prolog/epilog code or spill/restore code for callee saved regs
* Use new allocation_order_begin/end iterators to simplify dramatically the
logic for picking registers to allocate
* Machine PHI nodes can no longer contain constant arguments
* Use a bitvector to keep track of registers used instead of a set
* Fix problem where explicitly referenced registers would be added to
regsused set and never removed
llvm-svn: 5196
2002-12-28 20:42:14 +00:00
Chris Lattner
b4e4111d75
* Convert to be a MachineFunctionPass instance
...
* Use new FunctionFrameInfo object to manage stack slots instead of doing
it directly
* Adjust to new MRegisterInfo API
* Don't take a TM as a ctor argument
* Don't keep track of which callee saved registers are modified
* Don't emit prolog/epilog code or spill/restore code for callee saved regs
* Use new allocation_order_begin/end iterators to simplify dramatically the
logic for picking registers to allocate
* Machine PHI nodes can no longer contain constant arguments
llvm-svn: 5195
2002-12-28 20:40:43 +00:00
Chris Lattner
fd1ecadb1d
* Add printing support for FrameIndex operands
...
llvm-svn: 5194
2002-12-28 20:37:37 +00:00
Chris Lattner
32525647e1
* A bunch of functionality and data was removed from MachineFunction and put
...
into a new MachineFunctionInfo class
* Implement new FunctionFrameInfo class
llvm-svn: 5193
2002-12-28 20:37:16 +00:00
Chris Lattner
0733616ec7
Frame info moved out of MachineFunction into a seperate object
...
llvm-svn: 5192
2002-12-28 20:35:34 +00:00
Chris Lattner
42714ec1bd
Adjust to simpler spill interface
...
Only spill and reload caller saved registers that are actually modified.
llvm-svn: 5145
2002-12-25 05:05:46 +00:00
Chris Lattner
ee73450749
Adjustments to work with the simpler spill interface
...
llvm-svn: 5144
2002-12-25 05:04:20 +00:00
Chris Lattner
448fb45b2d
Remove dependency on SSARegMap.h by MachineFunction.h
...
llvm-svn: 5143
2002-12-25 05:03:22 +00:00
Chris Lattner
763729c5cd
Substantial fixes to live range handling, fixing several problems, getting
...
strtol to not miscompile, and fixing bug: 2002-12-23-LocalRAProblem.llx
llvm-svn: 5132
2002-12-24 00:04:55 +00:00
Chris Lattner
095eac8109
Fix compilation on GCC 2.96
...
llvm-svn: 5113
2002-12-23 23:44:04 +00:00
Chris Lattner
d4627093de
* Fix several register aliasing bugs
...
* Add a new option to eliminate spilling of registers that are only used
within a basic block.
llvm-svn: 5106
2002-12-18 08:14:26 +00:00
Chris Lattner
dc451c6d27
Implicit defs/uses list may be empty.
...
llvm-svn: 5103
2002-12-18 01:11:14 +00:00
Chris Lattner
ac5f3b3ed3
Use new reginfo interface
...
llvm-svn: 5099
2002-12-17 04:19:40 +00:00
Chris Lattner
0ea32b8dd3
Add prolog/epilog spills/reloads to counters
...
Move X86 specific alignment gunk to X86 files
llvm-svn: 5096
2002-12-17 03:16:10 +00:00
Chris Lattner
4664bd5798
Fix many bugs, regallocator now saves callee-save registers instead of target
...
llvm-svn: 5093
2002-12-17 02:50:10 +00:00
Chris Lattner
0129b86d55
* Fix a gross X86 hack that was intended to avoid allocating SP and BP
...
* Implement register alias set support
llvm-svn: 5082
2002-12-16 17:44:42 +00:00
Chris Lattner
1d84f0a461
Keep the stack frame aligned.
...
llvm-svn: 5081
2002-12-16 17:42:40 +00:00
Chris Lattner
101b8cd9b6
Initial checkin of "local" register allocator. Bugs are still present.
...
llvm-svn: 5078
2002-12-16 16:15:28 +00:00
Chris Lattner
c63d63a7c7
Rename createSimpleX86RegisterAllocator to createSimpleRegisterAllocator.
...
Remvoe some dead code
llvm-svn: 5070
2002-12-16 14:37:00 +00:00
Chris Lattner
bc1e6700eb
Some simpliciations to the spill/reload interface
...
llvm-svn: 5067
2002-12-15 23:01:26 +00:00
Chris Lattner
4e560ee65b
Simplify PHI node elimination significantly by doing it as a prepass to
...
register allocation
llvm-svn: 5066
2002-12-15 22:39:53 +00:00
Chris Lattner
292083aaf5
Variety of small or trivial simplifications to the code, completely eliminated
...
the dependence on PhysRegClassMap
llvm-svn: 5064
2002-12-15 22:19:19 +00:00
Chris Lattner
2af545d034
Remove unused savePhysRegToStack method
...
llvm-svn: 5061
2002-12-15 21:33:51 +00:00
Chris Lattner
ed594b6b20
Localize a map, remove another
...
llvm-svn: 5060
2002-12-15 21:24:30 +00:00
Chris Lattner
1499e5a92c
Give simple reg allocator a nice Pass Name
...
llvm-svn: 5058
2002-12-15 21:13:12 +00:00
Chris Lattner
2979a85984
Add a big assert making sure 2 address instructions are formed right
...
llvm-svn: 5057
2002-12-15 21:02:20 +00:00
Chris Lattner
02e835bf9a
Fix a problem that occurs when PHI nodes have multiple entries for the same predecessor
...
llvm-svn: 5055
2002-12-15 20:48:03 +00:00
Chris Lattner
dfa238f665
Grab bag of minor cleanups. Export some statistics about the number of
...
spills and reloads emitted
llvm-svn: 5054
2002-12-15 20:36:09 +00:00
Chris Lattner
f895418b47
Implement printing of MBB arguments
...
llvm-svn: 5053
2002-12-15 20:35:25 +00:00
Chris Lattner
e2533336f5
Simplify interfaces used by regalloc to insert code
...
llvm-svn: 5052
2002-12-15 20:06:35 +00:00
Chris Lattner
c1c7cc290f
* Simplify code a bit by breaking the PHI node handling stuff out into a seperate
...
function from normal regalloc code
* Make the regalloc for a block a function instead of part of runOnMachineBB, which
makes it easier to see what's going on in runOnMBB.
llvm-svn: 5051
2002-12-15 19:51:14 +00:00
Chris Lattner
f2acd842b4
* Remove some unneccesary instance variables
...
* Make allocateStackSpaceFor only allocate the right amount of space
llvm-svn: 5048
2002-12-15 19:07:34 +00:00
Chris Lattner
b772cd05c5
pull inverse reg class mapping into a class that is sharable and out of the
...
target register description classes.
llvm-svn: 5045
2002-12-15 18:38:59 +00:00
Chris Lattner
cf1955cb16
Prune #includes
...
llvm-svn: 5044
2002-12-15 18:19:24 +00:00
Chris Lattner
1af3af463a
Remove extraneous #includes, perform FIXME
...
llvm-svn: 5043
2002-12-15 18:15:24 +00:00
Chris Lattner
477af9d0fa
Fix borkness with not using MachineBasicBlocks in PHI nodes
...
llvm-svn: 5035
2002-12-15 08:02:51 +00:00
Misha Brukman
a1aa29b125
Fixed a bug where moves due to phis were being neglected.
...
llvm-svn: 5019
2002-12-13 12:33:31 +00:00
Misha Brukman
86ca8840a1
Need to insert all moves due to PHI nodes before *ALL* jumps in a predecessor
...
basic block, as there could be multiple.
llvm-svn: 5016
2002-12-13 11:55:59 +00:00
Misha Brukman
35a358d981
This should be more correct: invalidates physical registers that are used in
...
an instruction to avoid using them to allocate to other virtual registers.
llvm-svn: 5013
2002-12-13 11:33:22 +00:00
Misha Brukman
89ff3fbcd6
Fixed bug with running out of registers. Also, reinstated namespace which
...
disappeared during the last checkin.
llvm-svn: 5007
2002-12-13 10:42:31 +00:00
Misha Brukman
a739167305
This should handle register allocating PHI nodes.
...
llvm-svn: 5002
2002-12-13 09:54:36 +00:00
Misha Brukman
4ef74c8079
Start allocating stack space at [ebp-4] to not overwrite the return address.
...
Also make all loads & stores 4-byte aligned for performance. ;)
llvm-svn: 4982
2002-12-13 04:34:02 +00:00
Misha Brukman
260dbc79fc
Take advantage of our knowledge of 2-address X86 instructions and
...
register-allocated them appropriately.
llvm-svn: 4976
2002-12-12 23:20:31 +00:00
Misha Brukman
160a3da184
Added code generation for function prologues and epilogues.
...
llvm-svn: 4930
2002-12-04 23:58:08 +00:00
Misha Brukman
dbb7b65bf3
Fun arithmetic with iterators aimed at fixing a bug: inserting instructions
...
after the *current* instruction while keeping the iterator in the same
'logical' place.
llvm-svn: 4923
2002-12-04 19:24:45 +00:00
Chris Lattner
57f055f2f2
Print out direct global references
...
llvm-svn: 4906
2002-12-04 06:44:41 +00:00
Misha Brukman
a8ad93221a
This should fix the bug seen with some registers not being allocated
...
correctly: skipping instructions by incorrectly incrementing the pointer.
Also adds support for building a reg-to-regclass map, and splits the function
for saving register to stack into two, one suitable for virtual registers
(which also assigns it a physical register) and one for simply storing back
physical registers.
llvm-svn: 4898
2002-12-03 23:15:19 +00:00
Chris Lattner
bddc6dc5ad
Checkin debug implementation of MCE
...
llvm-svn: 4893
2002-12-03 20:56:42 +00:00
Misha Brukman
2e035d64d1
* Abstracted out stack space allocation into its own function
...
* Added saving of register values to the stack
llvm-svn: 4858
2002-12-02 21:11:58 +00:00
Misha Brukman
60286d0916
A simple (spilling) register allocator.
...
llvm-svn: 4828
2002-11-22 22:44:32 +00:00
Misha Brukman
d5b111a10c
Initialize the SSARegMap.
...
llvm-svn: 4782
2002-11-20 18:55:27 +00:00
Chris Lattner
d8ea18b695
Print is const!
...
llvm-svn: 4737
2002-11-17 23:22:13 +00:00
Chris Lattner
17ec8a8dd0
Remove only uses of markDef/markDefAndUse methods
...
llvm-svn: 4719
2002-11-17 22:14:08 +00:00
Chris Lattner
a2620ac156
Fix warning
...
llvm-svn: 4649
2002-11-09 00:49:43 +00:00
Chris Lattner
36051c0c56
Move function to cpp file from header
...
llvm-svn: 4510
2002-11-02 22:07:51 +00:00
Chris Lattner
dcf31cec85
New iostream definitions
...
llvm-svn: 4482
2002-11-01 16:46:05 +00:00
Vikram S. Adve
8c7b93f7e3
Restore support for indirect function calls (which briefly wasn't working
...
after I removed annotations on MachineInstr for the CallDescriptor).
llvm-svn: 4469
2002-10-31 15:34:48 +00:00
Chris Lattner
6c614a9931
Remove fixme
...
llvm-svn: 4447
2002-10-30 02:02:37 +00:00
Chris Lattner
ac6e97410b
Add special code to make printing SSA form machine instructions nicer
...
llvm-svn: 4446
2002-10-30 01:55:38 +00:00
Chris Lattner
4e9fb1f52e
Use MRegisterInfo, if available, to print symbolic register names
...
llvm-svn: 4438
2002-10-30 00:58:19 +00:00
Chris Lattner
214808f8ac
Implement structured machine code printing
...
llvm-svn: 4435
2002-10-30 00:48:05 +00:00
Chris Lattner
90e64905b9
Make argsize calculation stuff optional, so that Targets without FrameInfo
...
objects yet don't die
llvm-svn: 4427
2002-10-29 23:40:03 +00:00
Chris Lattner
27ccb70df6
Implement autoinserting ctor
...
llvm-svn: 4426
2002-10-29 23:19:00 +00:00
Chris Lattner
bbd68ada1a
Rename annotation id
...
llvm-svn: 4425
2002-10-29 23:18:43 +00:00
Chris Lattner
f4e4ed7612
Merge with sparc backend
...
llvm-svn: 4403
2002-10-29 20:10:58 +00:00
Chris Lattner
8d3e9ab2cf
X86 merge is complete, eliminate unused code
...
llvm-svn: 4400
2002-10-29 20:07:16 +00:00
Vikram S. Adve
a1b4f0f85e
Remove separate vector of implicit refs from MachineInstr, and
...
instead record them as extra operands in the operands[] vector.
Also, move CallArgsDescriptor into this class instead of making it an
annotation on the machine instruction.
llvm-svn: 4399
2002-10-29 19:41:18 +00:00
Vikram S. Adve
db6596e551
Move CallArgsDescriptor into this class instead of making it an
...
annotation on the machine instruction.
llvm-svn: 4398
2002-10-29 19:38:46 +00:00
Chris Lattner
07e26837a9
Move TargetInstrDescriptors extern to the one .cpp file that refers to it:
...
MachineInstr.cpp
llvm-svn: 4392
2002-10-29 17:40:30 +00:00
Chris Lattner
660bf10981
Use higher level methods, don't use TargetInstrDescriptors directly!
...
llvm-svn: 4389
2002-10-29 17:35:39 +00:00
Chris Lattner
50ef1010c0
Use higher level method
...
llvm-svn: 4386
2002-10-29 17:25:41 +00:00
Chris Lattner
76014b97af
Remove #include, misleading comment, and a typedef used only once
...
llvm-svn: 4383
2002-10-29 17:08:05 +00:00
Chris Lattner
6d6d87f3f3
Inline typedef, eliminate unused method
...
llvm-svn: 4382
2002-10-29 17:03:19 +00:00
Chris Lattner
ca0f818347
Remove long dead #if 0
...
llvm-svn: 4381
2002-10-29 17:00:19 +00:00
Chris Lattner
5abe44bb72
Add #includes that were eliminated from headers
...
llvm-svn: 4380
2002-10-29 16:51:05 +00:00
Chris Lattner
189c099a7f
De-inline methods
...
llvm-svn: 4379
2002-10-29 16:50:33 +00:00
Chris Lattner
c9e9d2933d
Remove #include
...
llvm-svn: 4378
2002-10-29 16:50:20 +00:00
Chris Lattner
e9bda57b87
Remove unneeded #include
...
llvm-svn: 4377
2002-10-29 16:50:06 +00:00
Chris Lattner
a13000449e
Remove forward decl
...
llvm-svn: 4376
2002-10-29 16:49:44 +00:00
Chris Lattner
7ecc7af4bd
Make assertIGNode be private to the InterferenceGraph.cpp file
...
llvm-svn: 4375
2002-10-29 16:42:34 +00:00
Chris Lattner
820b037815
MachineInstrInfo no longer #includes this header, so we must
...
llvm-svn: 4366
2002-10-28 23:54:47 +00:00
Chris Lattner
5c7d638208
Remove all traces of the "Opcode Mask" field in the MachineInstr class
...
llvm-svn: 4359
2002-10-28 21:17:20 +00:00
Chris Lattner
bee314fc94
Remove more default arguments that are never used
...
llvm-svn: 4358
2002-10-28 21:02:40 +00:00
Chris Lattner
307fb1a314
Remove default operands that are never used
...
llvm-svn: 4357
2002-10-28 20:59:49 +00:00
Chris Lattner
ca4a9d20b8
* Make MachineOperand ctors private, so MachineOperand can only be created
...
by MachineInstr.
* Add a bunch of new methods to allow incremental addition of operands to the
machine instr instance.
llvm-svn: 4356
2002-10-28 20:48:39 +00:00
Misha Brukman
6be5e92526
Replaced uses of deprecated `MachineFunction::get(BasicBlock *BB)'.
...
llvm-svn: 4351
2002-10-28 20:00:31 +00:00
Chris Lattner
864d279667
Remove two arguments that are never specified
...
llvm-svn: 4348
2002-10-28 19:46:59 +00:00
Chris Lattner
b1e39b5a27
Rename some regalloc fields
...
llvm-svn: 4346
2002-10-28 19:43:23 +00:00
Chris Lattner
c9bd2c38a8
Eliminate usage of MachineBasicBlock::get
...
llvm-svn: 4344
2002-10-28 19:22:04 +00:00
Chris Lattner
76d59276af
Remove usage of MachineBasicBlock::get
...
llvm-svn: 4342
2002-10-28 19:01:16 +00:00
Chris Lattner
967c38f4c5
Remove usage of MachineBasicBlock::get
...
llvm-svn: 4341
2002-10-28 18:50:08 +00:00
Chris Lattner
7421df92cb
Eliminate unneccesary use of MachineBasicBlock::get
...
llvm-svn: 4339
2002-10-28 06:01:57 +00:00
Chris Lattner
ba3a8060ff
s/method/function
...
llvm-svn: 4338
2002-10-28 05:58:46 +00:00
Chris Lattner
8c63b6897d
Change MachineBasicBlock's to not be Annotations, instead they are kept as
...
part of a linked list tracked by MachineFunction. MachineBasicBlock::get
is now linear time instead of constant time, and thus is deprecated!
llvm-svn: 4337
2002-10-28 05:30:46 +00:00
Chris Lattner
881d8b3410
Make Scheduling Class variables be 'unsigned' instead of 'int'
...
llvm-svn: 4333
2002-10-28 04:53:02 +00:00
Chris Lattner
6a30b02b1d
Rename the redundant MachineOperand::getOperandType() to MachineOperand::getType()
...
llvm-svn: 4331
2002-10-28 04:45:29 +00:00
Chris Lattner
340bb96e64
Fairly major overhaul of MachineInstr & Operand classes
...
- Inline methods that are mostly a single line anyway
- Eliminate several methods that were never called
- Group methods a bit more consistently
llvm-svn: 4329
2002-10-28 04:24:49 +00:00
Chris Lattner
9668c8c8db
Add #includes now that MachineInstr.h doesn't include llvm/Target/MachineInstrInfo.h
...
llvm-svn: 4327
2002-10-28 02:28:39 +00:00
Chris Lattner
94a4f22573
Don't #include <Support/*>, #include "Support/*"
...
llvm-svn: 4325
2002-10-28 02:11:53 +00:00
Chris Lattner
2a3bd1c562
*** empty log message ***
...
llvm-svn: 4323
2002-10-28 02:01:37 +00:00
Chris Lattner
658839bafd
MachineFunction now includes MachineBasicBlock so there is no need to
...
reinclude it
llvm-svn: 4322
2002-10-28 02:01:35 +00:00
Chris Lattner
8710aab04c
Rename MachineCodeForBasicBlock to MachineBasicBlock
...
llvm-svn: 4318
2002-10-28 01:41:47 +00:00
Chris Lattner
6fc3ca062d
*** empty log message ***
...
llvm-svn: 4317
2002-10-28 01:41:27 +00:00
Chris Lattner
9baa9ad7c7
Inline some methods from .cpp files into .h files, minor cleanups
...
llvm-svn: 4313
2002-10-28 01:21:55 +00:00
Chris Lattner
8494d08688
Minor cleanups
...
llvm-svn: 4312
2002-10-28 01:16:38 +00:00
Chris Lattner
6d8a6c645c
Move machine code generation/destruction passes out of Sparc.cpp because
...
they are generic
llvm-svn: 4310
2002-10-28 01:12:41 +00:00
Chris Lattner
f9df48d34c
Prune #includes
...
llvm-svn: 4307
2002-10-28 01:02:51 +00:00
Chris Lattner
9f99867c6c
Updates to match misha's changes
...
llvm-svn: 4302
2002-10-28 00:37:53 +00:00
Misha Brukman
7ae7f84cf3
Changed `MachineCodeForMethod' to `MachineFunction'.
...
llvm-svn: 4301
2002-10-28 00:28:31 +00:00
Chris Lattner
9e33759f88
Initial checkin of codegen infrastructure for LLVM-JIT
...
llvm-svn: 4282
2002-10-25 22:54:41 +00:00
Chris Lattner
e97144120d
Tell PassManager that this pass does not invalidate the CFG so that dominator
...
information and Loop info will not have to be recomputed after this runs.
llvm-svn: 4269
2002-10-23 03:30:47 +00:00
Chris Lattner
5ae3bd630d
Ensure definate initialization
...
llvm-svn: 4263
2002-10-22 23:34:11 +00:00
Chris Lattner
ce64eddb71
- Two minor improvements to the MachineInstr class to reduce footprint and
...
overhead: Merge 3 parallel vectors into 1, change regsUsed hash_set to be a
bitvector. Sped up LLC a little less than 10% in a debug build!
llvm-svn: 4261
2002-10-22 23:16:21 +00:00
Vikram S. Adve
f5492b0c5b
Significant improvement: GEP used by a load or store no longer generates
...
a separate ADD; instead just use the indexed load/store instruction!
Also, a bug fix: folding a GEP with a leading non-zero index with
its predecessor was incorrect: now it only happens if the predecessor
is pointing to an indexable type (aka SequentialType).
llvm-svn: 4168
2002-10-14 16:30:55 +00:00
Vikram S. Adve
9e5eb46362
Use vectors instead of hash_maps for issueGaps and conflictLists.
...
These hash lookups were a major sink of time because they happen so often!
Also, add option to disable scheduling.
llvm-svn: 4138
2002-10-13 00:40:37 +00:00
Vikram S. Adve
f8c6e3db55
Major bug fix: was not adding CD edges for RETURNs!
...
llvm-svn: 4137
2002-10-13 00:39:22 +00:00
Vikram S. Adve
3e54d6c3be
Major bug fix: spill code for an instruction in a delay slot was
...
merrily being inserted before/after the instruction!
llvm-svn: 4116
2002-10-11 16:12:40 +00:00
Vikram S. Adve
ffc9dd5c0d
Don't pad variables in stack slots for performance!
...
llvm-svn: 4115
2002-10-11 16:10:53 +00:00
Vikram S. Adve
75b4a29613
Bug fix in folding getElementPtr instructions: don't fold one into
...
a predecessor if it has a non-zero first index and the predecessor
ends with a struct index.
llvm-svn: 3982
2002-09-29 22:55:05 +00:00
Vikram S. Adve
be55f2dd2c
Convert DIRS to PARALLEL_DIRS. They can be built independently.
...
llvm-svn: 3972
2002-09-29 11:52:14 +00:00
Vikram S. Adve
9011903ee2
Added a couple of helper methods for live range construction.
...
llvm-svn: 3970
2002-09-28 17:05:43 +00:00
Vikram S. Adve
ed2df3ecf8
Live ranges for Return value and return address of a Call are now
...
created here, simply by handling all implicit operands (which should
have been done anyway).
llvm-svn: 3969
2002-09-28 17:05:22 +00:00
Vikram S. Adve
8076fe87b7
Fixed method getReturnValue(): it should return NULL if the
...
callee does not return a value.
llvm-svn: 3968
2002-09-28 17:03:54 +00:00
Vikram S. Adve
8fef3b8033
Fixed incorrect assertion: spill code for function ptr should be
...
handled like normal operands, not like other call arguments.
llvm-svn: 3967
2002-09-28 17:02:40 +00:00
Vikram S. Adve
66303bb9a5
Sign-extend integer constants from original type size to 64 bits!
...
llvm-svn: 3958
2002-09-27 14:26:20 +00:00
Vikram S. Adve
5cc5d4b19a
Add method IGNode::getCombinedDegree to count the sum of the degrees
...
of two nodes, excluding duplicates.
llvm-svn: 3848
2002-09-20 00:55:04 +00:00
Vikram S. Adve
e6ee32bfe2
Add PostOpts/ and rename PreSelection/ to PreOpts/.
...
llvm-svn: 3847
2002-09-20 00:53:53 +00:00
Vikram S. Adve
97c348d9ec
Add method MachineInstr::replace to rewrite a machine instruction in place.
...
llvm-svn: 3843
2002-09-20 00:47:49 +00:00
Vikram S. Adve
e008b2d62e
Allow copy coalescing in more cases: if sum of node degrees is more than
...
than #available regs, compute the sum excluding duplicates and if that
is less than #regs, go ahead and coalesce.
Add method IGNode::getCombinedDegree to count excluding duplicates.
llvm-svn: 3842
2002-09-20 00:45:47 +00:00
Vikram S. Adve
5e1c434572
Peephole optimization pass on final machine code.
...
llvm-svn: 3840
2002-09-20 00:42:11 +00:00
Vikram S. Adve
a50098d8e4
Files moved to CodeGen/PreOpts.
...
llvm-svn: 3839
2002-09-20 00:30:46 +00:00
Vikram S. Adve
e9ac29b475
Moving these files from Code/PreSelection to here.
...
Original logs for PreSelection.cpp:
revision 1.2
date: 2002/09/17 23:50:32; author: lattner; state: Exp; lines: +1 -3
Don't put default parameter values into .cpp files, it breaks 3.x compilers
revision 1.1
date: 2002/09/16 15:31:13; author: vadve; state: Exp;
New preselection pass that specializes LLVM code for a target machine,
while remaining in legal portable LLVM form and preserving type
information and type safety.
llvm-svn: 3838
2002-09-20 00:29:28 +00:00
Chris Lattner
2d7730e3dd
Don't put default parameter values into .cpp files, it breaks 3.x compilers
...
llvm-svn: 3799
2002-09-17 23:50:32 +00:00
Chris Lattner
077b45d931
Add support for GCC 2.96
...
llvm-svn: 3777
2002-09-17 17:23:09 +00:00
Vikram S. Adve
5ce9e4bc64
Add subdirectory PreSelection.
...
llvm-svn: 3739
2002-09-16 15:32:07 +00:00
Vikram S. Adve
161a507def
New preselection pass that specializes LLVM code for a target machine,
...
while remaining in legal portable LLVM form and preserving type
information and type safety.
llvm-svn: 3738
2002-09-16 15:31:13 +00:00
Vikram S. Adve
751130215f
Dump routine now writes out allocated register numbers if available.
...
llvm-svn: 3737
2002-09-16 15:18:53 +00:00
Vikram S. Adve
e567179aaa
Improve and fix error in allocating stack slots: adjust alignment after adding
...
base address of the relevant region (instead of assuming that each region
is maximally aligned).
llvm-svn: 3736
2002-09-16 15:18:16 +00:00
Vikram S. Adve
03710d247d
Add a version of ChooseRegOrImmed to handle numerical constants
...
introduced by InstrSelection.
llvm-svn: 3735
2002-09-16 15:15:57 +00:00
Vikram S. Adve
4d66e9973f
Add an assertion.
...
llvm-svn: 3734
2002-09-16 15:13:59 +00:00
Vikram S. Adve
580b851d23
Fix typos in previous checkin.
...
llvm-svn: 3726
2002-09-15 15:33:48 +00:00
Chris Lattner
a73d6653f6
RegAllocCommon no longer includes CommandLine.h so we have to include it
...
here.
llvm-svn: 3725
2002-09-15 07:07:55 +00:00
Vikram S. Adve
0e56b36b53
Break RA_DEBUG option into several levels to get better control over
...
debug output.
llvm-svn: 3724
2002-09-14 23:05:33 +00:00
Vikram S. Adve
d171a8c7c5
Remove unnecessary include.
...
llvm-svn: 3723
2002-09-14 23:04:52 +00:00
Vikram S. Adve
c9f1e71360
Break RA_DEBUG option into several levels to get better output.
...
llvm-svn: 3722
2002-09-14 22:18:37 +00:00
Vikram S. Adve
a8f926c0c1
Moving to lib/CodeGen/RegAlloc.
...
llvm-svn: 3718
2002-09-14 11:57:17 +00:00
Chris Lattner
5fb1fee605
Fix a bug I introduced into the code generator. :(
...
llvm-svn: 3694
2002-09-12 20:27:10 +00:00
Chris Lattner
b9d9e0ff8d
- Change getelementptr instruction to use long indexes instead of uint
...
indexes for sequential types.
llvm-svn: 3681
2002-09-11 01:21:29 +00:00
Chris Lattner
74946507fc
Make sure the leakdetector is told about temporary Phi nodes also, so it doesn't
...
erroneously report them as leaks
llvm-svn: 3624
2002-09-08 21:19:29 +00:00
Chris Lattner
16d4c60600
Inform the memory leak detector that TmpInstruction objects should not be
...
subject to memory leak checking.
llvm-svn: 3623
2002-09-08 21:08:43 +00:00
Chris Lattner
b0b412e66e
- Renamed Type::isIntegral() to Type::isInteger()
...
- Added new method Type::isIntegral() that is the same as isInteger, but
also accepts bool.
llvm-svn: 3574
2002-09-03 01:08:28 +00:00
Anand Shukla
bcba516097
moved this file from lib/Reoptimizer/Mapping
...
llvm-svn: 3519
2002-08-27 22:47:33 +00:00
Anand Shukla
2762328f9e
Makefile for new sub directory
...
llvm-svn: 3518
2002-08-27 22:46:38 +00:00
Anand Shukla
fe9eda7fb1
Added Mapping subdir
...
llvm-svn: 3517
2002-08-27 22:45:49 +00:00
Vikram S. Adve
872c7f9a9e
Use newly-added type inspection support in InstTreeNode subclasses.
...
llvm-svn: 3501
2002-08-24 21:02:09 +00:00
Vikram S. Adve
8c1e3f7310
Moved code here to extract memory instruction indices and to check
...
whether FoldGetElemNodes should be called. This is machine-independent
but was in the Sparc directory. This is in a new function: GetMemInstArgs.
llvm-svn: 3500
2002-08-24 21:00:08 +00:00
Anand Shukla
492a263ffd
Added #include <alloca.h>
...
llvm-svn: 3491
2002-08-23 10:54:26 +00:00
Chris Lattner
dfb3a2cd07
Eliminated the MemAccessInst class, folding contents into GEP class.
...
llvm-svn: 3487
2002-08-22 23:37:20 +00:00
Vikram S. Adve
3f76984952
dumpNode() does not need to print MachineInstrs.
...
llvm-svn: 3444
2002-08-22 02:59:46 +00:00
Vikram S. Adve
3db97eb499
Unary Not (boolean and bitwise) is no longer a separate LLVM instruction
...
but is instead implemented with XOR. Note that the InstrForest opLabels
for Not and BNot remain the same, i.e., the XOR is recognized and
represented as a (boolean or bitwise) Not when building the instruction
trees. But these tree nodes are now binary, not unary.
llvm-svn: 3343
2002-08-15 14:19:22 +00:00
Vikram S. Adve
fa99db77a8
Add method MachineInstr::substituteValue() which substitutes
...
one Value with another one in all operands and implicit references
of the machine instruction.
llvm-svn: 3306
2002-08-14 16:52:58 +00:00
Chris Lattner
959a5fbf8e
* Removed extraneous #includes
...
* Fixed file headers to be consistent with the rest of LLVM
* Other minor fixes
llvm-svn: 3278
2002-08-09 20:08:06 +00:00
Chris Lattner
02e7a86fec
* Removed extraneous #includes
...
* Fixed file headers to be consistent with the rest of LLVM
* Other minor fixes
llvm-svn: 3277
2002-08-09 20:08:03 +00:00
Chris Lattner
3c3457ccea
We are using std::vector, so remove extraneous namespace prefixes
...
llvm-svn: 3275
2002-08-09 20:05:34 +00:00
Chris Lattner
e08000ac9f
Very minor cleanups
...
llvm-svn: 3271
2002-08-09 18:55:18 +00:00
Chris Lattner
f0ed55d1ee
- Cleaned up the interface to AnalysisUsage to take analysis class names
...
instead of ::ID's.
- Pass::getAnalysis<> now no longer takes an optional argument
llvm-svn: 3265
2002-08-08 19:01:30 +00:00
Chris Lattner
40eb9dafed
- Cleaned up the interface to AnalysisUsage to take analysis class names
...
instead of ::ID's.
- Pass::getAnalysis<> now no longer takes an optional argument
llvm-svn: 3264
2002-08-08 19:01:28 +00:00
Vikram S. Adve
1a1c3ed56d
Add function GetConstantValueAsUnsignedInt.
...
Fix 2 bugs in FoldGetElemChain so index vector is not modified
when no GEPs are folded in, and so a hasLeadingZero is computed
only for the last folded GEP, not the one after that if any.
llvm-svn: 3244
2002-08-04 20:49:49 +00:00
Chris Lattner
4bc962d1d5
* Move InstructionSelection Pass here instead of living in Sparc.cpp. It
...
is platform independant afterall.
* Object orientize the functions, cleanup code a bit. Instead of static
global functions, the helpers for instruction selection are now part of
the InstructionSelection Pass class.
llvm-svn: 3147
2002-07-30 03:57:36 +00:00
Chris Lattner
05e148710e
Remove unused vector
...
llvm-svn: 3143
2002-07-30 02:52:40 +00:00
Chris Lattner
e38dce72a7
Refix stuff for GCC 2.95, 3.0.4 & 3.1
...
llvm-svn: 3094
2002-07-25 18:04:48 +00:00
Mehwish Nagda
7a167de851
now removes deleted nops from MachineCodeForInstruction
...
llvm-svn: 3090
2002-07-25 17:31:05 +00:00
Chris Lattner
10073a9080
*** empty log message ***
...
llvm-svn: 3075
2002-07-25 06:17:51 +00:00
Chris Lattner
6c21f2454b
*** empty log message ***
...
llvm-svn: 3058
2002-07-24 21:21:33 +00:00
Chris Lattner
e583333ec9
Non-standard hash classes are not in the std:: namespace
...
llvm-svn: 3057
2002-07-24 21:21:33 +00:00
Chris Lattner
e98dd5fcac
*** empty log message ***
...
llvm-svn: 3056
2002-07-24 21:21:32 +00:00
Mehwish Nagda
c4ffab60d5
moving to the Reoptimizer/Mapping dir
...
llvm-svn: 2993
2002-07-22 22:10:55 +00:00
Chris Lattner
f5cad15a67
*** empty log message ***
...
llvm-svn: 2985
2002-07-22 02:10:13 +00:00
Mehwish Nagda
0644a84a5f
changed size computation
...
llvm-svn: 2974
2002-07-19 22:54:08 +00:00
Mehwish Nagda
98b9e48981
added check for Function with 0 BB
...
llvm-svn: 2942
2002-07-17 23:40:33 +00:00
Mehwish Nagda
81264e6bed
Now will profile all Basic Blocks
...
llvm-svn: 2922
2002-07-16 17:48:27 +00:00
Mehwish Nagda
6c9544a2a0
Initial checking : Writes LLVM - MI mappiing to the .s file
...
llvm-svn: 2911
2002-07-15 23:08:49 +00:00
Anand Shukla
3de6fcfdec
added std:: to endl
...
llvm-svn: 2875
2002-07-11 00:17:17 +00:00
Vikram S. Adve
6a36c8f2b9
Fix print of BB name in dump().
...
llvm-svn: 2861
2002-07-10 21:45:30 +00:00
Vikram S. Adve
f089faa7f6
Add support for marking each operand as a %hh, %hm, %lm or %lo.
...
Represent previous bools and these ones with flags in a single byte
per operand.
llvm-svn: 2860
2002-07-10 21:45:04 +00:00
Anand Shukla
046fe57511
changed mem_fun to std::mem_fun
...
llvm-svn: 2847
2002-07-09 19:18:56 +00:00
Vikram S. Adve
7228f0c404
Significant changes to correctly spill CC registers and to correctly
...
handle conditional move instructions:
-- cpMem<->Reg functions now support CC registers (int and FP) correctly.
-- Scratch registers must be explicitly provided to cpMem<->Reg when
needed, since CC regs need one to be copied to/from memory.
-- CC regs are saved to a scratch register instead of stack.
-- All regs used by a instruction are now recorded in MachineInstr::regsUsed,
since regs used to save values *across* an instruction are not obvious
either from the operands or from the LiveVar sets.
-- An (explicit or implicit) operand may now be both a def and a use.
This is needed for conditional move operations.
So an operand may need spill code both before and after the instruction.
-- class MachineCodeForBasicBlock is now an annotation on BasicBlock.
llvm-svn: 2833
2002-07-08 23:15:32 +00:00
Vikram S. Adve
1dfb4079b7
MachineInstr* in vector are not const (and never really were)
...
because operands may be modified directly to set register.
Also, class MachineCodeForBasicBlock is now an annotation on BasicBlock.
llvm-svn: 2832
2002-07-08 23:07:26 +00:00
Vikram S. Adve
35bac4a658
Rename static struct Initializer to avoid name conflict with BB.
...
llvm-svn: 2831
2002-07-08 23:04:31 +00:00
Vikram S. Adve
4180fe41c2
Fix printing of BB in dump.
...
llvm-svn: 2830
2002-07-08 23:03:54 +00:00
Vikram S. Adve
2bd7ae169d
Moved class MachineCodeForBasicBlock to MachineCodeForBasicBlock.h.
...
This class is now an annotation on BasicBlock.
llvm-svn: 2829
2002-07-08 23:03:10 +00:00
Vikram S. Adve
a9c93af49f
MachineInstr::dump() now takes no arguments.
...
llvm-svn: 2828
2002-07-08 23:01:46 +00:00
Vikram S. Adve
f0b84cefb0
Implementation of class MachineCodeForBasicBlock.
...
Moved here from MachineInstr.cpp to make it an annotation on BasicBlock.
llvm-svn: 2827
2002-07-08 23:01:11 +00:00
Vikram S. Adve
19c55db0d9
A single MachineInstr operand may now be both a def and a use,
...
so additional dep. edges have to be added.
This was needed to correctly handle conditional move instructions!
MachineCodeForBasicBlock is now an annotation on BasicBlock.
Renamed "earliestForNode" to "earliestReadyTimeForNode".
llvm-svn: 2826
2002-07-08 22:59:23 +00:00
Vikram S. Adve
beb364051b
getUsableUniRegAtMI interface simplified slightly.
...
llvm-svn: 2822
2002-07-08 22:39:36 +00:00
Vikram S. Adve
6c013a9689
Moved class MachineCodeForBasicBlock to MachineCodeForBasicBlock.{cpp,h}.
...
An (explicit or implicit) operand may now be both a def and a use.
Also add a set of regs used by each instruction.
dump() no longer takes an optional argument, which doesn't work in gdb.
llvm-svn: 2821
2002-07-08 22:38:45 +00:00
Vikram S. Adve
ff045b2e18
MachineInstr* in vector are not const (and never really were)
...
because operands may be modified directly to set register.
llvm-svn: 2820
2002-07-08 22:34:40 +00:00
Chris Lattner
dec26513ad
Remove tag that just clutters diffs
...
llvm-svn: 2807
2002-06-30 16:08:25 +00:00
Anand Shukla
458496c060
changes to make it compatible with 64bit gcc
...
llvm-svn: 2791
2002-06-25 20:55:50 +00:00
Chris Lattner
113f4f4609
MEGAPATCH checkin.
...
For details, See: docs/2002-06-25-MegaPatchInfo.txt
llvm-svn: 2779
2002-06-25 16:13:24 +00:00
Chris Lattner
7076ff29ed
MEGAPATCH checkin.
...
For details, See: docs/2002-06-25-MegaPatchInfo.txt
llvm-svn: 2778
2002-06-25 16:13:21 +00:00
Chris Lattner
abe98198a8
Convert RegClass::IsColorUsedArr from a dynamically allocated array to
...
a vector. This makes asserting on array bounds easier.
llvm-svn: 2731
2002-05-23 15:50:03 +00:00
Chris Lattner
afc86e9a35
Move debug options out of header files so that the header does not have
...
to #include CommandLine.h.
llvm-svn: 2712
2002-05-22 17:08:27 +00:00
Chris Lattner
d5ed3694ae
Avoid #including CommandLine.h
...
llvm-svn: 2710
2002-05-22 17:06:56 +00:00
Chris Lattner
99bd13b415
Hide debugging options
...
llvm-svn: 2676
2002-05-20 21:39:10 +00:00
Chris Lattner
9af99f8c74
Don't lose namespace qualifications on previous patch.
...
llvm-svn: 2664
2002-05-20 17:38:26 +00:00
Vikram S. Adve
5d78db2afb
InstrnsBefore and InstrnsAfter are now vectors instead of deques.
...
May be slightly less efficient but significantly reduces special
cases interfaces in code generation.
llvm-svn: 2649
2002-05-19 15:41:33 +00:00
Vikram S. Adve
16384011d2
Better folding getelementptr operations with mixed
...
array and struct indexes.
Update operand values in CallArgsDescriptor (a new class)
when replacing constant values with immediates.
llvm-svn: 2645
2002-05-19 15:34:29 +00:00
Vikram S. Adve
069d51612f
cpValue2Value now needs a vector of MachineInstr to store return values.
...
llvm-svn: 2644
2002-05-19 15:31:08 +00:00
Vikram S. Adve
1e45411a31
Annotation class for MachineInstr.
...
llvm-svn: 2643
2002-05-19 15:30:21 +00:00
Vikram S. Adve
2780d2dacb
Numerous bug fixes:
...
-- passing FP arguments to functions with more than 6 arguments
-- passing FP arguments to varargs functions
-- passing FP arguments to functions with no prototypes
-- incorrect coloring for CC registers (both int and FP): interferences
were being completely ignored for int CC and were considered but no
spills were marked for fp CC!
Also some code improvements:
-- better interface to generating machine instr for common cases
(many places still need to be updated to use this interface)
-- annotations on MachineInstr to communicate information from
one codegen phase to another (now used to pass information about
CALL/JMPLCALL operands from selection to register allocation)
-- all sizes and offests in class TargetData are uint64_t instead of uint
llvm-svn: 2642
2002-05-19 15:29:31 +00:00
Chris Lattner
181cc32365
Replace all usages of Type::isPointerType with isa<PointerType>
...
llvm-svn: 2486
2002-05-06 16:15:30 +00:00
Chris Lattner
70411b074c
Add neccesary #include
...
llvm-svn: 2406
2002-04-29 18:48:55 +00:00
Chris Lattner
d5a847057b
Eliminate duplicate or unneccesary #include's
...
llvm-svn: 2397
2002-04-29 17:42:12 +00:00
Chris Lattner
37104aace8
Add new optional getPassName() virtual function that a Pass can override
...
to make debugging output a lot nicer.
llvm-svn: 2395
2002-04-29 14:57:45 +00:00
Chris Lattner
50cf8f1871
Include appropriate file
...
llvm-svn: 2379
2002-04-28 20:40:16 +00:00
Chris Lattner
ca14237696
Split ConstantVals.h into Constant.h and Constants.h
...
llvm-svn: 2378
2002-04-28 19:55:58 +00:00
Chris Lattner
78dd56fe62
Eliminate the cfg namespace, moving LoopInfo, Dominators, Interval* classes
...
to the global namespace
llvm-svn: 2370
2002-04-28 16:21:30 +00:00
Chris Lattner
002958cdbb
Remove all contents of the cfg namespace to the global namespace
...
llvm-svn: 2369
2002-04-28 16:19:42 +00:00
Chris Lattner
f998685cd9
s/Method/Function
...
llvm-svn: 2336
2002-04-27 07:27:19 +00:00
Chris Lattner
c8e665431b
* Rename MethodPass class to FunctionPass
...
- Rename runOnMethod to runOnFunction
* Transform getAnalysisUsageInfo into getAnalysisUsage
- Method is now const
- It now takes one AnalysisUsage object to fill in instead of 3 vectors
to fill in
- Pass's now specify which other passes they _preserve_ not which ones
they modify (be conservative!)
- A pass can specify that it preserves all analyses (because it never
modifies the underlying program)
* s/Method/Function/g in other random places as well
llvm-svn: 2333
2002-04-27 06:56:12 +00:00
Vikram S. Adve
40221aa74c
Don't record instructions for copying method arguments in the
...
AddedInstrns sets for the first machine instruction. It is hard
to ensure that the right order is preserved, and sure enough, the
order was broken. Instead, use a separate set for the function entry.
llvm-svn: 2318
2002-04-25 04:46:28 +00:00
Vikram S. Adve
7a4b381f80
Don't record instructions for copying method arguments in the
...
AddedInstrns sets for the first machine instruction. It is hard
to ensure that the right order is preserved, and sure enough, the
order was broken. Instead, use a separate set for the function entry.
llvm-svn: 2312
2002-04-25 04:34:15 +00:00
Vikram S. Adve
d79d2c3892
Improve printing during dumps.
...
llvm-svn: 2311
2002-04-25 04:31:18 +00:00
Vikram S. Adve
7092772475
Optional args are no longer allocated as they are discovered.
...
(This can be improved to avoid making the initial pass over the method.)
Also, ensure automatic vars and reg. spills areas are not extended
if their sizes are used for computing some other offset.
llvm-svn: 2310
2002-04-25 04:30:43 +00:00
Chris Lattner
75323bc2d2
Only emit message if DEBUG_RA is on
...
llvm-svn: 2252
2002-04-15 20:36:15 +00:00
Chris Lattner
2e9fa6d101
Move FunctionArgument out of iOther.h into Argument.h and rename class to
...
be 'Argument' instead of FunctionArgument.
llvm-svn: 2216
2002-04-09 19:48:49 +00:00
Chris Lattner
99ac15d154
No need to reserve space, erasing does not change the size of the container.
...
llvm-svn: 2201
2002-04-09 18:01:21 +00:00
Chris Lattner
e8a1a44dd4
* Add a file header with some information
...
* Delete the DelaySlotInfo objects created by the SchedulingManager class.
These leaked objects were accounting for 3/4 of the memory leaked by the
backend, so this is a relatively major win.
* Reorganize SchedulingManager::getDelaySlotInfoForInstr so that it has
better code locality (making it easier to read).
llvm-svn: 2197
2002-04-09 05:45:58 +00:00
Chris Lattner
6c1a58d6ba
Clean up the ownership model a bit so that nodes actually get deleted more
...
frequently. This still leaks edges quite a bit, but it leaks no nodes
(I think).
llvm-svn: 2190
2002-04-09 05:15:33 +00:00
Chris Lattner
30e23dacbc
Convert AddedInstrMapType to contain AddedInstrns by value instead of by
...
pointer so that they do not all get leaked!
llvm-svn: 2188
2002-04-09 05:13:04 +00:00
Chris Lattner
3abd752f90
GCC3.0 is reported to die without an alloca definition.
...
llvm-svn: 2186
2002-04-09 03:37:11 +00:00
Chris Lattner
8690ac124f
Don't leak memory like a seive
...
llvm-svn: 2185
2002-04-08 23:09:07 +00:00
Chris Lattner
aca4d447c9
Value cannot be directly instantiated. I think that this code was TRYING to
...
make a PHI node, although it was badly broken. This keeps tests passing, so
we'll go with it.
llvm-svn: 2184
2002-04-08 22:05:54 +00:00
Chris Lattner
f739fa8541
s/Method/Function
...
llvm-svn: 2180
2002-04-08 22:03:57 +00:00
Chris Lattner
95f65b6f84
s/method/function
...
llvm-svn: 2177
2002-04-08 22:01:15 +00:00
Chris Lattner
62b7fd136e
Change references to the Method class to be references to the Function
...
class. The Method class is obsolete (renamed) and all references to it
are being converted over to Function.
llvm-svn: 2144
2002-04-07 20:49:59 +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
57698e2c0b
Change references from Method to Function
...
change references from MethodARgument to FunctionArgument
llvm-svn: 1991
2002-03-26 18:01:55 +00:00
Vikram S. Adve
7a78ae9dd6
Destroy MethodLiveVarInfo after register allocation.
...
llvm-svn: 1976
2002-03-24 03:54:03 +00:00
Vikram S. Adve
479126b3d3
Use deterministic iterator for SchedGraphs. This is actually not
...
useful right now when we only do local scheduling.
llvm-svn: 1975
2002-03-24 03:53:03 +00:00
Vikram S. Adve
9db158f568
Bug fix: nextToTry was not being initialized in one case.
...
llvm-svn: 1974
2002-03-24 03:46:15 +00:00
Vikram S. Adve
e2a0dfad64
Add option to disable scheduling.
...
llvm-svn: 1973
2002-03-24 03:45:35 +00:00
Vikram S. Adve
c228f7a077
Add option to disable scheduling.
...
Destroy live-variable information after scheduling so it is
recomputed before later phases (e.g., reg. allocation).
Use deterministic iterator to enumerate sched graphs.
llvm-svn: 1972
2002-03-24 03:44:55 +00:00
Vikram S. Adve
90039d0ab9
Minor changes.
...
llvm-svn: 1971
2002-03-24 03:40:59 +00:00
Vikram S. Adve
31a5d3a475
Re-fix bug: Put back MachineCodeForInstruction::dropAllReferences.
...
llvm-svn: 1970
2002-03-24 03:40:11 +00:00
Vikram S. Adve
377646fcfd
Fix padding for variables allocated on stack.
...
llvm-svn: 1969
2002-03-24 03:39:26 +00:00
Vikram S. Adve
dc96167e00
Major overhaul to FoldGetElemPtr to handle mixed array and struct refs.
...
llvm-svn: 1968
2002-03-24 03:37:53 +00:00
Vikram S. Adve
8bc420ec6a
Use deterministic iterator for treeRoots.
...
llvm-svn: 1967
2002-03-24 03:36:52 +00:00
Vikram S. Adve
3228f9cc42
Change treeRoots data structure to make enumeration deterministic.
...
llvm-svn: 1962
2002-03-24 03:24:00 +00:00
Chris Lattner
4e8c4877aa
Rename Method to Function
...
llvm-svn: 1957
2002-03-23 22:51:58 +00:00
Vikram S. Adve
8e01c0b70e
Big bug fix: getUsableUniRegAtMI needed to return values in arguments
...
but did not pass the arguments by reference!
llvm-svn: 1906
2002-03-18 03:37:19 +00:00
Vikram S. Adve
7446b323a7
Added function computeOffsetforLocalVar to check how big the
...
offset-from-FP will be before allocating space for a local variable.
llvm-svn: 1905
2002-03-18 03:36:30 +00:00
Vikram S. Adve
307916c008
Bug fix in setting CC register.
...
Also use distinct names for the three types of SetMachineOperand
to avoid painful overloading problems and errors.
llvm-svn: 1904
2002-03-18 03:35:24 +00:00
Vikram S. Adve
e5842b527d
Constants are now added to the constant pool only when a load
...
instruction is actually generated for them.
Rename the different versions of SetMachineOperand.
llvm-svn: 1903
2002-03-18 03:33:43 +00:00
Vikram S. Adve
d2c71c1d08
Use vector for machine instructions returned by GetInstructionsByRule.
...
Fix constants in instructions generated for Phi elimination.
llvm-svn: 1902
2002-03-18 03:31:54 +00:00
Vikram S. Adve
cecde7122c
Big bug fix: getUsableUniRegAtMI needed to return values in arguments
...
but did not pass the arguments by reference!
Also added a function to get a register class by ID.
llvm-svn: 1901
2002-03-18 03:26:48 +00:00
Anand Shukla
ef5631efba
Change to make it build with GCC 2.95.3
...
llvm-svn: 1802
2002-02-26 18:57:15 +00:00
Chris Lattner
7c7930f59c
* Make it compile with GCC 3.0.4
...
llvm-svn: 1788
2002-02-24 23:01:56 +00:00
Chris Lattner
29a5df81e4
* Silence signed/unsigned warnings
...
* Make it compile with GCC 3.0.4
llvm-svn: 1787
2002-02-24 23:01:50 +00:00
Chris Lattner
83d485b310
* Pull BasicBlock::pred_* and BasicBlock::succ_* out of BasicBlock.h and into
...
llvm/Support/CFG.h
* Make pred & succ iterators for intervals global functions
* Add #includes that are now neccesary because BasicBlock.h doesn't include
InstrTypes.h anymore
llvm-svn: 1750
2002-02-12 22:39:50 +00:00
Chris Lattner
60a6591d83
Method.h no longer includes BasicBlock.h
...
Method::inst_* is now in llvm/Support/InstIterator.h
GraphTraits specializations for BasicBlock and Methods are now in llvm/Support/CFG.h
llvm-svn: 1746
2002-02-12 21:07:25 +00:00
Chris Lattner
ea13e0afa0
Convert operand iterator over to work like an STL iterator
...
llvm-svn: 1720
2002-02-05 06:02:59 +00:00
Chris Lattner
7e5ee4253c
Minor change: Methods that return ValueSet's that are guaranteed to be valid
...
return references instead of pointers.
llvm-svn: 1719
2002-02-05 04:20:12 +00:00
Chris Lattner
d30f989cda
* Code Cleanups
...
* Removal dependencies on Type.h & remove uses of getTypeID()
llvm-svn: 1718
2002-02-05 03:52:29 +00:00
Chris Lattner
f1223ace96
* Code Cleanups of IGNode.h
...
* Removal of getTypeID() methods, and dependence on llvm/Type.h, from IGNode & LiveRange
llvm-svn: 1717
2002-02-05 03:51:37 +00:00
Chris Lattner
101a5d9197
Must include SetOperations to do set_*
...
llvm-svn: 1716
2002-02-05 03:35:53 +00:00
Chris Lattner
b0af9cdbda
* Eliminate the LiveVarSet class, making applyTranferFuncForMInst a static
...
function in the one .cpp file that uses it. Use ValueSet's instead.
* Prepare to delete LiveVarSet.h & LiveVarSet.cpp
* Eliminate the ValueSet class, making all old member functions into global
templates that will eventually be moved to Support.
* Eliminate some irrelevant const's
llvm-svn: 1712
2002-02-05 02:52:05 +00:00
Chris Lattner
b1def732af
* Eliminate the LiveVarSet class, making applyTranferFuncForMInst a static
...
function in the one .cpp file that uses it. Use ValueSet's instead.
* Prepare to delete LiveVarSet.h & LiveVarSet.cpp
* Eliminate the ValueSet class, making all old member functions into global
templates that will eventually be moved to Support.
llvm-svn: 1711
2002-02-05 02:51:01 +00:00
Chris Lattner
30e8fb69c5
* Code Cleanups
...
* Introduce RAV to allow stream I/O instead of using printValue
llvm-svn: 1710
2002-02-05 01:43:49 +00:00
Chris Lattner
3da53ad636
* Add a #include not indirectly included any more
...
llvm-svn: 1707
2002-02-05 00:35:14 +00:00
Chris Lattner
aa7a151874
* RegisterAllocation _uses_ LiveVar analysis, instead of creating it's own copy
...
llvm-svn: 1701
2002-02-04 20:02:38 +00:00
Chris Lattner
6974172717
* The itf exposed by InstrScheduling is now a single function to create the right pass
...
* InstructionScheduling is now a real pass
* InstrSched _uses_ LiveVar analysis, instead of creating it's own copy many times
through a loop. In this was LiveVarAnalysis is actually even SHARED by Register
allocation.
* SchedPriorities is now passed the live var information in
llvm-svn: 1700
2002-02-04 20:02:16 +00:00
Chris Lattner
347a23921a
Switch register allocator over to using LoopInfo directly instead of indirectly through LoopDepthCalculator
...
llvm-svn: 1696
2002-02-04 17:48:00 +00:00
Chris Lattner
8a352d597c
Make LoopDeptCalculator be an internal artifact of how RegAlloc is implemented,
...
do not expose it. Additionally, have it be auto generated by the pass framework
for us.
llvm-svn: 1695
2002-02-04 17:39:42 +00:00
Chris Lattner
669a74ce8a
Make #include "llvm/Analysis/LoopDepth.h" be an internal artifact of how register allocation is implemented.
...
llvm-svn: 1693
2002-02-04 17:38:48 +00:00
Chris Lattner
83a8434eb2
* Add #includes removed from headers
...
* ValueSet interface converted from add/remove to insert/erase
* Minor cleanups
llvm-svn: 1689
2002-02-04 16:36:59 +00:00
Chris Lattner
e630ac9330
Remove dependence on BBLiveVar from InstrScheduling
...
Minor cleanups
llvm-svn: 1688
2002-02-04 16:35:45 +00:00
Chris Lattner
f48173a875
Convert RegisterAllocator interface to opaque pass type, so that users do not
...
need to know _anything_ about RegAlloc to use it. Well in the end maybe.
llvm-svn: 1681
2002-02-04 15:54:09 +00:00
Chris Lattner
49562d8442
Add #includes neccesary since they were removed from .h files
...
llvm-svn: 1675
2002-02-04 05:56:09 +00:00
Chris Lattner
a8171dd554
Move instrIsFeasible from InstrScheduling.h
...
llvm-svn: 1674
2002-02-04 05:55:42 +00:00
Chris Lattner
b0da8b2de1
* Minor cleanups
...
* Reduce number of #includes, sometimes drastically (LiveRangeInfo.h lost _7_)
* Move instrIsFeasible() from InstrScheduling.h to SchedPriorities.h
* Delete blank lines at end of files
llvm-svn: 1672
2002-02-04 05:52:08 +00:00
Chris Lattner
720bc02f18
* Move command line parsing debug stuff to InstrScheduling internal header file
...
SchedPriorities.h
llvm-svn: 1669
2002-02-04 02:44:20 +00:00
Chris Lattner
36aa542ef0
Split RegisterAllocation stuff OUT of Sparc.cpp into a well defined pass
...
that has a very minimal interface (like it should have).
llvm-svn: 1667
2002-02-04 00:33:08 +00:00
Chris Lattner
eda6bd71a0
Code pulled out of MAchineInstr.(h|cpp)
...
llvm-svn: 1660
2002-02-03 07:54:50 +00:00
Chris Lattner
abafc3bc70
Lots of code cleanups, no functional changes
...
llvm-svn: 1650
2002-02-03 07:46:34 +00:00
Chris Lattner
4cec147d4e
* Prune #includes
...
* Remove MachineCodeFor(Method|VMInstr) code to their own .cpp files
llvm-svn: 1649
2002-02-03 07:46:01 +00:00
Chris Lattner
b86d191dbe
* Switch over to cleaner TmpInstruction model
...
llvm-svn: 1648
2002-02-03 07:39:06 +00:00
Chris Lattner
e59929f7b2
* Straighten out #includes
...
* Switch to MAchineCodeForInstruction model instead of MachineCodeForVMInstr
llvm-svn: 1647
2002-02-03 07:33:46 +00:00
Chris Lattner
0068ea26d7
* Swich to annotation model for MachineCodeForInstruction
...
llvm-svn: 1646
2002-02-03 07:31:41 +00:00
Chris Lattner
02d8e37cae
Remove extraneous #includes
...
llvm-svn: 1645
2002-02-03 07:30:08 +00:00
Chris Lattner
a17c469136
* Straighten out #includes
...
* Switch from MachineCodeForVMInstr to MachineCodeForInstruction model
llvm-svn: 1644
2002-02-03 07:29:45 +00:00
Chris Lattner
7c9c85947c
* Get machine instrs from Instructin's by using MachineCodeForInstruction::get
...
* Convert a few (*X). to X->
llvm-svn: 1643
2002-02-03 07:28:30 +00:00
Chris Lattner
6316f38c96
Add a class forward decl
...
llvm-svn: 1637
2002-02-03 07:13:04 +00:00
Chris Lattner
9fcaf328f6
LoopDepth calculation is now in CFG namespace
...
llvm-svn: 1601
2002-01-31 00:41:13 +00:00
Chris Lattner
447fd86599
Make it build with 2.95.3
...
llvm-svn: 1554
2002-01-23 05:47:57 +00:00
Chris Lattner
73da1cea60
Oops lost a parenthesis somehow :(
...
llvm-svn: 1504
2002-01-21 01:33:12 +00:00
Chris Lattner
7f74a56e24
Changes to build successfully with GCC 3.02
...
llvm-svn: 1503
2002-01-20 22:54:45 +00:00
Ruchira Sasanka
bc28455806
Fixed a bug in spill cost estimation
...
llvm-svn: 1500
2002-01-08 16:29:23 +00:00
Ruchira Sasanka
a42a7e78b6
PhyRegAlloc.cpp: Added temp area resetting before every call
...
llvm-svn: 1499
2002-01-07 21:09:06 +00:00
Ruchira Sasanka
8c2d8256a9
Added destructors and comments.
...
Added correct spill candidate selection logic.
llvm-svn: 1493
2002-01-07 19:19:18 +00:00
Ruchira Sasanka
f20079dfed
Added comments, destructors where necessary.
...
llvm-svn: 1491
2002-01-07 19:16:26 +00:00
Vikram S. Adve
cb2335f13f
Eliminate all uses of memInst->getIndicesBROKEN().
...
llvm-svn: 1485
2001-12-15 00:36:32 +00:00
Chris Lattner
2413b160ec
Renamed inst_const_iterator -> const_inst_iterator
...
Renamed op_const_iterator -> const_op_iterator
Renamed PointerType::getValueType() -> PointerType::getElementType()
llvm-svn: 1408
2001-12-04 00:03:30 +00:00
Chris Lattner
3462ae3ad7
Rename ConstPoolVal -> Constant
...
Rename ConstPool* -> Constant*
Rename ConstPoolVals.h -> ConstantVals.h
llvm-svn: 1407
2001-12-03 22:26:30 +00:00
Chris Lattner
fb5ae02e1a
Split the PHINode class out from the iOther.h file into the iPHINode.h file
...
llvm-svn: 1405
2001-12-03 18:02:31 +00:00
Chris Lattner
5de2204fe8
Create a new #include "Support/..." directory structure to move things
...
from "llvm/Support/..." that are not llvm dependant.
Move files and fix #includes
llvm-svn: 1400
2001-11-27 00:03:19 +00:00
Chris Lattner
0c8eea1b6f
Stuff after a #endif is not valid CPP input and breaks some compilers
...
llvm-svn: 1375
2001-11-26 18:56:52 +00:00