diff --git a/include/clang/Sema/Overload.h b/include/clang/Sema/Overload.h
index c6d9e48..3efbddc 100644
--- a/include/clang/Sema/Overload.h
+++ b/include/clang/Sema/Overload.h
@@ -659,11 +659,6 @@
       StandardConversionSequence FinalConversion;
     };
 
-    ~OverloadCandidate() {
-      for (unsigned i = 0, e = NumConversions; i != e; ++i)
-        Conversions[i].~ImplicitConversionSequence();
-    }
-
     /// hasAmbiguousConversion - Returns whether this overload
     /// candidate requires an ambiguous conversion or not.
     bool hasAmbiguousConversion() const {
@@ -696,7 +691,8 @@
 
     // Allocator for OverloadCandidate::Conversions. We store the first few
     // elements inline to avoid allocation for small sets.
-    llvm::BumpPtrAllocator ConversionSequenceAllocator;
+    llvm::SpecificBumpPtrAllocator<ImplicitConversionSequence>
+      ConversionSequenceAllocator;
 
     SourceLocation Loc;
 
@@ -708,10 +704,6 @@
     
   public:
     OverloadCandidateSet(SourceLocation Loc) : Loc(Loc), NumInlineSequences(0){}
-    ~OverloadCandidateSet() {
-      // Destroy OverloadCandidates before the allocator is destroyed.
-      Candidates.clear();
-    }
 
     SourceLocation getLocation() const { return Loc; }
 
@@ -746,8 +738,7 @@
         NumInlineSequences += NumConversions;
       } else {
         // Otherwise get memory from the allocator.
-        C.Conversions = ConversionSequenceAllocator
-                          .Allocate<ImplicitConversionSequence>(NumConversions);
+        C.Conversions = ConversionSequenceAllocator.Allocate(NumConversions);
       }
 
       // Construct the new objects.
diff --git a/lib/Sema/SemaOverload.cpp b/lib/Sema/SemaOverload.cpp
index 7f1c86c..2706aea 100644
--- a/lib/Sema/SemaOverload.cpp
+++ b/lib/Sema/SemaOverload.cpp
@@ -541,9 +541,13 @@
 }
 
 void OverloadCandidateSet::clear() {
+  for (unsigned i = 0, e = NumInlineSequences; i != e; ++i)
+    reinterpret_cast<ImplicitConversionSequence*>(InlineSpace)[i]
+                                                 .~ImplicitConversionSequence();
+  NumInlineSequences = 0;
+  ConversionSequenceAllocator.DestroyAll();
   Candidates.clear();
   Functions.clear();
-  NumInlineSequences = 0;
 }
 
 namespace {
