Commit Graph

659 Commits

Author SHA1 Message Date
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