LGTM, approved for the branch. > On Aug 1, 2014, at 3:06 PM, Richard Trieu <[email protected]> wrote: > > I would like to get this into 3.5 to remove the undefined behavior and also > to prevent future versions of Clang warning on this when the undefined > pointer to bool conversion warning will eventually get improved to catch > this. > > > On Thu, Jul 31, 2014 at 6:42 PM, Richard Trieu <[email protected] > <mailto:[email protected]>> wrote: > Author: rtrieu > Date: Thu Jul 31 20:42:01 2014 > New Revision: 214471 > > URL: http://llvm.org/viewvc/llvm-project?rev=214471&view=rev > <http://llvm.org/viewvc/llvm-project?rev=214471&view=rev> > Log: > Remove this pointer that is converted to bool. In well-defined contexts, the > this pointer is always non-null. If the this pointer is null, it is undefined > and the compiler may optimize it away by assuming it is non-null. The null > checks are pushed into the callers. > > Modified: > cfe/trunk/lib/Basic/DiagnosticIDs.cpp > > Modified: cfe/trunk/lib/Basic/DiagnosticIDs.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/DiagnosticIDs.cpp?rev=214471&r1=214470&r2=214471&view=diff > > <http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/DiagnosticIDs.cpp?rev=214471&r1=214470&r2=214471&view=diff> > ============================================================================== > --- cfe/trunk/lib/Basic/DiagnosticIDs.cpp (original) > +++ cfe/trunk/lib/Basic/DiagnosticIDs.cpp Thu Jul 31 20:42:01 2014 > @@ -259,14 +259,14 @@ namespace clang { > /// getDescription - Return the description of the specified custom > /// diagnostic. > StringRef getDescription(unsigned DiagID) const { > - assert(this && DiagID-DIAG_UPPER_LIMIT < DiagInfo.size() && > + assert(DiagID - DIAG_UPPER_LIMIT < DiagInfo.size() && > "Invalid diagnostic ID"); > return DiagInfo[DiagID-DIAG_UPPER_LIMIT].second; > } > > /// getLevel - Return the level of the specified custom diagnostic. > DiagnosticIDs::Level getLevel(unsigned DiagID) const { > - assert(this && DiagID-DIAG_UPPER_LIMIT < DiagInfo.size() && > + assert(DiagID - DIAG_UPPER_LIMIT < DiagInfo.size() && > "Invalid diagnostic ID"); > return DiagInfo[DiagID-DIAG_UPPER_LIMIT].first; > } > @@ -358,6 +358,7 @@ bool DiagnosticIDs::isDefaultMappingAsEr > StringRef DiagnosticIDs::getDescription(unsigned DiagID) const { > if (const StaticDiagInfoRec *Info = GetDiagInfo(DiagID)) > return Info->getDescription(); > + assert(CustomDiagInfo && "Invalid CustomDiagInfo"); > return CustomDiagInfo->getDescription(DiagID); > } > > @@ -384,8 +385,10 @@ DiagnosticIDs::Level > DiagnosticIDs::getDiagnosticLevel(unsigned DiagID, SourceLocation Loc, > const DiagnosticsEngine &Diag) const { > // Handle custom diagnostics, which cannot be mapped. > - if (DiagID >= diag::DIAG_UPPER_LIMIT) > + if (DiagID >= diag::DIAG_UPPER_LIMIT) { > + assert(CustomDiagInfo && "Invalid CustomDiagInfo"); > return CustomDiagInfo->getLevel(DiagID); > + } > > unsigned DiagClass = getBuiltinDiagClass(DiagID); > if (DiagClass == CLASS_NOTE) return DiagnosticIDs::Note; > @@ -669,6 +672,7 @@ void DiagnosticIDs::EmitDiag(Diagnostics > > bool DiagnosticIDs::isUnrecoverable(unsigned DiagID) const { > if (DiagID >= diag::DIAG_UPPER_LIMIT) { > + assert(CustomDiagInfo && "Invalid CustomDiagInfo"); > // Custom diagnostics. > return CustomDiagInfo->getLevel(DiagID) >= DiagnosticIDs::Error; > } > > > _______________________________________________ > cfe-commits mailing list > [email protected] <mailto:[email protected]> > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits > <http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits> >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
