PTH: Use 3 bytes instead of 4 bytes to encode the persistent ID for a token.
- This reduces the PTH size for Cocoa.h by 7%.
- The increases PTH -Eonly speed for Cocoa.h by 0.8%.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61377 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Driver/CacheTokens.cpp b/Driver/CacheTokens.cpp
index c97b225..180dbcc 100644
--- a/Driver/CacheTokens.cpp
+++ b/Driver/CacheTokens.cpp
@@ -47,6 +47,13 @@
   assert((V >> 16) == 0);
 }
 
+static void Emit24(llvm::raw_ostream& Out, uint32_t V) {
+  Out << (unsigned char)(V);
+  Out << (unsigned char)(V >>  8);
+  Out << (unsigned char)(V >> 16);
+  assert((V >> 24) == 0);
+}
+
 static void EmitBuf(llvm::raw_ostream& Out, const char* I, const char* E) {
   for ( ; I != E ; ++I) Out << *I;
 }
@@ -73,7 +80,7 @@
   
   Emit8(Out, T.getKind());
   Emit8(Out, T.getFlags());
-  Emit32(Out, ResolveID(IM, idcount, T.getIdentifierInfo()));
+  Emit24(Out, ResolveID(IM, idcount, T.getIdentifierInfo()));
   Emit32(Out, SMgr.getFullFilePos(T.getLocation()));
   Emit16(Out, T.getLength());
 }