From d829a02514e05c88163ae935494800b1a3c12041 Mon Sep 17 00:00:00 2001 From: Anders Carlsson Date: Sat, 24 Apr 2010 21:06:20 +0000 Subject: Add a new GetAddressOfBaseClass overload that takes a base path and. Use it for derived-to-base casts. llvm-svn: 102270 --- clang/lib/CodeGen/CGExprScalar.cpp | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) (limited to 'clang/lib/CodeGen/CGExprScalar.cpp') diff --git a/clang/lib/CodeGen/CGExprScalar.cpp b/clang/lib/CodeGen/CGExprScalar.cpp index e1e22cef563..f38126b8e7a 100644 --- a/clang/lib/CodeGen/CGExprScalar.cpp +++ b/clang/lib/CodeGen/CGExprScalar.cpp @@ -840,15 +840,9 @@ Value *ScalarExprEmitter::EmitCastExpr(CastExpr *CE) { CXXRecordDecl *DerivedClassDecl = cast(DerivedClassTy->getDecl()); - const RecordType *BaseClassTy = - DestTy->getAs()->getPointeeType()->getAs(); - CXXRecordDecl *BaseClassDecl = cast(BaseClassTy->getDecl()); - - Value *Src = Visit(const_cast(E)); - - bool NullCheckValue = ShouldNullCheckClassCastValue(CE); - return CGF.GetAddressOfBaseClass(Src, DerivedClassDecl, BaseClassDecl, - NullCheckValue); + return CGF.GetAddressOfBaseClass(Visit(E), DerivedClassDecl, + CE->getBasePath(), + ShouldNullCheckClassCastValue(CE)); } case CastExpr::CK_Dynamic: { Value *V = Visit(const_cast(E)); -- cgit v1.2.3