This has gotten far too gross and fallen way out of sync with the rest of the changes that have been going in. I'm waiting for http://reviews.llvm.org/D4952 to land, and then I'll massage these changes in to that. http://reviews.llvm.org/D4594