DirectIvarAssignment: Replace vtable'd objects with simple functions.

Avoids unnecessary static constructors.

git-svn-id: http://llvm.org/svn/llvm-project/cfe/trunk@188083 91177308-0d34-0410-b5e6-96231b3b80d8
Add a convenient way to compare GCCVersions without creating temporary objects.

No functionality change.

git-svn-id: http://llvm.org/svn/llvm-project/cfe/trunk@188084 91177308-0d34-0410-b5e6-96231b3b80d8
Only emit debug info for implicit members that actually get codegen, not just ODR use.

This includes special members (copy/default ctor, copy assign, default
ctor) and template specializations for member function templates.

Good for a 5% decrease (1.80 to 1.71 GB) in size on Clang+LLVM's .dwo
files (when using fission).

git-svn-id: http://llvm.org/svn/llvm-project/cfe/trunk@188085 91177308-0d34-0410-b5e6-96231b3b80d8
clang-cl: Don't pass /defaultlib to the linker

Since r187945, clang-cl will add the runtime library dependency to
the .obj file.

git-svn-id: http://llvm.org/svn/llvm-project/cfe/trunk@188086 91177308-0d34-0410-b5e6-96231b3b80d8
Remove "static" on simple temporary StringRef.

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