I'm happy to announce that Apple is contributing some major extensions to the LLVM ARM backend. The improvements include support for ARM v4/v6, vfp support, soft float, pre/postinc support, load/store multiple generation, constant pool entry motion (to support large functions), and support for the darwin/arm ABI. In addition to ARM support, the backend now includes code generation support for the Thumb instruction set, which is effectively a completely new and different code generator.
Evan is the main author of these extensions, but Jim and I contributed a few pieces here and there. We're currently working with Rafael and Lauro to integrate our changes with theirs, and hope to commit the code in the next couple of days. We're looking forward to future collaboration with other LLVM ARM developers to continue improving the code generator.