diff --git a/lib/Index/Entity.cpp b/lib/Index/Entity.cpp
index d331100..8c7c8d0 100644
--- a/lib/Index/Entity.cpp
+++ b/lib/Index/Entity.cpp
@@ -70,9 +70,8 @@
   if (!II)
       return Entity();
 
-  EntityImpl::IdEntryTy *Id =
-      &Prog.getIdents().GetOrCreateValue(II->getName(),
-                                         II->getName() + II->getLength());
+  IdentifierInfo *Id = &Prog.getIdents().get(II->getName(),
+                                             II->getName() + II->getLength());
   unsigned IdNS = D->getIdentifierNamespace();
 
   llvm::FoldingSetNodeID ID;
@@ -117,7 +116,8 @@
   if (!DC)
     return 0; // Couldn't get the parent context.
     
-  IdentifierInfo &II = AST.Idents.get(Id->getKeyData());
+  IdentifierInfo &II = AST.Idents.get(Id->getName(),
+                                      Id->getName() + Id->getLength());
   
   DeclContext::lookup_result Res = DC->lookup(DeclarationName(&II));
   for (DeclContext::lookup_iterator I = Res.first, E = Res.second; I!=E; ++I) {
@@ -136,7 +136,7 @@
 }
 
 std::string EntityImpl::getPrintableName() {
-  return std::string(Id->getKeyData(), Id->getKeyData() + Id->getKeyLength());
+  return Id->getName();
 }
 
 //===----------------------------------------------------------------------===//
diff --git a/lib/Index/EntityImpl.h b/lib/Index/EntityImpl.h
index 3f09f80..d28936e 100644
--- a/lib/Index/EntityImpl.h
+++ b/lib/Index/EntityImpl.h
@@ -19,23 +19,20 @@
 #include "llvm/ADT/StringSet.h"
 
 namespace clang {
+  class IdentifierInfo;
 
 namespace idx {
   class ProgramImpl;
 
 class EntityImpl : public llvm::FoldingSetNode {
-public:
-  typedef llvm::StringMapEntry<char> IdEntryTy;
-
-private:
   Entity Parent;
-  IdEntryTy *Id;
+  IdentifierInfo *Id;
 
   /// \brief Identifier namespace.
   unsigned IdNS;
 
 public:
-  EntityImpl(Entity parent, IdEntryTy *id, unsigned idNS)
+  EntityImpl(Entity parent, IdentifierInfo *id, unsigned idNS)
     : Parent(parent), Id(id), IdNS(idNS) { }
 
   /// \brief Find the Decl that can be referred to by this entity.
@@ -50,8 +47,8 @@
   void Profile(llvm::FoldingSetNodeID &ID) const {
     Profile(ID, Parent, Id, IdNS);
   }
-  static void Profile(llvm::FoldingSetNodeID &ID, Entity Parent, IdEntryTy *Id,
-                      unsigned IdNS) {
+  static void Profile(llvm::FoldingSetNodeID &ID, Entity Parent,
+                      IdentifierInfo *Id, unsigned IdNS) {
     ID.AddPointer(Parent.getAsOpaquePtr());
     ID.AddPointer(Id);
     ID.AddInteger(IdNS);
diff --git a/lib/Index/ProgramImpl.h b/lib/Index/ProgramImpl.h
index 39fc184..b962a2d 100644
--- a/lib/Index/ProgramImpl.h
+++ b/lib/Index/ProgramImpl.h
@@ -15,6 +15,8 @@
 #define LLVM_CLANG_INDEX_PROGRAMIMPL_H
 
 #include "EntityImpl.h"
+#include "clang/Basic/IdentifierTable.h"
+#include "clang/Basic/LangOptions.h"
 
 namespace clang {
 
@@ -27,17 +29,18 @@
 
 private:
   EntitySetTy Entities;
-  llvm::StringSet<> Idents;
   llvm::BumpPtrAllocator BumpAlloc;
+  
+  IdentifierTable Identifiers;
 
   ProgramImpl(const ProgramImpl&); // do not implement
   ProgramImpl &operator=(const ProgramImpl &); // do not implement
   
 public:
-  ProgramImpl() { }
+  ProgramImpl() : Identifiers(LangOptions()) { }
   
   EntitySetTy &getEntities() { return Entities; }
-  llvm::StringSet<> &getIdents() { return Idents; }
+  IdentifierTable &getIdents() { return Identifiers; }
 
   void *Allocate(unsigned Size, unsigned Align = 8) {
     return BumpAlloc.Allocate(Size, Align);
