Automated checking for C++ when determining what argument to send to the diagnostic for attribute subjects. In turn, this allows the Subjects to be enabled for some more attributes and improves diagnostics. Updated a test case based on the improved diagnostic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@195864 91177308-0d34-0410-b5e6-96231b3b80d8
Converts the lockable attributes to use the simple attribute handler because the semantic checking was already automated.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@195866 91177308-0d34-0410-b5e6-96231b3b80d8
Bring back a StringRef used in some build configurations

This was removed in the great unused local cleanup of r195814.

Adding cast-to-void to suppress unused variable warnings.

Should fix certain builds like ARCMT.

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