Done. Thanks!

-bw

On Aug 1, 2014, at 3:18 PM, Douglas Gregor <[email protected]> wrote:

> 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]> 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
>> 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
>> ==============================================================================
>> --- 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]
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>> 
> 

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to