Implement support for the 'wchar_t' C++ type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54585 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaType.cpp b/lib/Sema/SemaType.cpp
index 7acb458..bda8932 100644
--- a/lib/Sema/SemaType.cpp
+++ b/lib/Sema/SemaType.cpp
@@ -42,6 +42,21 @@
       Result = Context.UnsignedCharTy;
     }
     break;
+  case DeclSpec::TST_wchar:
+    if (DS.getTypeSpecSign() == DeclSpec::TSS_unspecified)
+      Result = Context.WCharTy;
+    else if (DS.getTypeSpecSign() == DeclSpec::TSS_signed) {
+      Diag(DS.getTypeSpecSignLoc(), diag::ext_invalid_sign_spec,
+           DS.getSpecifierName(DS.getTypeSpecType()));
+      Result = Context.getSignedWCharType();
+    } else {
+      assert(DS.getTypeSpecSign() == DeclSpec::TSS_unsigned &&
+        "Unknown TSS value");
+      Diag(DS.getTypeSpecSignLoc(), diag::ext_invalid_sign_spec,
+           DS.getSpecifierName(DS.getTypeSpecType()));
+      Result = Context.getUnsignedWCharType();
+    }
+    break;
   case DeclSpec::TST_unspecified:
     // "<proto1,proto2>" is an objc qualified ID with a missing id.
       if (DeclSpec::ProtocolQualifierListTy PQ = DS.getProtocolQualifiers()) {