diff --git a/include/llvm/ADT/SmallPtrSet.h b/include/llvm/ADT/SmallPtrSet.h
index c326c7f..ec7b78e 100644
--- a/include/llvm/ADT/SmallPtrSet.h
+++ b/include/llvm/ADT/SmallPtrSet.h
@@ -91,21 +91,19 @@
     NumTombstones = 0;
   }
   
-  /// insert - This returns true if the pointer was new to the set, false if it
-  /// was already in the set.
-  bool insert(const void * Ptr);
+protected:
+  /// insert_imp - This returns true if the pointer was new to the set, false if
+  /// it was already in the set.  This is hidden from the client so that the
+  /// derived class can check that the right type of pointer is passed in.
+  bool insert_imp(const void * Ptr);
   
-  template <typename IterT>
-  void insert(IterT I, IterT E) {
-    for (; I != E; ++I)
-      insert((void*)*I);
-  }
+  /// erase_imp - If the set contains the specified pointer, remove it and
+  /// return true, otherwise return false.  This is hidden from the client so
+  /// that the derived class can check that the right type of pointer is passed
+  /// in.
+  bool erase_imp(const void * Ptr);
   
-  /// erase - If the set contains the specified pointer, remove it and return
-  /// true, otherwise return false.
-  bool erase(const void * Ptr);
-  
-  bool count(const void * Ptr) const {
+  bool count_imp(const void * Ptr) const {
     if (isSmall()) {
       // Linear search for the item.
       for (const void *const *APtr = SmallArray,
@@ -232,6 +230,23 @@
     insert(I, E);
   }
   
+  /// insert - This returns true if the pointer was new to the set, false if it
+  /// was already in the set.
+  bool insert(PtrType Ptr) { return insert_imp(Ptr); }
+  
+  /// erase - If the set contains the specified pointer, remove it and return
+  /// true, otherwise return false.
+  bool erase(PtrType Ptr) { return erase_imp(Ptr); }
+  
+  /// count - Return true if the specified pointer is in the set.
+  bool count(PtrType Ptr) const { return count_imp(Ptr); }
+  
+  template <typename IterT>
+  void insert(IterT I, IterT E) {
+    for (; I != E; ++I)
+      insert(*I);
+  }
+  
   typedef SmallPtrSetIterator<PtrType> iterator;
   typedef SmallPtrSetIterator<PtrType> const_iterator;
   inline iterator begin() const {
diff --git a/lib/Support/SmallPtrSet.cpp b/lib/Support/SmallPtrSet.cpp
index eac2909..7aad3ee 100644
--- a/lib/Support/SmallPtrSet.cpp
+++ b/lib/Support/SmallPtrSet.cpp
@@ -36,7 +36,7 @@
   CurArray[CurArraySize] = 0;
 }
 
-bool SmallPtrSetImpl::insert(const void * Ptr) {
+bool SmallPtrSetImpl::insert_imp(const void * Ptr) {
   if (isSmall()) {
     // Check to see if it is already in the set.
     for (const void **APtr = SmallArray, **E = SmallArray+NumElements;
@@ -69,7 +69,7 @@
   return true;
 }
 
-bool SmallPtrSetImpl::erase(const void * Ptr) {
+bool SmallPtrSetImpl::erase_imp(const void * Ptr) {
   if (isSmall()) {
     // Check to see if it is in the set.
     for (const void **APtr = SmallArray, **E = SmallArray+NumElements;
