diff --git a/include/clang/Basic/IdentifierTable.h b/include/clang/Basic/IdentifierTable.h
index bb68e65..9711926 100644
--- a/include/clang/Basic/IdentifierTable.h
+++ b/include/clang/Basic/IdentifierTable.h
@@ -36,7 +36,9 @@
 /// variable or function name).  The preprocessor keeps this information in a
 /// set, and all tok::identifier tokens have a pointer to one of these.  
 class IdentifierInfo {
-  tok::TokenKind TokenID      : 8; // Front-end token ID or tok::identifier.
+  // Note: DON'T make TokenID a 'tok::TokenKind'; MSVC will treat it as a
+  //       signed char and TokenKinds > 127 won't be handled correctly.
+  unsigned TokenID            : 8; // Front-end token ID or tok::identifier. 
   unsigned BuiltinID          : 9; // ID if this is a builtin (__builtin_inf).
   tok::ObjCKeywordKind ObjCID : 5; // ID for objc @ keyword like @'protocol'.
   bool HasMacro               : 1; // True if there is a #define for this.
@@ -79,7 +81,7 @@
   /// get/setTokenID - If this is a source-language token (e.g. 'for'), this API
   /// can be used to cause the lexer to map identifiers to source-language
   /// tokens.
-  tok::TokenKind getTokenID() const { return TokenID; }
+  tok::TokenKind getTokenID() const { return (tok::TokenKind)TokenID; }
   void setTokenID(tok::TokenKind ID) { TokenID = ID; }
   
   /// getPPKeywordID - Return the preprocessor keyword ID for this identifier.
diff --git a/include/clang/Lex/Token.h b/include/clang/Lex/Token.h
index 9204b43..d5bfd9c 100644
--- a/include/clang/Lex/Token.h
+++ b/include/clang/Lex/Token.h
@@ -36,7 +36,9 @@
 
   /// Kind - The actual flavor of token this is.
   ///
-  tok::TokenKind Kind : 8;
+  unsigned Kind : 8;  // DON'T make Kind a 'tok::TokenKind'; 
+                      // MSVC will treat it as a signed char and
+                      // TokenKinds > 127 won't be handled correctly.
   
   /// Flags - Bits we track about this token, members of the TokenFlags enum.
   unsigned Flags : 8;
@@ -50,13 +52,13 @@
     NeedsCleaning = 0x08   // Contained an escaped newline or trigraph.
   };
 
-  tok::TokenKind getKind() const { return Kind; }
+  tok::TokenKind getKind() const { return (tok::TokenKind)Kind; }
   void setKind(tok::TokenKind K) { Kind = K; }
   
   /// is/isNot - Predicates to check if this token is a specific kind, as in
   /// "if (Tok.is(tok::l_brace)) {...}".
-  bool is(tok::TokenKind K) const { return Kind == K; }
-  bool isNot(tok::TokenKind K) const { return Kind != K; }
+  bool is(tok::TokenKind K) const { return Kind == (unsigned) K; }
+  bool isNot(tok::TokenKind K) const { return Kind != (unsigned) K; }
 
   /// getLocation - Return a source location identifier for the specified
   /// offset in the current file.
@@ -66,7 +68,9 @@
   void setLocation(SourceLocation L) { Loc = L; }
   void setLength(unsigned Len) { Length = Len; }
   
-  const char *getName() const { return tok::getTokenName(Kind); }
+  const char *getName() const {
+    return tok::getTokenName( (tok::TokenKind) Kind);
+  }
   
   /// startToken - Reset all flags to cleared.
   ///
@@ -113,7 +117,9 @@
   
   /// isExpandDisabled - Return true if this identifier token should never
   /// be expanded in the future, due to C99 6.10.3.4p2.
-  bool isExpandDisabled() const { return (Flags & DisableExpand) ? true : false; }
+  bool isExpandDisabled() const {
+    return (Flags & DisableExpand) ? true : false;
+  }
   
   /// isObjCAtKeyword - Return true if we have an ObjC keyword identifier. 
   bool isObjCAtKeyword(tok::ObjCKeywordKind objcKey) const;
