Fixup for r216763. Add a driver test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216783 91177308-0d34-0410-b5e6-96231b3b80d8
unique_ptrify some parameters to PTHManager::PTHManager

A couple of these arguments were passed by void* as a rather extreme
example of pimpling. Adjusting this to a more classic form of the idiom
(involving forward declarations) makes this more legible and allows
explicit passing of ownership via std::unique_ptr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216785 91177308-0d34-0410-b5e6-96231b3b80d8
unique_ptrify PTHManager's PerIDCache using the newly added llvm::FreeDeleter

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216786 91177308-0d34-0410-b5e6-96231b3b80d8
Fix my broken test cases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216791 91177308-0d34-0410-b5e6-96231b3b80d8
Add some missing test coverage for merging 'extern "C"' functions with modules.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216796 91177308-0d34-0410-b5e6-96231b3b80d8
Debug info: Only emit C++ accessibility specifiers when they are diverging
from the default for the containing type.

rdar://problem/18154959

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