Deallocate the StringLiteral itself in StringLiteral::Destroy() and deallocate the string data before running StringLiteral's destructor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64146 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/AST/Expr.cpp b/lib/AST/Expr.cpp
index e541bb8..27ae2b2 100644
--- a/lib/AST/Expr.cpp
+++ b/lib/AST/Expr.cpp
@@ -54,8 +54,9 @@
 }
 
 void StringLiteral::Destroy(ASTContext &C) {
-  this->~StringLiteral();
   C.Deallocate(const_cast<char*>(StrData));
+  this->~StringLiteral();
+  C.Deallocate(this);
 }
 
 bool UnaryOperator::isPostfix(Opcode Op) {