diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/AST/Expr.cpp | 2 | ||||
-rw-r--r-- | lib/AST/ExprConstant.cpp | 2 | ||||
-rw-r--r-- | lib/CodeGen/CGExpr.cpp | 3 | ||||
-rw-r--r-- | lib/CodeGen/CGExprAgg.cpp | 5 | ||||
-rw-r--r-- | lib/CodeGen/CGExprConstant.cpp | 1 | ||||
-rw-r--r-- | lib/CodeGen/CGExprScalar.cpp | 3 | ||||
-rw-r--r-- | lib/Sema/SemaCXXCast.cpp | 8 | ||||
-rw-r--r-- | lib/StaticAnalyzer/Core/ExprEngine.cpp | 1 |
8 files changed, 3 insertions, 22 deletions
diff --git a/lib/AST/Expr.cpp b/lib/AST/Expr.cpp index 227d6569dd..28f42124f9 100644 --- a/lib/AST/Expr.cpp +++ b/lib/AST/Expr.cpp @@ -987,8 +987,6 @@ const char *CastExpr::getCastKindName() const { return "UncheckedDerivedToBase"; case CK_Dynamic: return "Dynamic"; - case CK_DynamicToNull: - return "DynamicToNull"; case CK_ToUnion: return "ToUnion"; case CK_ArrayToPointerDecay: diff --git a/lib/AST/ExprConstant.cpp b/lib/AST/ExprConstant.cpp index aa8d91a6d6..e0f9958298 100644 --- a/lib/AST/ExprConstant.cpp +++ b/lib/AST/ExprConstant.cpp @@ -1768,7 +1768,6 @@ bool IntExprEvaluator::VisitCastExpr(CastExpr *E) { case CK_DerivedToBase: case CK_UncheckedDerivedToBase: case CK_Dynamic: - case CK_DynamicToNull: case CK_ToUnion: case CK_ArrayToPointerDecay: case CK_FunctionToPointerDecay: @@ -2316,7 +2315,6 @@ bool ComplexExprEvaluator::VisitCastExpr(CastExpr *E) { case CK_DerivedToBase: case CK_UncheckedDerivedToBase: case CK_Dynamic: - case CK_DynamicToNull: case CK_ToUnion: case CK_ArrayToPointerDecay: case CK_FunctionToPointerDecay: diff --git a/lib/CodeGen/CGExpr.cpp b/lib/CodeGen/CGExpr.cpp index ad51316a1f..a35f81ca20 100644 --- a/lib/CodeGen/CGExpr.cpp +++ b/lib/CodeGen/CGExpr.cpp @@ -1867,8 +1867,7 @@ LValue CodeGenFunction::EmitCastLValue(const CastExpr *E) { return MakeAddrLValue(V, E->getType()); } - case CK_Dynamic: - case CK_DynamicToNull: { + case CK_Dynamic: { LValue LV = EmitLValue(E->getSubExpr()); llvm::Value *V = LV.getAddress(); const CXXDynamicCastExpr *DCE = cast<CXXDynamicCastExpr>(E); diff --git a/lib/CodeGen/CGExprAgg.cpp b/lib/CodeGen/CGExprAgg.cpp index 5e1ac3cbac..75e3a7879d 100644 --- a/lib/CodeGen/CGExprAgg.cpp +++ b/lib/CodeGen/CGExprAgg.cpp @@ -255,10 +255,7 @@ void AggExprEmitter::VisitCastExpr(CastExpr *E) { } switch (E->getCastKind()) { - case CK_Dynamic: - case CK_DynamicToNull: { - - // FIXME: Actually handle DynamicToNull here. + case CK_Dynamic: { assert(isa<CXXDynamicCastExpr>(E) && "CK_Dynamic without a dynamic_cast?"); LValue LV = CGF.EmitCheckedLValue(E->getSubExpr()); // FIXME: Do we also need to handle property references here? diff --git a/lib/CodeGen/CGExprConstant.cpp b/lib/CodeGen/CGExprConstant.cpp index 578a37f0fc..822a999b96 100644 --- a/lib/CodeGen/CGExprConstant.cpp +++ b/lib/CodeGen/CGExprConstant.cpp @@ -552,7 +552,6 @@ public: case CK_GetObjCProperty: case CK_ToVoid: case CK_Dynamic: - case CK_DynamicToNull: case CK_ResolveUnknownAnyType: return 0; diff --git a/lib/CodeGen/CGExprScalar.cpp b/lib/CodeGen/CGExprScalar.cpp index 322b6e0c49..65aa46fff0 100644 --- a/lib/CodeGen/CGExprScalar.cpp +++ b/lib/CodeGen/CGExprScalar.cpp @@ -1053,8 +1053,7 @@ Value *ScalarExprEmitter::EmitCastExpr(CastExpr *CE) { CE->path_begin(), CE->path_end(), ShouldNullCheckClassCastValue(CE)); } - case CK_Dynamic: - case CK_DynamicToNull: { + case CK_Dynamic: { Value *V = Visit(const_cast<Expr*>(E)); const CXXDynamicCastExpr *DCE = cast<CXXDynamicCastExpr>(CE); return CGF.EmitDynamicCast(V, DCE); diff --git a/lib/Sema/SemaCXXCast.cpp b/lib/Sema/SemaCXXCast.cpp index 52a13ef5b2..31a772a5d8 100644 --- a/lib/Sema/SemaCXXCast.cpp +++ b/lib/Sema/SemaCXXCast.cpp @@ -522,14 +522,6 @@ CheckDynamicCast(Sema &Self, ExprResult &SrcExpr, QualType DestType, return; } - // If the source class is marked 'final', and the destination class does not - // derive from the source class, then we know that the result is always null. - if (SrcRecord->getDecl()->hasAttr<FinalAttr>() && - !Self.IsDerivedFrom(DestPointee, SrcPointee)) { - Kind = CK_DynamicToNull; - return; - } - // C++ 5.2.7p5 // Upcasts are resolved statically. if (DestRecord && Self.IsDerivedFrom(SrcPointee, DestPointee)) { diff --git a/lib/StaticAnalyzer/Core/ExprEngine.cpp b/lib/StaticAnalyzer/Core/ExprEngine.cpp index 6a7637097b..0a7f1e93af 100644 --- a/lib/StaticAnalyzer/Core/ExprEngine.cpp +++ b/lib/StaticAnalyzer/Core/ExprEngine.cpp @@ -2178,7 +2178,6 @@ void ExprEngine::VisitCast(const CastExpr *CastE, const Expr *Ex, // Various C++ casts that are not handled yet. case CK_ResolveUnknownAnyType: case CK_Dynamic: - case CK_DynamicToNull: case CK_ToUnion: case CK_BaseToDerived: case CK_NullToMemberPointer: |