diff options
Diffstat (limited to 'clang/lib/AST')
| -rw-r--r-- | clang/lib/AST/Expr.cpp | 7 | 
1 files changed, 7 insertions, 0 deletions
diff --git a/clang/lib/AST/Expr.cpp b/clang/lib/AST/Expr.cpp index 4e05a850270..66f06e090af 100644 --- a/clang/lib/AST/Expr.cpp +++ b/clang/lib/AST/Expr.cpp @@ -1958,6 +1958,13 @@ bool Expr::isNullPointerConstant(ASTContext &Ctx,  FieldDecl *Expr::getBitField() {    Expr *E = this->IgnoreParens(); +  while (ImplicitCastExpr *ICE = dyn_cast<ImplicitCastExpr>(E)) { +    if (ICE->isLvalueCast() && ICE->getCastKind() == CastExpr::CK_NoOp) +      E = ICE->getSubExpr()->IgnoreParens(); +    else +      break; +  } +    if (MemberExpr *MemRef = dyn_cast<MemberExpr>(E))      if (FieldDecl *Field = dyn_cast<FieldDecl>(MemRef->getMemberDecl()))        if (Field->isBitField())  | 

