diff --git a/clang/include/clang/AST/Expr.h b/clang/include/clang/AST/Expr.h index be1246cfc532..31a421fb0e0d 100644 --- a/clang/include/clang/AST/Expr.h +++ b/clang/include/clang/AST/Expr.h @@ -1710,6 +1710,8 @@ protected: CastExpr(StmtClass SC, EmptyShell Empty) : Expr(SC, Empty) { } + virtual void DoDestroy(ASTContext &C); + public: CastKind getCastKind() const { return Kind; } void setCastKind(CastKind K) { Kind = K; } diff --git a/clang/lib/AST/Expr.cpp b/clang/lib/AST/Expr.cpp index 036d5ef680ef..370f33fbf337 100644 --- a/clang/lib/AST/Expr.cpp +++ b/clang/lib/AST/Expr.cpp @@ -652,6 +652,13 @@ const char *CastExpr::getCastKindName() const { return 0; } +void CastExpr::DoDestroy(ASTContext &C) +{ + if (InheritancePath) + InheritancePath->Destroy(); + Expr::DoDestroy(C); +} + Expr *CastExpr::getSubExprAsWritten() { Expr *SubExpr = 0; CastExpr *E = this;