mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-14 02:33:53 +00:00
Add fast register allocator, enabled with -regalloc=fast.
So far this is just a clone of -regalloc=local that has been lobotomized to run 25% faster. It drops the least-recently-used calculations, and is just plain stupid when it runs out of registers. The plan is to make this go even faster for -O0 by taking advantage of the short live intervals in unoptimized code. It should not be necessary to calculate liveness when most virtual registers are killed 2-3 instructions after they are born. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102006 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
9cdb4109d5
commit
00207237dd
@ -34,6 +34,7 @@ namespace {
|
||||
(void) llvm::createDeadMachineInstructionElimPass();
|
||||
|
||||
(void) llvm::createLocalRegisterAllocator();
|
||||
(void) llvm::createFastRegisterAllocator();
|
||||
(void) llvm::createLinearScanRegisterAllocator();
|
||||
(void) llvm::createPBQPRegisterAllocator();
|
||||
|
||||
|
@ -95,6 +95,11 @@ namespace llvm {
|
||||
///
|
||||
FunctionPass *createLocalRegisterAllocator();
|
||||
|
||||
/// FastRegisterAllocation Pass - This pass register allocates as fast as
|
||||
/// possible. It is best suited for debug code where live ranges are short.
|
||||
///
|
||||
FunctionPass *createFastRegisterAllocator();
|
||||
|
||||
/// LinearScanRegisterAllocation Pass - This pass implements the linear scan
|
||||
/// register allocation algorithm, a global register allocator.
|
||||
///
|
||||
|
@ -50,6 +50,7 @@ add_llvm_library(LLVMCodeGen
|
||||
ProcessImplicitDefs.cpp
|
||||
PrologEpilogInserter.cpp
|
||||
PseudoSourceValue.cpp
|
||||
RegAllocFast.cpp
|
||||
RegAllocLinearScan.cpp
|
||||
RegAllocLocal.cpp
|
||||
RegAllocPBQP.cpp
|
||||
|
1107
lib/CodeGen/RegAllocFast.cpp
Normal file
1107
lib/CodeGen/RegAllocFast.cpp
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user