diff options
| author | Erich Keane <erich.keane@intel.com> | 2018-02-20 22:25:28 +0000 | 
|---|---|---|
| committer | Erich Keane <erich.keane@intel.com> | 2018-02-20 22:25:28 +0000 | 
| commit | 7399ad3f39a8144c2ff3191e65bf5b5ad23dd651 (patch) | |
| tree | 7208745388dbbdb8618118705ba214fccfa9ff9b /clang/lib | |
| parent | 919f15a1b4fc28bfeeb81d7b642476be8b211642 (diff) | |
| download | bcm5719-llvm-7399ad3f39a8144c2ff3191e65bf5b5ad23dd651.tar.gz bcm5719-llvm-7399ad3f39a8144c2ff3191e65bf5b5ad23dd651.zip | |
[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".
llvm-svn: 325633
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 114 | 
1 files changed, 47 insertions, 67 deletions
| diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index ab50b43db24..84f75ff6455 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/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<CXXMethodDecl>(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<CXXConstructorDecl>(NewFD)) { -      S.Diag(NewCXXCtor->getLocation(), diag::err_multiversion_doesnt_support) -          << Constructors; -      return true; -    } +    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)) { -      S.Diag(NewCXXDtor->getLocation(), diag::err_multiversion_doesnt_support) -          << Destructors; -      return true; -    } +    if (const auto *NewCXXDtor = dyn_cast<CXXDestructorDecl>(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<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 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<FunctionProtoType>(), OldFD->getLocation(), | 

