From: Mike Stump Date: Tue, 17 Nov 2009 00:08:50 +0000 (+0000) Subject: Minor CFG refinements for typeid and dynamic_cast. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8b152b85b7a6cd51a1c4452e7f8425fb8e32b619;p=clang Minor CFG refinements for typeid and dynamic_cast. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89004 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/CGCXXExpr.cpp b/lib/CodeGen/CGCXXExpr.cpp index 15cda8083d..78734a00fb 100644 --- a/lib/CodeGen/CGCXXExpr.cpp +++ b/lib/CodeGen/CGCXXExpr.cpp @@ -389,7 +389,6 @@ llvm::Value * CodeGenFunction::EmitCXXTypeidExpr(const CXXTypeidExpr *E) { FTy = llvm::FunctionType::get(ResultType, false); llvm::Value *F = CGM.CreateRuntimeFunction(FTy, "__cxa_bad_typeid"); Builder.CreateCall(F)->setDoesNotReturn(); - // FIXME: Should we have the below? Builder.CreateUnreachable(); EmitBlock(NonZeroBlock); } @@ -501,7 +500,7 @@ llvm::Value *CodeGenFunction::EmitDynamicCast(llvm::Value *V, FTy = llvm::FunctionType::get(ResultType, false); llvm::Value *F = CGM.CreateRuntimeFunction(FBadTy, "__cxa_bad_cast"); Builder.CreateCall(F)->setDoesNotReturn(); - // Builder.CreateUnreachable(); + Builder.CreateUnreachable(); } } @@ -516,8 +515,6 @@ llvm::Value *CodeGenFunction::EmitDynamicCast(llvm::Value *V, PHI->reserveOperandSpace(3); PHI->addIncoming(V, NonZeroBlock); PHI->addIncoming(llvm::Constant::getNullValue(LTy), NullBlock); - if (ThrowOnBad) - PHI->addIncoming(llvm::Constant::getNullValue(LTy), BadCastBlock); V = PHI; }