forked from OSchip/llvm-project
Refactor cast<>'s in if conditionals, which can only assert on failure.
Summary: This patch refactors several instances of cast<> used in if conditionals. Since cast<> asserts on failure, the else branch can never be taken. In some cases, the fix is to replace cast<> with dyn_cast<>. While others required the removal of the conditional and some minor refactoring. A discussion can be seen here: http://lists.llvm.org/pipermail/cfe-commits/Week-of-Mon-20190318/265044.html Differential Revision: https://reviews.llvm.org/D59529 llvm-svn: 356441
This commit is contained in:
parent
c60bc94afc
commit
f170dff3c1
|
@ -8460,44 +8460,41 @@ Error ASTImporter::ImportDefinition_New(Decl *From) {
|
|||
if (!To)
|
||||
return llvm::make_error<ImportError>();
|
||||
|
||||
if (auto *FromDC = cast<DeclContext>(From)) {
|
||||
ASTNodeImporter Importer(*this);
|
||||
auto *FromDC = cast<DeclContext>(From);
|
||||
ASTNodeImporter Importer(*this);
|
||||
|
||||
if (auto *ToRecord = dyn_cast<RecordDecl>(To)) {
|
||||
if (!ToRecord->getDefinition()) {
|
||||
return Importer.ImportDefinition(
|
||||
cast<RecordDecl>(FromDC), ToRecord,
|
||||
ASTNodeImporter::IDK_Everything);
|
||||
}
|
||||
if (auto *ToRecord = dyn_cast<RecordDecl>(To)) {
|
||||
if (!ToRecord->getDefinition()) {
|
||||
return Importer.ImportDefinition(
|
||||
cast<RecordDecl>(FromDC), ToRecord,
|
||||
ASTNodeImporter::IDK_Everything);
|
||||
}
|
||||
|
||||
if (auto *ToEnum = dyn_cast<EnumDecl>(To)) {
|
||||
if (!ToEnum->getDefinition()) {
|
||||
return Importer.ImportDefinition(
|
||||
cast<EnumDecl>(FromDC), ToEnum, ASTNodeImporter::IDK_Everything);
|
||||
}
|
||||
}
|
||||
|
||||
if (auto *ToIFace = dyn_cast<ObjCInterfaceDecl>(To)) {
|
||||
if (!ToIFace->getDefinition()) {
|
||||
return Importer.ImportDefinition(
|
||||
cast<ObjCInterfaceDecl>(FromDC), ToIFace,
|
||||
ASTNodeImporter::IDK_Everything);
|
||||
}
|
||||
}
|
||||
|
||||
if (auto *ToProto = dyn_cast<ObjCProtocolDecl>(To)) {
|
||||
if (!ToProto->getDefinition()) {
|
||||
return Importer.ImportDefinition(
|
||||
cast<ObjCProtocolDecl>(FromDC), ToProto,
|
||||
ASTNodeImporter::IDK_Everything);
|
||||
}
|
||||
}
|
||||
|
||||
return Importer.ImportDeclContext(FromDC, true);
|
||||
}
|
||||
|
||||
return Error::success();
|
||||
if (auto *ToEnum = dyn_cast<EnumDecl>(To)) {
|
||||
if (!ToEnum->getDefinition()) {
|
||||
return Importer.ImportDefinition(
|
||||
cast<EnumDecl>(FromDC), ToEnum, ASTNodeImporter::IDK_Everything);
|
||||
}
|
||||
}
|
||||
|
||||
if (auto *ToIFace = dyn_cast<ObjCInterfaceDecl>(To)) {
|
||||
if (!ToIFace->getDefinition()) {
|
||||
return Importer.ImportDefinition(
|
||||
cast<ObjCInterfaceDecl>(FromDC), ToIFace,
|
||||
ASTNodeImporter::IDK_Everything);
|
||||
}
|
||||
}
|
||||
|
||||
if (auto *ToProto = dyn_cast<ObjCProtocolDecl>(To)) {
|
||||
if (!ToProto->getDefinition()) {
|
||||
return Importer.ImportDefinition(
|
||||
cast<ObjCProtocolDecl>(FromDC), ToProto,
|
||||
ASTNodeImporter::IDK_Everything);
|
||||
}
|
||||
}
|
||||
|
||||
return Importer.ImportDeclContext(FromDC, true);
|
||||
}
|
||||
|
||||
void ASTImporter::ImportDefinition(Decl *From) {
|
||||
|
|
|
@ -1179,13 +1179,15 @@ DeclContext *DeclContext::getPrimaryContext() {
|
|||
return this;
|
||||
|
||||
case Decl::ObjCInterface:
|
||||
if (auto *Def = cast<ObjCInterfaceDecl>(this)->getDefinition())
|
||||
return Def;
|
||||
if (auto *OID = dyn_cast<ObjCInterfaceDecl>(this))
|
||||
if (auto *Def = OID->getDefinition())
|
||||
return Def;
|
||||
return this;
|
||||
|
||||
case Decl::ObjCProtocol:
|
||||
if (auto *Def = cast<ObjCProtocolDecl>(this)->getDefinition())
|
||||
return Def;
|
||||
if (auto *OPD = dyn_cast<ObjCProtocolDecl>(this))
|
||||
if (auto *Def = OPD->getDefinition())
|
||||
return Def;
|
||||
return this;
|
||||
|
||||
case Decl::ObjCCategory:
|
||||
|
|
|
@ -1698,31 +1698,20 @@ ConstantLValueEmitter::tryEmitAbsolute(llvm::Type *destTy) {
|
|||
auto offset = getOffset();
|
||||
|
||||
// If we're producing a pointer, this is easy.
|
||||
if (auto destPtrTy = cast<llvm::PointerType>(destTy)) {
|
||||
if (Value.isNullPointer()) {
|
||||
// FIXME: integer offsets from non-zero null pointers.
|
||||
return CGM.getNullPointer(destPtrTy, DestType);
|
||||
}
|
||||
|
||||
// Convert the integer to a pointer-sized integer before converting it
|
||||
// to a pointer.
|
||||
// FIXME: signedness depends on the original integer type.
|
||||
auto intptrTy = CGM.getDataLayout().getIntPtrType(destPtrTy);
|
||||
llvm::Constant *C = offset;
|
||||
C = llvm::ConstantExpr::getIntegerCast(getOffset(), intptrTy,
|
||||
/*isSigned*/ false);
|
||||
C = llvm::ConstantExpr::getIntToPtr(C, destPtrTy);
|
||||
return C;
|
||||
auto destPtrTy = cast<llvm::PointerType>(destTy);
|
||||
if (Value.isNullPointer()) {
|
||||
// FIXME: integer offsets from non-zero null pointers.
|
||||
return CGM.getNullPointer(destPtrTy, DestType);
|
||||
}
|
||||
|
||||
// Otherwise, we're basically returning an integer constant.
|
||||
|
||||
// FIXME: this does the wrong thing with ptrtoint of a null pointer,
|
||||
// but since we don't know the original pointer type, there's not much
|
||||
// we can do about it.
|
||||
|
||||
auto C = getOffset();
|
||||
C = llvm::ConstantExpr::getIntegerCast(C, destTy, /*isSigned*/ false);
|
||||
// Convert the integer to a pointer-sized integer before converting it
|
||||
// to a pointer.
|
||||
// FIXME: signedness depends on the original integer type.
|
||||
auto intptrTy = CGM.getDataLayout().getIntPtrType(destPtrTy);
|
||||
llvm::Constant *C = offset;
|
||||
C = llvm::ConstantExpr::getIntegerCast(getOffset(), intptrTy,
|
||||
/*isSigned*/ false);
|
||||
C = llvm::ConstantExpr::getIntToPtr(C, destPtrTy);
|
||||
return C;
|
||||
}
|
||||
|
||||
|
|
|
@ -735,7 +735,7 @@ public:
|
|||
CGM.CreateRuntimeFunction(FTy, "_CxxThrowException");
|
||||
// _CxxThrowException is stdcall on 32-bit x86 platforms.
|
||||
if (CGM.getTarget().getTriple().getArch() == llvm::Triple::x86) {
|
||||
if (auto *Fn = cast<llvm::Function>(Throw.getCallee()))
|
||||
if (auto *Fn = dyn_cast<llvm::Function>(Throw.getCallee()))
|
||||
Fn->setCallingConv(llvm::CallingConv::X86_StdCall);
|
||||
}
|
||||
return Throw;
|
||||
|
|
|
@ -10901,7 +10901,7 @@ buildDeclareReductionRef(Sema &SemaRef, SourceLocation Loc, SourceRange Range,
|
|||
for (NamedDecl *D : ULE->decls()) {
|
||||
if (D == PrevD)
|
||||
Lookups.push_back(UnresolvedSet<8>());
|
||||
else if (auto *DRD = cast<OMPDeclareReductionDecl>(D))
|
||||
else if (auto *DRD = dyn_cast<OMPDeclareReductionDecl>(D))
|
||||
Lookups.back().addDecl(DRD);
|
||||
PrevD = D;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue