]> granicus.if.org Git - clang/commit
[AST] Update the comments of the various Expr::Ignore* + Related cleanups
authorBruno Ricci <riccibrun@gmail.com>
Sun, 3 Feb 2019 19:50:56 +0000 (19:50 +0000)
committerBruno Ricci <riccibrun@gmail.com>
Sun, 3 Feb 2019 19:50:56 +0000 (19:50 +0000)
commit749fd7613d081a12c0dd43ea88d5c63c2ead2a21
tree34b491abc27542173921ecb14253eb81de381eb6
parent52422ef96e9821d7608f58add4e458a005836429
[AST] Update the comments of the various Expr::Ignore* + Related cleanups

The description of what the various Expr::Ignore* do has drifted from the
actual implementation.

Inspection reveals that IgnoreParenImpCasts() is not equivalent to doing
IgnoreParens() + IgnoreImpCasts() until reaching a fixed point, but
IgnoreParenCasts() is equivalent to doing IgnoreParens() + IgnoreCasts()
until reaching a fixed point. There is also a fair amount of duplication
in the various Expr::Ignore* functions which increase the chance of further
future inconsistencies. In preparation for the next patch which will factor
out the implementation of the various Expr::Ignore*, do the following cleanups:

Remove Stmt::IgnoreImplicit, in favor of Expr::IgnoreImplicit. IgnoreImplicit
is the only function among all of the Expr::Ignore* which is available in Stmt.
There are only a few users of Stmt::IgnoreImplicit. They can just use instead
Expr::IgnoreImplicit like they have to do for the other Ignore*.

Move Expr::IgnoreImpCasts() from Expr.h to Expr.cpp. This made no difference
in the run-time with my usual benchmark (-fsyntax-only on all of Boost).

While we are at it, make IgnoreParenNoopCasts take a const reference to the
ASTContext for const correctness.

Update the comments to match what the Expr::Ignore* are actually doing.
I am not sure that listing exactly what each Expr::Ignore* do is optimal,
but it certainly looks better than the current state which is in my opinion
between misleading and just plain wrong.

The whole patch is NFC (if you count removing Stmt::IgnoreImplicit as NFC).

Differential Revision: https://reviews.llvm.org/D57266

Reviewed By: aaron.ballman

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@353006 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/AST/Expr.h
include/clang/AST/Stmt.h
lib/ARCMigrate/TransRetainReleaseDealloc.cpp
lib/ARCMigrate/TransformActions.cpp
lib/ARCMigrate/Transforms.cpp
lib/AST/Expr.cpp
lib/AST/Stmt.cpp
lib/Analysis/ReachableCode.cpp
lib/Tooling/ASTDiff/ASTDiff.cpp