Revert my changes that try to avoid creating StringMap entries for
identifiers. They don't yet work, but will inhibit future
optimizations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70071 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Frontend/PCHReader.cpp b/lib/Frontend/PCHReader.cpp
index 918fd93..005436d 100644
--- a/lib/Frontend/PCHReader.cpp
+++ b/lib/Frontend/PCHReader.cpp
@@ -1245,8 +1245,8 @@
   static std::pair<unsigned, unsigned>
   ReadKeyDataLength(const unsigned char*& d) {
     using namespace clang::io;
-    unsigned DataLen = ReadUnalignedLE16(d);
     unsigned KeyLen = ReadUnalignedLE16(d);
+    unsigned DataLen = ReadUnalignedLE16(d);
     return std::make_pair(KeyLen, DataLen);
   }
     
@@ -1282,7 +1282,8 @@
     // the new IdentifierInfo.
     IdentifierInfo *II = KnownII;
     if (!II)
-      II = &Reader.BuildIdentifierInfoInsidePCH((const unsigned char *)k.first);
+      II = &Reader.getIdentifierTable().CreateIdentifierInfo(
+                                                 k.first, k.first + k.second);
     Reader.SetIdentifierInfo(ID, II);
 
     // Set or check the various bits in the IdentifierInfo structure.
@@ -2848,19 +2849,6 @@
   return IdentifiersLoaded[ID - 1];
 }
 
-IdentifierInfo &
-PCHReader::BuildIdentifierInfoInsidePCH(const unsigned char *Str) {
-  // Allocate the object.
-  std::pair<IdentifierInfo,const unsigned char*> *Mem =
-    Alloc.Allocate<std::pair<IdentifierInfo,const unsigned char*> >();
-
-  // Build the IdentifierInfo itself.
-  Mem->second = Str;
-  assert(Str[0] != '\0');
-  IdentifierInfo *II = new ((void*) Mem) IdentifierInfo();
-  return *II;
-}
-
 Selector PCHReader::DecodeSelector(unsigned ID) {
   if (ID == 0)
     return Selector();