diff --git a/include/clang/Frontend/PCHReader.h b/include/clang/Frontend/PCHReader.h
index fed1693..07f2bb2 100644
--- a/include/clang/Frontend/PCHReader.h
+++ b/include/clang/Frontend/PCHReader.h
@@ -116,7 +116,7 @@
 
   /// \brief Offset of each type within the bitstream, indexed by the
   /// type ID, or the representation of a Type*.
-  const uint64_t *TypeOffsets;
+  const uint32_t *TypeOffsets;
 
   /// \brief Types that have already been loaded from the PCH file.
   /// 
@@ -126,7 +126,7 @@
 
   /// \brief Offset of each declaration within the bitstream, indexed
   /// by the declaration ID (-1).
-  const uint64_t *DeclOffsets;
+  const uint32_t *DeclOffsets;
 
   /// \brief Declarations that have already been loaded from the PCH file.
   ///
diff --git a/include/clang/Frontend/PCHWriter.h b/include/clang/Frontend/PCHWriter.h
index 4d12622..96c6c79 100644
--- a/include/clang/Frontend/PCHWriter.h
+++ b/include/clang/Frontend/PCHWriter.h
@@ -64,7 +64,7 @@
 
   /// \brief Offset of each declaration in the bitstream, indexed by
   /// the declaration's ID.
-  llvm::SmallVector<uint64_t, 16> DeclOffsets;
+  std::vector<uint32_t> DeclOffsets;
 
   /// \brief Queue containing the declarations that we still need to
   /// emit.
@@ -81,7 +81,7 @@
 
   /// \brief Offset of each type in the bitstream, indexed by
   /// the type's ID.
-  llvm::SmallVector<uint64_t, 16> TypeOffsets;
+  std::vector<uint32_t> TypeOffsets;
 
   /// \brief The type ID that will be assigned to the next new type.
   pch::TypeID NextTypeID;
diff --git a/lib/Frontend/PCHReader.cpp b/lib/Frontend/PCHReader.cpp
index bace23c..f26cd84 100644
--- a/lib/Frontend/PCHReader.cpp
+++ b/lib/Frontend/PCHReader.cpp
@@ -793,7 +793,7 @@
         Error("Duplicate TYPE_OFFSET record in PCH file");
         return Failure;
       }
-      TypeOffsets = (const uint64_t *)BlobStart;
+      TypeOffsets = (const uint32_t *)BlobStart;
       TypesLoaded.resize(Record[0]);
       break;
 
@@ -802,7 +802,7 @@
         Error("Duplicate DECL_OFFSET record in PCH file");
         return Failure;
       }
-      DeclOffsets = (const uint64_t *)BlobStart;
+      DeclOffsets = (const uint32_t *)BlobStart;
       DeclsLoaded.resize(Record[0]);
       break;
 
diff --git a/lib/Frontend/PCHWriter.cpp b/lib/Frontend/PCHWriter.cpp
index bb72f78..82eb5df 100644
--- a/lib/Frontend/PCHWriter.cpp
+++ b/lib/Frontend/PCHWriter.cpp
@@ -1565,7 +1565,7 @@
   Record.push_back(TypeOffsets.size());
   Stream.EmitRecordWithBlob(TypeOffsetAbbrev, Record,
                             (const char *)&TypeOffsets.front(), 
-                            TypeOffsets.size() * sizeof(uint64_t));
+                            TypeOffsets.size() * sizeof(TypeOffsets[0]));
   
   // Write the declaration offsets array
   Abbrev = new BitCodeAbbrev();
@@ -1578,7 +1578,7 @@
   Record.push_back(DeclOffsets.size());
   Stream.EmitRecordWithBlob(DeclOffsetAbbrev, Record,
                             (const char *)&DeclOffsets.front(), 
-                            DeclOffsets.size() * sizeof(uint64_t));
+                            DeclOffsets.size() * sizeof(DeclOffsets[0]));
 
   // Write the record of special types.
   Record.clear();
