diff --git a/clang/lib/AST/Decl.cpp b/clang/lib/AST/Decl.cpp index bcb117dbc65f..ac1a593e6f95 100644 --- a/clang/lib/AST/Decl.cpp +++ b/clang/lib/AST/Decl.cpp @@ -329,7 +329,10 @@ const Attr *Decl::getAttrs() const { return (*DeclAttrs)[this]; } -#define CASE(KIND) case KIND: cast(this)->~KIND##Decl(); break +#define CASE(KIND) \ + case KIND: \ + static_cast(const_cast(this))->~KIND##Decl(); \ + break void Decl::Destroy(ASTContext& C) const { switch (getKind()) { @@ -355,7 +358,7 @@ void Decl::Destroy(ASTContext& C) const { CASE(LinkageSpec); case Struct: case Union: case Class: - cast(this)->~RecordDecl(); + static_cast(const_cast(this))->~RecordDecl(); break; default: assert(0 && "Unknown decl kind!");