Add ExplicitCastExpr to replace the current CastExpr, and have ImplicitCastExpr and ExplicitCastExpr derive from a common base class (CastExpr):
Expr
-> CastExpr
-> ExplicitCastExpr
-> ImplicitCastExpr
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54955 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaChecking.cpp b/lib/Sema/SemaChecking.cpp
index a8782c1..e5e80db 100644
--- a/lib/Sema/SemaChecking.cpp
+++ b/lib/Sema/SemaChecking.cpp
@@ -783,16 +783,10 @@
// For casts, we need to handle conversions from arrays to
// pointer values, and pointer-to-pointer conversions.
- case Stmt::CastExprClass:
+ case Stmt::ExplicitCastExprClass:
case Stmt::ImplicitCastExprClass: {
- Expr* SubExpr;
-
- if (ImplicitCastExpr *IE = dyn_cast<ImplicitCastExpr>(E))
- SubExpr = IE->getSubExpr();
- else
- SubExpr = cast<CastExpr>(E)->getSubExpr();
-
+ Expr* SubExpr = cast<CastExpr>(E)->getSubExpr();
QualType T = SubExpr->getType();
if (T->isPointerType() || T->isObjCQualifiedIdType())