From: Alp Toker Date: Tue, 10 Jun 2014 09:31:37 +0000 (+0000) Subject: Improve diagnostic mapping terminology X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c726c367f4fe33e4671d8695bfcc1b7b1bb0d112;p=platform%2Fupstream%2Fllvm.git Improve diagnostic mapping terminology Diagnostic mappings are used to calculate the final severity of diagnostic instances. Detangle the implementation to reflect the terminology used in documentation and bindings. No change in functionality. llvm-svn: 210518 --- diff --git a/clang/include/clang/Basic/Diagnostic.h b/clang/include/clang/Basic/Diagnostic.h index 4926cec..4270c0f 100644 --- a/clang/include/clang/Basic/Diagnostic.h +++ b/clang/include/clang/Basic/Diagnostic.h @@ -200,7 +200,7 @@ private: /// \brief Mapping information for diagnostics. /// /// Mapping info is packed into four bits per diagnostic. The low three - /// bits are the mapping (an instance of diag::Mapping), or zero if unset. + /// bits are the mapping (an instance of diag::Severity), or zero if unset. /// The high bit is set when the mapping was established as a user mapping. /// If the high bit is clear, then the low bits are set to the default /// value, and should be mapped with -pedantic, -Werror, etc. @@ -209,19 +209,18 @@ private: /// the state so that we know what is the diagnostic state at any given /// source location. class DiagState { - llvm::DenseMap DiagMap; + llvm::DenseMap DiagMap; public: - typedef llvm::DenseMap::iterator - iterator; - typedef llvm::DenseMap::const_iterator - const_iterator; + typedef llvm::DenseMap::iterator iterator; + typedef llvm::DenseMap::const_iterator + const_iterator; - void setMappingInfo(diag::kind Diag, DiagnosticMappingInfo Info) { + void setMapping(diag::kind Diag, DiagnosticMapping Info) { DiagMap[Diag] = Info; } - DiagnosticMappingInfo &getOrAddMappingInfo(diag::kind Diag); + DiagnosticMapping &getOrAddMapping(diag::kind Diag); const_iterator begin() const { return DiagMap.begin(); } const_iterator end() const { return DiagMap.end(); } @@ -547,7 +546,7 @@ public: /// /// \param Loc The source location that this change of diagnostic state should /// take affect. It can be null if we are setting the latest state. - void setDiagnosticMapping(diag::kind Diag, diag::Mapping Map, + void setDiagnosticMapping(diag::kind Diag, diag::Severity Map, SourceLocation Loc); /// \brief Change an entire diagnostic group (e.g. "unknown-pragmas") to @@ -558,7 +557,7 @@ public: /// /// \param Loc The source location that this change of diagnostic state should /// take affect. It can be null if we are setting the state from command-line. - bool setDiagnosticGroupMapping(StringRef Group, diag::Mapping Map, + bool setDiagnosticGroupMapping(StringRef Group, diag::Severity Map, SourceLocation Loc = SourceLocation()); /// \brief Set the warning-as-error flag for the given diagnostic group. @@ -579,8 +578,8 @@ public: /// /// Mainly to be used by -Wno-everything to disable all warnings but allow /// subsequent -W options to enable specific warnings. - void setMappingToAllDiagnostics(diag::Mapping Map, - SourceLocation Loc = SourceLocation()); + void setMappingForAllDiagnostics(diag::Severity Map, + SourceLocation Loc = SourceLocation()); bool hasErrorOccurred() const { return ErrorOccurred; } @@ -770,19 +769,19 @@ private: /// or modify at a particular position. SmallVector DiagFixItHints; - DiagnosticMappingInfo makeMappingInfo(diag::Mapping Map, SourceLocation L) { + DiagnosticMapping makeUserMapping(diag::Severity Map, SourceLocation L) { bool isPragma = L.isValid(); - DiagnosticMappingInfo MappingInfo = DiagnosticMappingInfo::Make( - Map, /*IsUser=*/true, isPragma); + DiagnosticMapping Mapping = + DiagnosticMapping::Make(Map, /*IsUser=*/true, isPragma); // If this is a pragma mapping, then set the diagnostic mapping flags so // that we override command line options. if (isPragma) { - MappingInfo.setNoWarningAsError(true); - MappingInfo.setNoErrorAsFatal(true); + Mapping.setNoWarningAsError(true); + Mapping.setNoErrorAsFatal(true); } - return MappingInfo; + return Mapping; } /// \brief Used to report a diagnostic that is finally fully formed. diff --git a/clang/include/clang/Basic/DiagnosticIDs.h b/clang/include/clang/Basic/DiagnosticIDs.h index 3627d1f..9f0a03b 100644 --- a/clang/include/clang/Basic/DiagnosticIDs.h +++ b/clang/include/clang/Basic/DiagnosticIDs.h @@ -60,28 +60,28 @@ namespace clang { /// (emit a warning), MAP_ERROR (emit as an error). It allows clients to /// map errors to MAP_ERROR/MAP_DEFAULT or MAP_FATAL (stop emitting /// diagnostics after this one). - enum Mapping { + enum Severity { // NOTE: 0 means "uncomputed". - MAP_IGNORE = 1, ///< Map this diagnostic to nothing, ignore it. - MAP_REMARK = 2, ///< Map this diagnostic to a remark. - MAP_WARNING = 3, ///< Map this diagnostic to a warning. - MAP_ERROR = 4, ///< Map this diagnostic to an error. - MAP_FATAL = 5 ///< Map this diagnostic to a fatal error. + MAP_IGNORE = 1, ///< Map this diagnostic to nothing, ignore it. + MAP_REMARK = 2, ///< Map this diagnostic to a remark. + MAP_WARNING = 3, ///< Map this diagnostic to a warning. + MAP_ERROR = 4, ///< Map this diagnostic to an error. + MAP_FATAL = 5 ///< Map this diagnostic to a fatal error. }; } -class DiagnosticMappingInfo { - unsigned Mapping : 3; +class DiagnosticMapping { + unsigned Severity : 3; unsigned IsUser : 1; unsigned IsPragma : 1; unsigned HasNoWarningAsError : 1; unsigned HasNoErrorAsFatal : 1; public: - static DiagnosticMappingInfo Make(diag::Mapping Mapping, bool IsUser, - bool IsPragma) { - DiagnosticMappingInfo Result; - Result.Mapping = Mapping; + static DiagnosticMapping Make(diag::Severity Severity, bool IsUser, + bool IsPragma) { + DiagnosticMapping Result; + Result.Severity = Severity; Result.IsUser = IsUser; Result.IsPragma = IsPragma; Result.HasNoWarningAsError = 0; @@ -89,8 +89,8 @@ public: return Result; } - diag::Mapping getMapping() const { return diag::Mapping(Mapping); } - void setMapping(diag::Mapping Value) { Mapping = Value; } + diag::Severity getSeverity() const { return diag::Severity(Severity); } + void setSeverity(diag::Severity Value) { Severity = Value; } bool isUser() const { return IsUser; } bool isPragma() const { return IsPragma; } diff --git a/clang/include/clang/Lex/PPCallbacks.h b/clang/include/clang/Lex/PPCallbacks.h index 974ab55..7f1ea34 100644 --- a/clang/include/clang/Lex/PPCallbacks.h +++ b/clang/include/clang/Lex/PPCallbacks.h @@ -214,8 +214,7 @@ public: /// \brief Callback invoked when a \#pragma gcc dianostic directive is read. virtual void PragmaDiagnostic(SourceLocation Loc, StringRef Namespace, - diag::Mapping mapping, StringRef Str) { - } + diag::Severity mapping, StringRef Str) {} /// \brief Called when an OpenCL extension is either disabled or /// enabled with a pragma. @@ -411,7 +410,7 @@ public: } void PragmaDiagnostic(SourceLocation Loc, StringRef Namespace, - diag::Mapping mapping, StringRef Str) override { + diag::Severity mapping, StringRef Str) override { First->PragmaDiagnostic(Loc, Namespace, mapping, Str); Second->PragmaDiagnostic(Loc, Namespace, mapping, Str); } diff --git a/clang/lib/Basic/Diagnostic.cpp b/clang/lib/Basic/Diagnostic.cpp index 13d25249..6cf3c5c 100644 --- a/clang/lib/Basic/Diagnostic.cpp +++ b/clang/lib/Basic/Diagnostic.cpp @@ -162,7 +162,8 @@ DiagnosticsEngine::GetDiagStatePointForLoc(SourceLocation L) const { return Pos; } -void DiagnosticsEngine::setDiagnosticMapping(diag::kind Diag, diag::Mapping Map, +void DiagnosticsEngine::setDiagnosticMapping(diag::kind Diag, + diag::Severity Map, SourceLocation L) { assert(Diag < diag::DIAG_UPPER_LIMIT && "Can only map builtin diagnostics"); @@ -176,16 +177,16 @@ void DiagnosticsEngine::setDiagnosticMapping(diag::kind Diag, diag::Mapping Map, FullSourceLoc LastStateChangePos = DiagStatePoints.back().Loc; // Don't allow a mapping to a warning override an error/fatal mapping. if (Map == diag::MAP_WARNING) { - DiagnosticMappingInfo &Info = GetCurDiagState()->getOrAddMappingInfo(Diag); - if (Info.getMapping() == diag::MAP_ERROR || - Info.getMapping() == diag::MAP_FATAL) - Map = Info.getMapping(); + DiagnosticMapping &Info = GetCurDiagState()->getOrAddMapping(Diag); + if (Info.getSeverity() == diag::MAP_ERROR || + Info.getSeverity() == diag::MAP_FATAL) + Map = Info.getSeverity(); } - DiagnosticMappingInfo MappingInfo = makeMappingInfo(Map, L); + DiagnosticMapping Mapping = makeUserMapping(Map, L); // Common case; setting all the diagnostics of a group in one place. if (Loc.isInvalid() || Loc == LastStateChangePos) { - GetCurDiagState()->setMappingInfo(Diag, MappingInfo); + GetCurDiagState()->setMapping(Diag, Mapping); return; } @@ -198,7 +199,7 @@ void DiagnosticsEngine::setDiagnosticMapping(diag::kind Diag, diag::Mapping Map, // the new state became active. DiagStates.push_back(*GetCurDiagState()); PushDiagStatePoint(&DiagStates.back(), Loc); - GetCurDiagState()->setMappingInfo(Diag, MappingInfo); + GetCurDiagState()->setMapping(Diag, Mapping); return; } @@ -211,12 +212,12 @@ void DiagnosticsEngine::setDiagnosticMapping(diag::kind Diag, diag::Mapping Map, // Update all diagnostic states that are active after the given location. for (DiagStatePointsTy::iterator I = Pos+1, E = DiagStatePoints.end(); I != E; ++I) { - GetCurDiagState()->setMappingInfo(Diag, MappingInfo); + GetCurDiagState()->setMapping(Diag, Mapping); } // If the location corresponds to an existing point, just update its state. if (Pos->Loc == Loc) { - GetCurDiagState()->setMappingInfo(Diag, MappingInfo); + GetCurDiagState()->setMapping(Diag, Mapping); return; } @@ -225,14 +226,14 @@ void DiagnosticsEngine::setDiagnosticMapping(diag::kind Diag, diag::Mapping Map, assert(Pos->Loc.isBeforeInTranslationUnitThan(Loc)); DiagStates.push_back(*Pos->State); DiagState *NewState = &DiagStates.back(); - GetCurDiagState()->setMappingInfo(Diag, MappingInfo); + GetCurDiagState()->setMapping(Diag, Mapping); DiagStatePoints.insert(Pos+1, DiagStatePoint(NewState, FullSourceLoc(Loc, *SourceMgr))); } -bool DiagnosticsEngine::setDiagnosticGroupMapping( - StringRef Group, diag::Mapping Map, SourceLocation Loc) -{ +bool DiagnosticsEngine::setDiagnosticGroupMapping(StringRef Group, + diag::Severity Map, + SourceLocation Loc) { // Get the diagnostics in this group. SmallVector GroupDiags; if (Diags->getDiagnosticsInGroup(Group, GroupDiags)) @@ -262,12 +263,11 @@ bool DiagnosticsEngine::setDiagnosticGroupWarningAsError(StringRef Group, // Perform the mapping change. for (unsigned i = 0, e = GroupDiags.size(); i != e; ++i) { - DiagnosticMappingInfo &Info = GetCurDiagState()->getOrAddMappingInfo( - GroupDiags[i]); + DiagnosticMapping &Info = GetCurDiagState()->getOrAddMapping(GroupDiags[i]); - if (Info.getMapping() == diag::MAP_ERROR || - Info.getMapping() == diag::MAP_FATAL) - Info.setMapping(diag::MAP_WARNING); + if (Info.getSeverity() == diag::MAP_ERROR || + Info.getSeverity() == diag::MAP_FATAL) + Info.setSeverity(diag::MAP_WARNING); Info.setNoWarningAsError(true); } @@ -292,11 +292,10 @@ bool DiagnosticsEngine::setDiagnosticGroupErrorAsFatal(StringRef Group, // Perform the mapping change. for (unsigned i = 0, e = GroupDiags.size(); i != e; ++i) { - DiagnosticMappingInfo &Info = GetCurDiagState()->getOrAddMappingInfo( - GroupDiags[i]); + DiagnosticMapping &Info = GetCurDiagState()->getOrAddMapping(GroupDiags[i]); - if (Info.getMapping() == diag::MAP_FATAL) - Info.setMapping(diag::MAP_ERROR); + if (Info.getSeverity() == diag::MAP_FATAL) + Info.setSeverity(diag::MAP_ERROR); Info.setNoErrorAsFatal(true); } @@ -304,8 +303,8 @@ bool DiagnosticsEngine::setDiagnosticGroupErrorAsFatal(StringRef Group, return false; } -void DiagnosticsEngine::setMappingToAllDiagnostics(diag::Mapping Map, - SourceLocation Loc) { +void DiagnosticsEngine::setMappingForAllDiagnostics(diag::Severity Map, + SourceLocation Loc) { // Get all the diagnostics. SmallVector AllDiags; Diags->getAllDiagnostics(AllDiags); diff --git a/clang/lib/Basic/DiagnosticIDs.cpp b/clang/lib/Basic/DiagnosticIDs.cpp index 7c8fe36..a99ae26 100644 --- a/clang/lib/Basic/DiagnosticIDs.cpp +++ b/clang/lib/Basic/DiagnosticIDs.cpp @@ -38,7 +38,7 @@ enum { struct StaticDiagInfoRec { uint16_t DiagID; - unsigned Mapping : 3; + unsigned DefaultSeverity : 3; unsigned Class : 3; unsigned SFINAE : 2; unsigned WarnNoWerror : 1; @@ -66,12 +66,13 @@ struct StaticDiagInfoRec { } // namespace anonymous static const StaticDiagInfoRec StaticDiagInfo[] = { -#define DIAG(ENUM,CLASS,DEFAULT_MAPPING,DESC,GROUP, \ - SFINAE,NOWERROR,SHOWINSYSHEADER,CATEGORY) \ - { diag::ENUM, DEFAULT_MAPPING, CLASS, \ - DiagnosticIDs::SFINAE, \ - NOWERROR, SHOWINSYSHEADER, CATEGORY, GROUP, \ - STR_SIZE(DESC, uint16_t), DESC }, +#define DIAG(ENUM, CLASS, DEFAULT_SEVERITY, DESC, GROUP, SFINAE, NOWERROR, \ + SHOWINSYSHEADER, CATEGORY) \ + { \ + diag::ENUM, DEFAULT_SEVERITY, CLASS, DiagnosticIDs::SFINAE, NOWERROR, \ + SHOWINSYSHEADER, CATEGORY, GROUP, STR_SIZE(DESC, uint16_t), DESC \ + } \ + , #include "clang/Basic/DiagnosticCommonKinds.inc" #include "clang/Basic/DiagnosticDriverKinds.inc" #include "clang/Basic/DiagnosticFrontendKinds.inc" @@ -152,15 +153,15 @@ CATEGORY(ANALYSIS, SEMA) return Found; } -static DiagnosticMappingInfo GetDefaultDiagMappingInfo(unsigned DiagID) { - DiagnosticMappingInfo Info = DiagnosticMappingInfo::Make( - diag::MAP_FATAL, /*IsUser=*/false, /*IsPragma=*/false); +static DiagnosticMapping GetDefaultDiagMapping(unsigned DiagID) { + DiagnosticMapping Info = DiagnosticMapping::Make( + diag::MAP_FATAL, /*IsUser=*/false, /*IsPragma=*/false); if (const StaticDiagInfoRec *StaticInfo = GetDiagInfo(DiagID)) { - Info.setMapping((diag::Mapping) StaticInfo->Mapping); + Info.setSeverity((diag::Severity)StaticInfo->DefaultSeverity); if (StaticInfo->WarnNoWerror) { - assert(Info.getMapping() == diag::MAP_WARNING && + assert(Info.getSeverity() == diag::MAP_WARNING && "Unexpected mapping with no-Werror bit!"); Info.setNoWarningAsError(true); } @@ -192,15 +193,14 @@ namespace { // Unfortunately, the split between DiagnosticIDs and Diagnostic is not // particularly clean, but for now we just implement this method here so we can // access GetDefaultDiagMapping. -DiagnosticMappingInfo &DiagnosticsEngine::DiagState::getOrAddMappingInfo( - diag::kind Diag) -{ - std::pair Result = DiagMap.insert( - std::make_pair(Diag, DiagnosticMappingInfo())); +DiagnosticMapping & +DiagnosticsEngine::DiagState::getOrAddMapping(diag::kind Diag) { + std::pair Result = + DiagMap.insert(std::make_pair(Diag, DiagnosticMapping())); // Initialize the entry if we added it. if (Result.second) - Result.first->second = GetDefaultDiagMappingInfo(Diag); + Result.first->second = GetDefaultDiagMapping(Diag); return Result.first->second; } @@ -340,9 +340,9 @@ bool DiagnosticIDs::isBuiltinExtensionDiag(unsigned DiagID, if (DiagID >= diag::DIAG_UPPER_LIMIT || getBuiltinDiagClass(DiagID) != CLASS_EXTENSION) return false; - + EnabledByDefault = - GetDefaultDiagMappingInfo(DiagID).getMapping() != diag::MAP_IGNORE; + GetDefaultDiagMapping(DiagID).getSeverity() != diag::MAP_IGNORE; return true; } @@ -350,7 +350,7 @@ bool DiagnosticIDs::isDefaultMappingAsError(unsigned DiagID) { if (DiagID >= diag::DIAG_UPPER_LIMIT) return false; - return GetDefaultDiagMappingInfo(DiagID).getMapping() == diag::MAP_ERROR; + return GetDefaultDiagMapping(DiagID).getSeverity() == diag::MAP_ERROR; } bool DiagnosticIDs::isRemark(unsigned DiagID) { @@ -400,10 +400,9 @@ DiagnosticIDs::getDiagnosticLevel(unsigned DiagID, unsigned DiagClass, DiagnosticsEngine::DiagState *State = Pos->State; // Get the mapping information, or compute it lazily. - DiagnosticMappingInfo &MappingInfo = State->getOrAddMappingInfo( - (diag::kind)DiagID); + DiagnosticMapping &Mapping = State->getOrAddMapping((diag::kind)DiagID); - switch (MappingInfo.getMapping()) { + switch (Mapping.getSeverity()) { case diag::MAP_IGNORE: Result = DiagnosticIDs::Ignored; break; @@ -423,7 +422,7 @@ DiagnosticIDs::getDiagnosticLevel(unsigned DiagID, unsigned DiagClass, // Upgrade ignored diagnostics if -Weverything is enabled. if (Diag.EnableAllWarnings && Result == DiagnosticIDs::Ignored && - !MappingInfo.isUser()) + !Mapping.isUser()) Result = DiagnosticIDs::Warning; // Diagnostics of class REMARK are either printed as remarks or in case they @@ -441,7 +440,7 @@ DiagnosticIDs::getDiagnosticLevel(unsigned DiagID, unsigned DiagClass, // For extension diagnostics that haven't been explicitly mapped, check if we // should upgrade the diagnostic. - if (IsExtensionDiag && !MappingInfo.isUser()) { + if (IsExtensionDiag && !Mapping.isUser()) { switch (Diag.ExtBehavior) { case DiagnosticsEngine::Ext_Ignore: break; @@ -469,14 +468,14 @@ DiagnosticIDs::getDiagnosticLevel(unsigned DiagID, unsigned DiagClass, // If -Werror is enabled, map warnings to errors unless explicitly disabled. if (Result == DiagnosticIDs::Warning) { - if (Diag.WarningsAsErrors && !MappingInfo.hasNoWarningAsError()) + if (Diag.WarningsAsErrors && !Mapping.hasNoWarningAsError()) Result = DiagnosticIDs::Error; } // If -Wfatal-errors is enabled, map errors to fatal unless explicity // disabled. if (Result == DiagnosticIDs::Error) { - if (Diag.ErrorsAsFatal && !MappingInfo.hasNoErrorAsFatal()) + if (Diag.ErrorsAsFatal && !Mapping.hasNoErrorAsFatal()) Result = DiagnosticIDs::Fatal; } diff --git a/clang/lib/Basic/Warnings.cpp b/clang/lib/Basic/Warnings.cpp index b09e69a..df72ef7 100644 --- a/clang/lib/Basic/Warnings.cpp +++ b/clang/lib/Basic/Warnings.cpp @@ -106,8 +106,9 @@ void clang::ProcessWarningOptions(DiagnosticsEngine &Diags, // Figure out how this option affects the warning. If -Wfoo, map the // diagnostic to a warning, if -Wno-foo, map it to ignore. - diag::Mapping Mapping = isPositive ? diag::MAP_WARNING : diag::MAP_IGNORE; - + diag::Severity Mapping = + isPositive ? diag::MAP_WARNING : diag::MAP_IGNORE; + // -Wsystem-headers is a special case, not driven by the option table. It // cannot be controlled with -Werror. if (Opt == "system-headers") { @@ -124,7 +125,7 @@ void clang::ProcessWarningOptions(DiagnosticsEngine &Diags, Diags.setEnableAllWarnings(true); } else { Diags.setEnableAllWarnings(false); - Diags.setMappingToAllDiagnostics(diag::MAP_IGNORE); + Diags.setMappingForAllDiagnostics(diag::MAP_IGNORE); } } continue; diff --git a/clang/lib/Frontend/PrintPreprocessedOutput.cpp b/clang/lib/Frontend/PrintPreprocessedOutput.cpp index 8c32c24..bde1fa1 100644 --- a/clang/lib/Frontend/PrintPreprocessedOutput.cpp +++ b/clang/lib/Frontend/PrintPreprocessedOutput.cpp @@ -139,7 +139,7 @@ public: void PragmaDiagnosticPush(SourceLocation Loc, StringRef Namespace) override; void PragmaDiagnosticPop(SourceLocation Loc, StringRef Namespace) override; void PragmaDiagnostic(SourceLocation Loc, StringRef Namespace, - diag::Mapping Map, StringRef Str) override; + diag::Severity Map, StringRef Str) override; void PragmaWarning(SourceLocation Loc, StringRef WarningSpec, ArrayRef Ids) override; void PragmaWarningPush(SourceLocation Loc, int Level) override; @@ -439,9 +439,10 @@ PragmaDiagnosticPop(SourceLocation Loc, StringRef Namespace) { setEmittedDirectiveOnThisLine(); } -void PrintPPOutputPPCallbacks:: -PragmaDiagnostic(SourceLocation Loc, StringRef Namespace, - diag::Mapping Map, StringRef Str) { +void PrintPPOutputPPCallbacks::PragmaDiagnostic(SourceLocation Loc, + StringRef Namespace, + diag::Severity Map, + StringRef Str) { startNewLineIfNeeded(); MoveToLine(Loc); OS << "#pragma " << Namespace << " diagnostic "; diff --git a/clang/lib/Lex/Pragma.cpp b/clang/lib/Lex/Pragma.cpp index b837fc5..ea3a10d 100644 --- a/clang/lib/Lex/Pragma.cpp +++ b/clang/lib/Lex/Pragma.cpp @@ -954,7 +954,7 @@ public: IdentifierInfo *II = Tok.getIdentifierInfo(); PPCallbacks *Callbacks = PP.getPPCallbacks(); - diag::Mapping Map; + diag::Severity Map; if (II->isStr("warning")) Map = diag::MAP_WARNING; else if (II->isStr("error")) diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp index 4ea95d0..cf47376 100644 --- a/clang/lib/Serialization/ASTReader.cpp +++ b/clang/lib/Serialization/ASTReader.cpp @@ -5022,9 +5022,9 @@ void ASTReader::ReadPragmaDiagnosticMappings(DiagnosticsEngine &Diag) { if (DiagID == (unsigned)-1) { break; // no more diag/map pairs for this location. } - diag::Mapping Map = (diag::Mapping)F.PragmaDiagMappings[Idx++]; - DiagnosticMappingInfo MappingInfo = Diag.makeMappingInfo(Map, Loc); - Diag.GetCurDiagState()->setMappingInfo(DiagID, MappingInfo); + diag::Severity Map = (diag::Severity)F.PragmaDiagMappings[Idx++]; + DiagnosticMapping Mapping = Diag.makeUserMapping(Map, Loc); + Diag.GetCurDiagState()->setMapping(DiagID, Mapping); } } } diff --git a/clang/lib/Serialization/ASTWriter.cpp b/clang/lib/Serialization/ASTWriter.cpp index 35da82c..cbb6401 100644 --- a/clang/lib/Serialization/ASTWriter.cpp +++ b/clang/lib/Serialization/ASTWriter.cpp @@ -2542,7 +2542,7 @@ void ASTWriter::WritePragmaDiagnosticMappings(const DiagnosticsEngine &Diag, I = point.State->begin(), E = point.State->end(); I != E; ++I) { if (I->second.isPragma()) { Record.push_back(I->first); - Record.push_back(I->second.getMapping()); + Record.push_back(I->second.getSeverity()); } } Record.push_back(-1); // mark the end of the diag/map pairs for this