From: Erich Keane Date: Tue, 20 Feb 2018 22:25:28 +0000 (+0000) Subject: [NFC] In Multiversion Check function, switch to return Diag X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=dbbb8b786018cdb073117f9d6575bdb13167afae;p=clang [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". git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@325633 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp index ab50b43db2..84f75ff645 100644 --- a/lib/Sema/SemaDecl.cpp +++ b/lib/Sema/SemaDecl.cpp @@ -9225,62 +9225,49 @@ static bool CheckMultiVersionAdditionalRules(Sema &S, const FunctionDecl *OldFD, 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(NewFD)) { - if (NewCXXFD->isVirtual()) { - S.Diag(NewCXXFD->getLocation(), diag::err_multiversion_doesnt_support) - << VirtFuncs; - return true; - } + if (NewCXXFD->isVirtual()) + return S.Diag(NewCXXFD->getLocation(), + diag::err_multiversion_doesnt_support) + << VirtFuncs; - if (const auto *NewCXXCtor = dyn_cast(NewFD)) { - S.Diag(NewCXXCtor->getLocation(), diag::err_multiversion_doesnt_support) - << Constructors; - return true; - } + if (const auto *NewCXXCtor = dyn_cast(NewFD)) + return S.Diag(NewCXXCtor->getLocation(), + diag::err_multiversion_doesnt_support) + << Constructors; - if (const auto *NewCXXDtor = dyn_cast(NewFD)) { - S.Diag(NewCXXDtor->getLocation(), diag::err_multiversion_doesnt_support) - << Destructors; - return true; - } + if (const auto *NewCXXDtor = dyn_cast(NewFD)) + return S.Diag(NewCXXDtor->getLocation(), + diag::err_multiversion_doesnt_support) + << Destructors; } - 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 (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(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 CheckMultiVersionAdditionalRules(Sema &S, const FunctionDecl *OldFD, 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 (OldReturnType != NewReturnType) + return S.Diag(NewFD->getLocation(), diag::err_multiversion_diff) + << ReturnType; - if (OldFD->isConstexpr() != NewFD->isConstexpr()) { - S.Diag(NewFD->getLocation(), diag::err_multiversion_diff) - << ConstexprSpec; - return true; - } + if (OldFD->isConstexpr() != NewFD->isConstexpr()) + return S.Diag(NewFD->getLocation(), diag::err_multiversion_diff) + << ConstexprSpec; - if (OldFD->isInlineSpecified() != NewFD->isInlineSpecified()) { - S.Diag(NewFD->getLocation(), diag::err_multiversion_diff) << InlineSpec; - return true; - } + if (OldFD->isInlineSpecified() != NewFD->isInlineSpecified()) + return S.Diag(NewFD->getLocation(), diag::err_multiversion_diff) + << InlineSpec; - if (OldFD->getStorageClass() != NewFD->getStorageClass()) { - S.Diag(NewFD->getLocation(), diag::err_multiversion_diff) << StorageClass; - return true; - } + if (OldFD->getStorageClass() != NewFD->getStorageClass()) + return S.Diag(NewFD->getLocation(), diag::err_multiversion_diff) + << StorageClass; - if (OldFD->isExternC() != NewFD->isExternC()) { - S.Diag(NewFD->getLocation(), diag::err_multiversion_diff) << Linkage; - return true; - } + if (OldFD->isExternC() != NewFD->isExternC()) + return S.Diag(NewFD->getLocation(), diag::err_multiversion_diff) + << Linkage; if (S.CheckEquivalentExceptionSpec( OldFD->getType()->getAs(), OldFD->getLocation(),