DirectIvarAssignment: Replace vtable'd objects with simple functions.

Avoids unnecessary static constructors.

git-svn-id: https://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: https://llvm.org/svn/llvm-project/cfe/trunk@188084 91177308-0d34-0410-b5e6-96231b3b80d8