This is a prototype of an experimental register allocation
authorAndrew Trick <atrick@apple.com>
Fri, 22 Oct 2010 23:09:15 +0000 (23:09 +0000)
committerAndrew Trick <atrick@apple.com>
Fri, 22 Oct 2010 23:09:15 +0000 (23:09 +0000)
commit14e8d71cc945034d4ee6e76be00e00f14efac62f
treea949a75ee28e7ab9e441d23e1765a97c1e6d5c60
parentc9db3314333c34458f6648088cdabbbc96696e9a
This is a prototype of an experimental register allocation
framework. It's purpose is not to improve register allocation per se,
but to make it easier to develop powerful live range splitting. I call
it the basic allocator because it is as simple as a global allocator
can be but provides the building blocks for sophisticated register
allocation with live range splitting.

A minimal implementation is provided that trivially spills whenever it
runs out of registers. I'm checking in now to get high-level design
and style feedback. I've only done minimal testing. The next step is
implementing a "greedy" allocation algorithm that does some register
reassignment and makes better splitting decisions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117174 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/LinkAllCodegenComponents.h
include/llvm/CodeGen/Passes.h
lib/CodeGen/CMakeLists.txt
lib/CodeGen/LiveIntervalUnion.cpp [new file with mode: 0644]
lib/CodeGen/LiveIntervalUnion.h [new file with mode: 0644]
lib/CodeGen/RegAllocBase.h [new file with mode: 0644]
lib/CodeGen/RegAllocBasic.cpp [new file with mode: 0644]
lib/CodeGen/SplitKit.h