Author: erichkeane Date: Tue Feb 20 14:25:28 2018 New Revision: 325633 URL: http://llvm.org/viewvc/llvm-project?rev=325633&view=rev Log: [NFC] In Multiversion Check function, switch to return Diag
This function did a lot of 'Diag, return true' stuff. This resulted in needing to introduce scopes in quite a few places. This patch replaces useages of a single "S.Diag" followed by return true with simply "return S.Diag". Modified: cfe/trunk/lib/Sema/SemaDecl.cpp Modified: cfe/trunk/lib/Sema/SemaDecl.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDecl.cpp?rev=325633&r1=325632&r2=325633&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaDecl.cpp (original) +++ cfe/trunk/lib/Sema/SemaDecl.cpp Tue Feb 20 14:25:28 2018 @@ -9225,62 +9225,49 @@ static bool CheckMultiVersionAdditionalR return true; } - if (std::distance(NewFD->attr_begin(), NewFD->attr_end()) != 1) { - S.Diag(NewFD->getLocation(), diag::err_multiversion_no_other_attrs); - return true; - } - - if (NewFD->getTemplatedKind() == FunctionDecl::TK_FunctionTemplate) { - S.Diag(NewFD->getLocation(), diag::err_multiversion_doesnt_support) - << FuncTemplates; - return true; - } + if (std::distance(NewFD->attr_begin(), NewFD->attr_end()) != 1) + return S.Diag(NewFD->getLocation(), diag::err_multiversion_no_other_attrs); + if (NewFD->getTemplatedKind() == FunctionDecl::TK_FunctionTemplate) + return S.Diag(NewFD->getLocation(), diag::err_multiversion_doesnt_support) + << FuncTemplates; if (const auto *NewCXXFD = dyn_cast<CXXMethodDecl>(NewFD)) { - if (NewCXXFD->isVirtual()) { - S.Diag(NewCXXFD->getLocation(), diag::err_multiversion_doesnt_support) - << VirtFuncs; - return true; - } - - if (const auto *NewCXXCtor = dyn_cast<CXXConstructorDecl>(NewFD)) { - S.Diag(NewCXXCtor->getLocation(), diag::err_multiversion_doesnt_support) - << Constructors; - return true; - } - - if (const auto *NewCXXDtor = dyn_cast<CXXDestructorDecl>(NewFD)) { - S.Diag(NewCXXDtor->getLocation(), diag::err_multiversion_doesnt_support) - << Destructors; - return true; - } - } - - if (NewFD->isDeleted()) { - S.Diag(NewFD->getLocation(), diag::err_multiversion_doesnt_support) - << DeletedFuncs; - } - if (NewFD->isDefaulted()) { - S.Diag(NewFD->getLocation(), diag::err_multiversion_doesnt_support) - << DefaultedFuncs; - } + if (NewCXXFD->isVirtual()) + return S.Diag(NewCXXFD->getLocation(), + diag::err_multiversion_doesnt_support) + << VirtFuncs; + + if (const auto *NewCXXCtor = dyn_cast<CXXConstructorDecl>(NewFD)) + return S.Diag(NewCXXCtor->getLocation(), + diag::err_multiversion_doesnt_support) + << Constructors; + + if (const auto *NewCXXDtor = dyn_cast<CXXDestructorDecl>(NewFD)) + return S.Diag(NewCXXDtor->getLocation(), + diag::err_multiversion_doesnt_support) + << Destructors; + } + + if (NewFD->isDeleted()) + return S.Diag(NewFD->getLocation(), diag::err_multiversion_doesnt_support) + << DeletedFuncs; + + if (NewFD->isDefaulted()) + return S.Diag(NewFD->getLocation(), diag::err_multiversion_doesnt_support) + << DefaultedFuncs; QualType NewQType = S.getASTContext().getCanonicalType(NewFD->getType()); const auto *NewType = cast<FunctionType>(NewQType); QualType NewReturnType = NewType->getReturnType(); - if (NewReturnType->isUndeducedType()) { - S.Diag(NewFD->getLocation(), diag::err_multiversion_doesnt_support) - << DeducedReturn; - return true; - } + if (NewReturnType->isUndeducedType()) + return S.Diag(NewFD->getLocation(), diag::err_multiversion_doesnt_support) + << DeducedReturn; // Only allow transition to MultiVersion if it hasn't been used. - if (OldFD && CausesMV && OldFD->isUsed(false)) { - S.Diag(NewFD->getLocation(), diag::err_multiversion_after_used); - return true; - } + if (OldFD && CausesMV && OldFD->isUsed(false)) + return S.Diag(NewFD->getLocation(), diag::err_multiversion_after_used); // Ensure the return type is identical. if (OldFD) { @@ -9289,38 +9276,31 @@ static bool CheckMultiVersionAdditionalR FunctionType::ExtInfo OldTypeInfo = OldType->getExtInfo(); FunctionType::ExtInfo NewTypeInfo = NewType->getExtInfo(); - if (OldTypeInfo.getCC() != NewTypeInfo.getCC()) { - S.Diag(NewFD->getLocation(), diag::err_multiversion_diff) << CallingConv; - return true; - } + if (OldTypeInfo.getCC() != NewTypeInfo.getCC()) + return S.Diag(NewFD->getLocation(), diag::err_multiversion_diff) + << CallingConv; QualType OldReturnType = OldType->getReturnType(); - if (OldReturnType != NewReturnType) { - S.Diag(NewFD->getLocation(), diag::err_multiversion_diff) << ReturnType; - return true; - } - - if (OldFD->isConstexpr() != NewFD->isConstexpr()) { - S.Diag(NewFD->getLocation(), diag::err_multiversion_diff) - << ConstexprSpec; - return true; - } - - if (OldFD->isInlineSpecified() != NewFD->isInlineSpecified()) { - S.Diag(NewFD->getLocation(), diag::err_multiversion_diff) << InlineSpec; - return true; - } - - if (OldFD->getStorageClass() != NewFD->getStorageClass()) { - S.Diag(NewFD->getLocation(), diag::err_multiversion_diff) << StorageClass; - return true; - } - - if (OldFD->isExternC() != NewFD->isExternC()) { - S.Diag(NewFD->getLocation(), diag::err_multiversion_diff) << Linkage; - return true; - } + if (OldReturnType != NewReturnType) + return S.Diag(NewFD->getLocation(), diag::err_multiversion_diff) + << ReturnType; + + if (OldFD->isConstexpr() != NewFD->isConstexpr()) + return S.Diag(NewFD->getLocation(), diag::err_multiversion_diff) + << ConstexprSpec; + + if (OldFD->isInlineSpecified() != NewFD->isInlineSpecified()) + return S.Diag(NewFD->getLocation(), diag::err_multiversion_diff) + << InlineSpec; + + if (OldFD->getStorageClass() != NewFD->getStorageClass()) + return S.Diag(NewFD->getLocation(), diag::err_multiversion_diff) + << StorageClass; + + if (OldFD->isExternC() != NewFD->isExternC()) + return S.Diag(NewFD->getLocation(), diag::err_multiversion_diff) + << Linkage; if (S.CheckEquivalentExceptionSpec( OldFD->getType()->getAs<FunctionProtoType>(), OldFD->getLocation(), _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits