Recover and slightly improve perf of D144316
From parent (including D144316):
http://llvm-compile-time-tracker.com/compare.php?from=a53d940cee6f281ef1a20d4f0fb39b23b4e98614&to=890888d8ac997395fef21ad4d9916f5780972f6d
From D144316 parent:
http://llvm-compile-time-tracker.com/compare.php?from=c23f29d6f05b1fe4fa2dd50cbb78ee2b30e0de4d&to=890888d8ac997395fef21ad4d9916f5780972f6d