aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Sema
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/Sema')
-rw-r--r--clang/lib/Sema/Sema.cpp5
-rw-r--r--clang/lib/Sema/SemaCUDA.cpp4
-rw-r--r--clang/lib/Sema/SemaDeclAttr.cpp26
-rw-r--r--clang/lib/Sema/SemaOverload.cpp33
-rw-r--r--clang/lib/Sema/SemaTemplateInstantiateDecl.cpp3
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