diff options
Diffstat (limited to 'clang/lib/Sema')
-rw-r--r-- | clang/lib/Sema/Sema.cpp | 5 | ||||
-rw-r--r-- | clang/lib/Sema/SemaCUDA.cpp | 4 | ||||
-rw-r--r-- | clang/lib/Sema/SemaDeclAttr.cpp | 26 | ||||
-rw-r--r-- | clang/lib/Sema/SemaOverload.cpp | 33 | ||||
-rw-r--r-- | clang/lib/Sema/SemaTemplateInstantiateDecl.cpp | 3 |
5 files changed, 15 insertions, 56 deletions
diff --git a/clang/lib/Sema/Sema.cpp b/clang/lib/Sema/Sema.cpp index 6d7a57d..03dd39b 100644 --- a/clang/lib/Sema/Sema.cpp +++ b/clang/lib/Sema/Sema.cpp @@ -1676,7 +1676,7 @@ void Sema::EmitDiagnostic(unsigned DiagID, const DiagnosticBuilder &DB) { // that is different from the last template instantiation where // we emitted an error, print a template instantiation // backtrace. - if (!Diags.getDiagnosticIDs()->isNote(DiagID)) + if (!DiagnosticIDs::isBuiltinNote(DiagID)) PrintContextStack(); } @@ -1690,8 +1690,7 @@ bool Sema::hasUncompilableErrorOccurred() const { if (Loc == DeviceDeferredDiags.end()) return false; for (auto PDAt : Loc->second) { - if (Diags.getDiagnosticIDs()->isDefaultMappingAsError( - PDAt.second.getDiagID())) + if (DiagnosticIDs::isDefaultMappingAsError(PDAt.second.getDiagID())) return true; } return false; diff --git a/clang/lib/Sema/SemaCUDA.cpp b/clang/lib/Sema/SemaCUDA.cpp index fbb3de4..ec37c0d 100644 --- a/clang/lib/Sema/SemaCUDA.cpp +++ b/clang/lib/Sema/SemaCUDA.cpp @@ -835,7 +835,7 @@ SemaBase::SemaDiagnosticBuilder SemaCUDA::DiagIfDeviceCode(SourceLocation Loc, if (!getLangOpts().CUDAIsDevice) return SemaDiagnosticBuilder::K_Nop; if (SemaRef.IsLastErrorImmediate && - getDiagnostics().getDiagnosticIDs()->isNote(DiagID)) + getDiagnostics().getDiagnosticIDs()->isBuiltinNote(DiagID)) return SemaDiagnosticBuilder::K_Immediate; return (SemaRef.getEmissionStatus(CurFunContext) == Sema::FunctionEmissionStatus::Emitted) @@ -866,7 +866,7 @@ Sema::SemaDiagnosticBuilder SemaCUDA::DiagIfHostCode(SourceLocation Loc, if (getLangOpts().CUDAIsDevice) return SemaDiagnosticBuilder::K_Nop; if (SemaRef.IsLastErrorImmediate && - getDiagnostics().getDiagnosticIDs()->isNote(DiagID)) + getDiagnostics().getDiagnosticIDs()->isBuiltinNote(DiagID)) return SemaDiagnosticBuilder::K_Immediate; return (SemaRef.getEmissionStatus(CurFunContext) == Sema::FunctionEmissionStatus::Emitted) diff --git a/clang/lib/Sema/SemaDeclAttr.cpp b/clang/lib/Sema/SemaDeclAttr.cpp index 14cc51c..c9b9f3a 100644 --- a/clang/lib/Sema/SemaDeclAttr.cpp +++ b/clang/lib/Sema/SemaDeclAttr.cpp @@ -852,38 +852,22 @@ static void handleDiagnoseIfAttr(Sema &S, Decl *D, const ParsedAttr &AL) { if (!checkFunctionConditionAttr(S, D, AL, Cond, Msg)) return; - StringRef DefaultSevStr; - if (!S.checkStringLiteralArgumentAttr(AL, 2, DefaultSevStr)) + StringRef DiagTypeStr; + if (!S.checkStringLiteralArgumentAttr(AL, 2, DiagTypeStr)) return; - DiagnoseIfAttr::DefaultSeverity DefaultSev; - if (!DiagnoseIfAttr::ConvertStrToDefaultSeverity(DefaultSevStr, DefaultSev)) { + DiagnoseIfAttr::DiagnosticType DiagType; + if (!DiagnoseIfAttr::ConvertStrToDiagnosticType(DiagTypeStr, DiagType)) { S.Diag(AL.getArgAsExpr(2)->getBeginLoc(), diag::err_diagnose_if_invalid_diagnostic_type); return; } - StringRef WarningGroup; - SmallVector<StringRef, 2> Options; - if (AL.getNumArgs() > 3) { - if (!S.checkStringLiteralArgumentAttr(AL, 3, WarningGroup)) - return; - if (WarningGroup.empty() || - !S.getDiagnostics().getDiagnosticIDs()->getGroupForWarningOption( - WarningGroup)) { - S.Diag(AL.getArgAsExpr(3)->getBeginLoc(), - diag::err_diagnose_if_unknown_warning) - << WarningGroup; - return; - } - } - bool ArgDependent = false; if (const auto *FD = dyn_cast<FunctionDecl>(D)) ArgDependent = ArgumentDependenceChecker(FD).referencesArgs(Cond); D->addAttr(::new (S.Context) DiagnoseIfAttr( - S.Context, AL, Cond, Msg, DefaultSev, WarningGroup, ArgDependent, - cast<NamedDecl>(D))); + S.Context, AL, Cond, Msg, DiagType, ArgDependent, cast<NamedDecl>(D))); } static void handleNoBuiltinAttr(Sema &S, Decl *D, const ParsedAttr &AL) { diff --git a/clang/lib/Sema/SemaOverload.cpp b/clang/lib/Sema/SemaOverload.cpp index d304f32..0c1e054 100644 --- a/clang/lib/Sema/SemaOverload.cpp +++ b/clang/lib/Sema/SemaOverload.cpp @@ -7300,10 +7300,8 @@ static bool diagnoseDiagnoseIfAttrsWith(Sema &S, const NamedDecl *ND, return false; auto WarningBegin = std::stable_partition( - Attrs.begin(), Attrs.end(), [](const DiagnoseIfAttr *DIA) { - return DIA->getDefaultSeverity() == DiagnoseIfAttr::DS_error && - DIA->getWarningGroup().empty(); - }); + Attrs.begin(), Attrs.end(), + [](const DiagnoseIfAttr *DIA) { return DIA->isError(); }); // Note that diagnose_if attributes are late-parsed, so they appear in the // correct order (unlike enable_if attributes). @@ -7317,32 +7315,11 @@ static bool diagnoseDiagnoseIfAttrsWith(Sema &S, const NamedDecl *ND, return true; } - auto ToSeverity = [](DiagnoseIfAttr::DefaultSeverity Sev) { - switch (Sev) { - case DiagnoseIfAttr::DS_warning: - return diag::Severity::Warning; - case DiagnoseIfAttr::DS_error: - return diag::Severity::Error; - } - llvm_unreachable("Fully covered switch above!"); - }; - for (const auto *DIA : llvm::make_range(WarningBegin, Attrs.end())) if (IsSuccessful(DIA)) { - if (DIA->getWarningGroup().empty() && - DIA->getDefaultSeverity() == DiagnoseIfAttr::DS_warning) { - S.Diag(Loc, diag::warn_diagnose_if_succeeded) << DIA->getMessage(); - S.Diag(DIA->getLocation(), diag::note_from_diagnose_if) - << DIA->getParent() << DIA->getCond()->getSourceRange(); - } else { - auto DiagGroup = S.Diags.getDiagnosticIDs()->getGroupForWarningOption( - DIA->getWarningGroup()); - assert(DiagGroup); - auto DiagID = S.Diags.getDiagnosticIDs()->getCustomDiagID( - {ToSeverity(DIA->getDefaultSeverity()), "%0", - DiagnosticIDs::CLASS_WARNING, false, false, *DiagGroup}); - S.Diag(Loc, DiagID) << DIA->getMessage(); - } + S.Diag(Loc, diag::warn_diagnose_if_succeeded) << DIA->getMessage(); + S.Diag(DIA->getLocation(), diag::note_from_diagnose_if) + << DIA->getParent() << DIA->getCond()->getSourceRange(); } return false; diff --git a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp index e055c87..c3cb9d5 100644 --- a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp +++ b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp @@ -284,8 +284,7 @@ static void instantiateDependentDiagnoseIfAttr( if (Cond) New->addAttr(new (S.getASTContext()) DiagnoseIfAttr( S.getASTContext(), *DIA, Cond, DIA->getMessage(), - DIA->getDefaultSeverity(), DIA->getWarningGroup(), - DIA->getArgDependent(), New)); + DIA->getDiagnosticType(), DIA->getArgDependent(), New)); } // Constructs and adds to New a new instance of CUDALaunchBoundsAttr using |