diff --git a/lib/StaticAnalyzer/Core/ExprEngine.cpp b/lib/StaticAnalyzer/Core/ExprEngine.cpp
index 8f5ba0645f37b8673100cfb69c788439cf35769d..04629dc01705bcfde356180336dd99d1f3956155 100644
--- a/lib/StaticAnalyzer/Core/ExprEngine.cpp
+++ b/lib/StaticAnalyzer/Core/ExprEngine.cpp
@@ -606,7 +606,6 @@ void ExprEngine::Visit(const Stmt *S, ExplodedNode *Pred,
     // C++ and ARC stuff we don't support yet.
     case Expr::ObjCIndirectCopyRestoreExprClass:
     case Stmt::CXXDependentScopeMemberExprClass:
-    case Stmt::CXXPseudoDestructorExprClass:
     case Stmt::CXXTryStmtClass:
     case Stmt::CXXTypeidExprClass:
     case Stmt::CXXUuidofExprClass:
@@ -720,6 +719,7 @@ void ExprEngine::Visit(const Stmt *S, ExplodedNode *Pred,
     case Stmt::StringLiteralClass:
     case Stmt::ObjCStringLiteralClass:
     case Stmt::CXXBindTemporaryExprClass:
+    case Stmt::CXXPseudoDestructorExprClass:
     case Stmt::SubstNonTypeTemplateParmExprClass:
     case Stmt::CXXNullPtrLiteralExprClass: {
       Bldr.takeNodes(Pred);
diff --git a/test/Analysis/dtor.cpp b/test/Analysis/dtor.cpp
index 58bdcea6317a5cd066390aa9f458da9c5bce6be8..436da2ed9f378aa96e55e1a98dd56ddf2ec37366 100644
--- a/test/Analysis/dtor.cpp
+++ b/test/Analysis/dtor.cpp
@@ -417,3 +417,17 @@ namespace NoReturn {
     *x = 47; // no warning
   }
 }
+
+namespace PseudoDtor {
+  template <typename T>
+  void destroy(T &obj) {
+    clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
+    obj.~T();
+  }
+
+  void test() {
+    int i;
+    destroy(i);
+    clang_analyzer_eval(true); // expected-warning{{TRUE}}
+  }
+}