Hi Argyrios, On comment. On Jan 26, 2012, at 10:15 PM, Argyrios Kyrtzidis wrote:
> Author: akirtzidis > Date: Fri Jan 27 00:15:43 2012 > New Revision: 149121 > > URL: http://llvm.org/viewvc/llvm-project?rev=149121&view=rev > Log: > Due to a bug, -Wno-everything works like -Weverything. Fix the bug by having > -Wno-everything remap all warnings to ignored. > > We can now use "-Wno-everything -W<warning>" to ignore all warnings except > specific ones. > > Modified: > cfe/trunk/include/clang/Basic/Diagnostic.h > cfe/trunk/include/clang/Basic/DiagnosticIDs.h > cfe/trunk/lib/Basic/Diagnostic.cpp > cfe/trunk/lib/Basic/DiagnosticIDs.cpp > cfe/trunk/lib/Frontend/Warnings.cpp > > Modified: cfe/trunk/include/clang/Basic/Diagnostic.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Diagnostic.h?rev=149121&r1=149120&r2=149121&view=diff > ============================================================================== > --- cfe/trunk/include/clang/Basic/Diagnostic.h (original) > +++ cfe/trunk/include/clang/Basic/Diagnostic.h Fri Jan 27 00:15:43 2012 > @@ -476,6 +476,12 @@ > /// \returns True if the given group is unknown, false otherwise. > bool setDiagnosticGroupErrorAsFatal(StringRef Group, bool Enabled); > > + /// \brief Add the specified mapping to all diagnostics. Mainly to be used > + /// by -Wno-everything to disable all warnings but allow subsequent -W > options > + /// to enable specific warnings. > + bool setMappingToAllDiagnostics(diag::Mapping Map, > + SourceLocation Loc = SourceLocation()); > + > bool hasErrorOccurred() const { return ErrorOccurred; } > bool hasFatalErrorOccurred() const { return FatalErrorOccurred; } > > > Modified: cfe/trunk/include/clang/Basic/DiagnosticIDs.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticIDs.h?rev=149121&r1=149120&r2=149121&view=diff > ============================================================================== > --- cfe/trunk/include/clang/Basic/DiagnosticIDs.h (original) > +++ cfe/trunk/include/clang/Basic/DiagnosticIDs.h Fri Jan 27 00:15:43 2012 > @@ -263,6 +263,9 @@ > bool getDiagnosticsInGroup(StringRef Group, > llvm::SmallVectorImpl<diag::kind> &Diags) const; > > + /// \brief Get the set of all diagnostic IDs. > + void getAllDiagnostics(llvm::SmallVectorImpl<diag::kind> &Diags) const; > + > /// \brief Get the warning option with the closest edit distance to the > given > /// group name. > static StringRef getNearestWarningOption(StringRef Group); > > Modified: cfe/trunk/lib/Basic/Diagnostic.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Diagnostic.cpp?rev=149121&r1=149120&r2=149121&view=diff > ============================================================================== > --- cfe/trunk/lib/Basic/Diagnostic.cpp (original) > +++ cfe/trunk/lib/Basic/Diagnostic.cpp Fri Jan 27 00:15:43 2012 > @@ -295,6 +295,20 @@ > return false; > } > > +bool DiagnosticsEngine::setMappingToAllDiagnostics(diag::Mapping Map, > + SourceLocation Loc) { > + // Get all the diagnostics. > + llvm::SmallVector<diag::kind, 64> AllDiags; > + Diags->getAllDiagnostics(AllDiags); > + > + // Set the mapping. > + for (unsigned i = 0, e = AllDiags.size(); i != e; ++i) > + if (Diags->isBuiltinWarningOrExtension(AllDiags[i])) > + setDiagnosticMapping(AllDiags[i], Map, Loc); > + > + return false; > +} > + Is there a reason for returning a bool here? This function unconditionally returns false and the result doesn't appear to be used. Chad > void DiagnosticsEngine::Report(const StoredDiagnostic &storedDiag) { > assert(CurDiagID == ~0U && "Multiple diagnostics in flight at once!"); > > > Modified: cfe/trunk/lib/Basic/DiagnosticIDs.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/DiagnosticIDs.cpp?rev=149121&r1=149120&r2=149121&view=diff > ============================================================================== > --- cfe/trunk/lib/Basic/DiagnosticIDs.cpp (original) > +++ cfe/trunk/lib/Basic/DiagnosticIDs.cpp Fri Jan 27 00:15:43 2012 > @@ -682,6 +682,12 @@ > return false; > } > > +void DiagnosticIDs::getAllDiagnostics( > + llvm::SmallVectorImpl<diag::kind> &Diags) > const { > + for (unsigned i = 0; i != StaticDiagInfoSize; ++i) > + Diags.push_back(StaticDiagInfo[i].DiagID); > +} > + > StringRef DiagnosticIDs::getNearestWarningOption(StringRef Group) { > StringRef Best; > unsigned BestDistance = Group.size() + 1; // Sanity threshold. > > Modified: cfe/trunk/lib/Frontend/Warnings.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/Warnings.cpp?rev=149121&r1=149120&r2=149121&view=diff > ============================================================================== > --- cfe/trunk/lib/Frontend/Warnings.cpp (original) > +++ cfe/trunk/lib/Frontend/Warnings.cpp Fri Jan 27 00:15:43 2012 > @@ -110,8 +110,14 @@ > // -Weverything is a special case as well. It implicitly enables all > // warnings, including ones not explicitly in a warning group. > if (Opt == "everything") { > - if (SetDiagnostic) > - Diags.setEnableAllWarnings(true); > + if (SetDiagnostic) { > + if (isPositive) { > + Diags.setEnableAllWarnings(true); > + } else { > + Diags.setEnableAllWarnings(false); > + Diags.setMappingToAllDiagnostics(diag::MAP_IGNORE); > + } > + } > continue; > } > > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
