Optimize IdentifierInfo storage within the precompiled header. We've
now gotten back about 180k of the 500k we lost.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70326 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Frontend/PCHReader.cpp b/lib/Frontend/PCHReader.cpp
index 64929dc..4e3f50d 100644
--- a/lib/Frontend/PCHReader.cpp
+++ b/lib/Frontend/PCHReader.cpp
@@ -237,7 +237,7 @@
       return II;
     }
 
-    uint32_t Bits = ReadUnalignedLE32(d);
+    unsigned Bits = ReadUnalignedLE16(d);
     bool CPlusPlusOperatorKeyword = Bits & 0x01;
     Bits >>= 1;
     bool Poisoned = Bits & 0x01;
@@ -248,11 +248,9 @@
     Bits >>= 1;
     unsigned ObjCOrBuiltinID = Bits & 0x3FF;
     Bits >>= 10;
-    unsigned TokenID = Bits & 0xFF;
-    Bits >>= 8;
     
     assert(Bits == 0 && "Extra bits in the identifier?");
-    DataLen -= 8;
+    DataLen -= 6;
 
     // Build the IdentifierInfo itself and link the identifier ID with
     // the new IdentifierInfo.
@@ -264,9 +262,6 @@
 
     // Set or check the various bits in the IdentifierInfo structure.
     // FIXME: Load token IDs lazily, too?
-    assert((unsigned)II->getTokenID() == TokenID && 
-           "Incorrect token ID loaded"); 
-    (void)TokenID;
     II->setObjCOrBuiltinID(ObjCOrBuiltinID);
     assert(II->isExtensionToken() == ExtensionToken && 
            "Incorrect extension token flag");
@@ -279,9 +274,9 @@
     // If this identifier is a macro, deserialize the macro
     // definition.
     if (hasMacroDefinition) {
-      uint32_t Offset = ReadUnalignedLE64(d);
+      uint32_t Offset = ReadUnalignedLE32(d);
       Reader.ReadMacroRecord(Offset);
-      DataLen -= 8;
+      DataLen -= 4;
     }
 
     // Read all of the declarations visible at global scope with this