diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2014-02-05 21:29:05 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2014-02-05 21:29:05 +0000 |
commit | c24767b4ad8bbdb920578b22565e33f8f228cc8d (patch) | |
tree | 837dfb7e4f92b0c47e1f1155f1e49ff759536057 /clang/lib/AST/Expr.cpp | |
parent | 4fa81df4558833c70b85525cf0f677ce7897b915 (diff) | |
download | bcm5719-llvm-c24767b4ad8bbdb920578b22565e33f8f228cc8d.tar.gz bcm5719-llvm-c24767b4ad8bbdb920578b22565e33f8f228cc8d.zip |
Clean up some particularly ugly casting.
No functionality change.
llvm-svn: 200877
Diffstat (limited to 'clang/lib/AST/Expr.cpp')
-rw-r--r-- | clang/lib/AST/Expr.cpp | 15 |
1 files changed, 3 insertions, 12 deletions
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<char *>( - const_cast<void *>(static_cast<const void *>(this))); - Ptr += sizeof(DesignatedInitExpr); - Stmt **SubExprs = reinterpret_cast<Stmt**>(reinterpret_cast<void**>(Ptr)); + Stmt *const *SubExprs = reinterpret_cast<Stmt *const *>(this + 1); return cast<Expr>(*(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<char *>( - const_cast<void *>(static_cast<const void *>(this))); - Ptr += sizeof(DesignatedInitExpr); - Stmt **SubExprs = reinterpret_cast<Stmt**>(reinterpret_cast<void**>(Ptr)); + Stmt *const *SubExprs = reinterpret_cast<Stmt *const *>(this + 1); return cast<Expr>(*(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<char *>( - const_cast<void *>(static_cast<const void *>(this))); - Ptr += sizeof(DesignatedInitExpr); - Stmt **SubExprs = reinterpret_cast<Stmt**>(reinterpret_cast<void**>(Ptr)); + Stmt *const *SubExprs = reinterpret_cast<Stmt *const *>(this + 1); return cast<Expr>(*(SubExprs + D.ArrayOrRange.Index + 2)); } |