From c24767b4ad8bbdb920578b22565e33f8f228cc8d Mon Sep 17 00:00:00 2001 From: Benjamin Kramer Date: Wed, 5 Feb 2014 21:29:05 +0000 Subject: Clean up some particularly ugly casting. No functionality change. llvm-svn: 200877 --- clang/lib/AST/Expr.cpp | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) (limited to 'clang/lib/AST/Expr.cpp') diff --git a/clang/lib/AST/Expr.cpp b/clang/lib/AST/Expr.cpp index 29b9fe28ed9..649f3580bdd 100644 --- a/clang/lib/AST/Expr.cpp +++ b/clang/lib/AST/Expr.cpp @@ -3789,30 +3789,21 @@ SourceLocation DesignatedInitExpr::getLocEnd() const { Expr *DesignatedInitExpr::getArrayIndex(const Designator& D) const { assert(D.Kind == Designator::ArrayDesignator && "Requires array designator"); - char *Ptr = static_cast( - const_cast(static_cast(this))); - Ptr += sizeof(DesignatedInitExpr); - Stmt **SubExprs = reinterpret_cast(reinterpret_cast(Ptr)); + Stmt *const *SubExprs = reinterpret_cast(this + 1); return cast(*(SubExprs + D.ArrayOrRange.Index + 1)); } Expr *DesignatedInitExpr::getArrayRangeStart(const Designator &D) const { assert(D.Kind == Designator::ArrayRangeDesignator && "Requires array range designator"); - char *Ptr = static_cast( - const_cast(static_cast(this))); - Ptr += sizeof(DesignatedInitExpr); - Stmt **SubExprs = reinterpret_cast(reinterpret_cast(Ptr)); + Stmt *const *SubExprs = reinterpret_cast(this + 1); return cast(*(SubExprs + D.ArrayOrRange.Index + 1)); } Expr *DesignatedInitExpr::getArrayRangeEnd(const Designator &D) const { assert(D.Kind == Designator::ArrayRangeDesignator && "Requires array range designator"); - char *Ptr = static_cast( - const_cast(static_cast(this))); - Ptr += sizeof(DesignatedInitExpr); - Stmt **SubExprs = reinterpret_cast(reinterpret_cast(Ptr)); + Stmt *const *SubExprs = reinterpret_cast(this + 1); return cast(*(SubExprs + D.ArrayOrRange.Index + 2)); } -- cgit v1.2.3