RegAlloc superpass: includes phi elimination, coalescing, and scheduling.
authorAndrew Trick <atrick@apple.com>
Fri, 10 Feb 2012 04:10:36 +0000 (04:10 +0000)
committerAndrew Trick <atrick@apple.com>
Fri, 10 Feb 2012 04:10:36 +0000 (04:10 +0000)
commit8dd26253f54247e77e5accfdd70e7b4bf27b39c2
treedf14b7b3cec3b603bc5feb7070a05f00eb83d4a5
parent16f72dd68653bd4984363483cfc15ce91fa613d4
RegAlloc superpass: includes phi elimination, coalescing, and scheduling.

Creates a configurable regalloc pipeline.

Ensure specific llc options do what they say and nothing more: -reglloc=... has no effect other than selecting the allocator pass itself. This patch introduces a new umbrella flag, "-optimize-regalloc", to enable/disable the optimizing regalloc "superpass". This allows for example testing coalscing and scheduling under -O0 or vice-versa.

When a CodeGen pass requires the MachineFunction to have a particular property, we need to explicitly define that property so it can be directly queried rather than naming a specific Pass. For example, to check for SSA, use MRI->isSSA, not addRequired<PHIElimination>.

CodeGen transformation passes are never "required" as an analysis

ProcessImplicitDefs does not require LiveVariables.

We have a plan to massively simplify some of the early passes within the regalloc superpass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150226 91177308-0d34-0410-b5e6-96231b3b80d8
24 files changed:
include/llvm/CodeGen/Passes.h
include/llvm/Target/TargetOptions.h
lib/CodeGen/LiveIntervalAnalysis.cpp
lib/CodeGen/LiveVariables.cpp
lib/CodeGen/MachineScheduler.cpp
lib/CodeGen/PHIElimination.cpp
lib/CodeGen/Passes.cpp
lib/CodeGen/ProcessImplicitDefs.cpp
lib/CodeGen/RegAllocBasic.cpp
lib/CodeGen/RegAllocFast.cpp
lib/CodeGen/RegAllocGreedy.cpp
lib/CodeGen/RegAllocPBQP.cpp
lib/CodeGen/RegisterCoalescer.cpp
lib/CodeGen/TwoAddressInstructionPass.cpp
lib/Target/PTX/PTXRegAlloc.cpp
lib/Target/PTX/PTXTargetMachine.cpp
lib/Target/TargetMachine.cpp
test/CodeGen/ARM/2010-05-20-NEONSpillCrash.ll
test/CodeGen/ARM/fast-isel-redefinition.ll
test/CodeGen/X86/2008-05-21-CoalescerBug.ll
test/CodeGen/X86/fast-isel-bc.ll
test/CodeGen/X86/inline-asm-tied.ll
test/CodeGen/X86/object-size.ll
tools/llc/llc.cpp