diff --git a/lib/Rewrite/RewriteRope.cpp b/lib/Rewrite/RewriteRope.cpp
index e290921..cfedd4b 100644
--- a/lib/Rewrite/RewriteRope.cpp
+++ b/lib/Rewrite/RewriteRope.cpp
@@ -119,7 +119,7 @@
     /// guaranteed that there is a split at Offset.
     void erase(unsigned Offset, unsigned NumBytes);
 
-    static inline bool classof(const RopePieceBTreeNode *) { return true; }
+    //static inline bool classof(const RopePieceBTreeNode *) { return true; }
 
   };
 } // end anonymous namespace
@@ -223,7 +223,7 @@
     /// guaranteed that there is a split at Offset.
     void erase(unsigned Offset, unsigned NumBytes);
 
-    static inline bool classof(const RopePieceBTreeLeaf *) { return true; }
+    //static inline bool classof(const RopePieceBTreeLeaf *) { return true; }
     static inline bool classof(const RopePieceBTreeNode *N) {
       return N->isLeaf();
     }
@@ -455,7 +455,7 @@
     /// guaranteed that there is a split at Offset.
     void erase(unsigned Offset, unsigned NumBytes);
 
-    static inline bool classof(const RopePieceBTreeInterior *) { return true; }
+    //static inline bool classof(const RopePieceBTreeInterior *) { return true; }
     static inline bool classof(const RopePieceBTreeNode *N) {
       return !N->isLeaf();
     }
diff --git a/lib/Sema/SemaLookup.cpp b/lib/Sema/SemaLookup.cpp
index 306e95a..c6148ae 100644
--- a/lib/Sema/SemaLookup.cpp
+++ b/lib/Sema/SemaLookup.cpp
@@ -183,11 +183,8 @@
       std::sort(list.begin(), list.end(), UnqualUsingEntry::Comparator());
     }
 
-    typedef ListTy::iterator iterator;
     typedef ListTy::const_iterator const_iterator;
     
-    iterator begin() { return list.begin(); }
-    iterator end() { return list.end(); }
     const_iterator begin() const { return list.begin(); }
     const_iterator end() const { return list.end(); }
 
@@ -2707,7 +2704,7 @@
   typedef llvm::SmallVector<IdentifierInfo *, 4>::const_iterator
     keyword_iterator;
   keyword_iterator keyword_begin() const { return BestKeywords.begin(); }
-  keyword_iterator keyword_end() const { return BestKeywords.end(); }
+  //keyword_iterator keyword_end() const { return BestKeywords.end(); }
   bool keyword_empty() const { return BestKeywords.empty(); }
   unsigned keyword_size() const { return BestKeywords.size(); }
   
