Unbreak -fms-extensions with GNU libc headers

GNU libc uses '__uptr' as a member name in C mode, conflicting with the
eponymous MSVC pointer modifier keyword.

Detect and mark the token as an identifier when these specific conditions are
met. __uptr will continue to work as a keyword for the remainder of the
translation unit.

Fixes PR17824.

llvm-svn: 195710
diff --git a/clang/test/Sema/Inputs/ms-keyword-system-header.h b/clang/test/Sema/Inputs/ms-keyword-system-header.h
new file mode 100644
index 0000000..13cfe3a
--- /dev/null
+++ b/clang/test/Sema/Inputs/ms-keyword-system-header.h
@@ -0,0 +1,6 @@
+/* "System header" for testing GNU libc keyword conflict workarounds */
+
+typedef union {
+  union w *__uptr;
+  int *__iptr;
+} WS __attribute__((__transparent_union__));