EricWF added a comment. I prefer using the `(void*)` casts when possible. In particular when doing the pointer comparisons. Could you change those back to `void*` casts then use the `__as_base` function for the rest? Repository: rL LLVM http://reviews.llvm.org/D16738