Minor CFG refinements for typeid and dynamic_cast.
llvm-svn: 89004
This commit is contained in:
parent
4781c3caf8
commit
e8cdcc9ab0
|
@ -389,7 +389,6 @@ llvm::Value * CodeGenFunction::EmitCXXTypeidExpr(const CXXTypeidExpr *E) {
|
||||||
FTy = llvm::FunctionType::get(ResultType, false);
|
FTy = llvm::FunctionType::get(ResultType, false);
|
||||||
llvm::Value *F = CGM.CreateRuntimeFunction(FTy, "__cxa_bad_typeid");
|
llvm::Value *F = CGM.CreateRuntimeFunction(FTy, "__cxa_bad_typeid");
|
||||||
Builder.CreateCall(F)->setDoesNotReturn();
|
Builder.CreateCall(F)->setDoesNotReturn();
|
||||||
// FIXME: Should we have the below?
|
|
||||||
Builder.CreateUnreachable();
|
Builder.CreateUnreachable();
|
||||||
EmitBlock(NonZeroBlock);
|
EmitBlock(NonZeroBlock);
|
||||||
}
|
}
|
||||||
|
@ -501,7 +500,7 @@ llvm::Value *CodeGenFunction::EmitDynamicCast(llvm::Value *V,
|
||||||
FTy = llvm::FunctionType::get(ResultType, false);
|
FTy = llvm::FunctionType::get(ResultType, false);
|
||||||
llvm::Value *F = CGM.CreateRuntimeFunction(FBadTy, "__cxa_bad_cast");
|
llvm::Value *F = CGM.CreateRuntimeFunction(FBadTy, "__cxa_bad_cast");
|
||||||
Builder.CreateCall(F)->setDoesNotReturn();
|
Builder.CreateCall(F)->setDoesNotReturn();
|
||||||
// Builder.CreateUnreachable();
|
Builder.CreateUnreachable();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -516,8 +515,6 @@ llvm::Value *CodeGenFunction::EmitDynamicCast(llvm::Value *V,
|
||||||
PHI->reserveOperandSpace(3);
|
PHI->reserveOperandSpace(3);
|
||||||
PHI->addIncoming(V, NonZeroBlock);
|
PHI->addIncoming(V, NonZeroBlock);
|
||||||
PHI->addIncoming(llvm::Constant::getNullValue(LTy), NullBlock);
|
PHI->addIncoming(llvm::Constant::getNullValue(LTy), NullBlock);
|
||||||
if (ThrowOnBad)
|
|
||||||
PHI->addIncoming(llvm::Constant::getNullValue(LTy), BadCastBlock);
|
|
||||||
V = PHI;
|
V = PHI;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue