Re-use bit from superclass and extract stuff into a local
function.  Serves a patch we're kicking around out-of-tree.

git-svn-id: http://llvm.org/svn/llvm-project/cfe/trunk@176327 91177308-0d34-0410-b5e6-96231b3b80d8
Restore order to placate test.  I had no real reason to switch them.

git-svn-id: http://llvm.org/svn/llvm-project/cfe/trunk@176328 91177308-0d34-0410-b5e6-96231b3b80d8