Absolute Minimum Backend
From LLVM
There are two types of "minimal" backends.
The first is one that just subclasses TargetMachine. This doesn't use the LLVM code generator framework at all, and basically just requires filling in a few functions. For example, the C backend that comes with LLVM essentially just implements "WantsWholeFile" and "addPassesToEmitWholeFile". This interface is useful if you are making a backend that is not a traditional register machine, but the downside is that it requires you to pretty much do everything yourself by adding your own custom passes.
The second type of "minimal" backend is one that subclasses LLVMTargetMachine. This makes use of the LLVM code generator framework, and is appropriate if you are targeting a register-based processor (i.e. most real commercial CPUs). To create this type of backend, you must describe your architecture using TableGen. (TBD: This section should describe how to make an absolute minimal LLVMTargetMachine backend.)

