r176333 - Add one more sanity check in SourceManager::getFileIDLoaded().

David Blaikie dblaikie at gmail.com
Fri Mar 1 10:03:47 PST 2013


On Fri, Mar 1, 2013 at 9:10 AM, Jordan Rose <jordan_rose at apple.com> wrote:
>
> On Feb 28, 2013, at 19:43 , Argyrios Kyrtzidis <akyrtzi at gmail.com> wrote:
>
>> Author: akirtzidis
>> Date: Thu Feb 28 21:43:33 2013
>> New Revision: 176333
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=176333&view=rev
>> Log:
>> Add one more sanity check in SourceManager::getFileIDLoaded().
>>
>> Modified:
>>    cfe/trunk/lib/Basic/SourceManager.cpp
>>
>> Modified: cfe/trunk/lib/Basic/SourceManager.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/SourceManager.cpp?rev=176333&r1=176332&r2=176333&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/Basic/SourceManager.cpp (original)
>> +++ cfe/trunk/lib/Basic/SourceManager.cpp Thu Feb 28 21:43:33 2013
>> @@ -863,6 +863,11 @@ FileID SourceManager::getFileIDLoaded(un
>>       return Res;
>>     }
>>
>> +    // Sanity checking, otherwise a bug may lead to hanging in release build.
>> +    if (LessIndex == MiddleIndex) {
>> +      assert(0 && "binary search missed the entry");
>
> llvm_unreachable?

Or actually just remove the if/return/etc:

assert(LessIndex == MiddleIndex)

We really don't make a habit of writing asserts with fallbacks "just in case".

(unreachable inside the 'if' would have the same 'problem' as removing
the if/adding the obvious assert - in release builds we'd still
optimize away the whole block & "a bug may lead to hanging in release
build")

>> +      return FileID();
>> +    }
>>     LessIndex = MiddleIndex;
>>   }
>> }
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits



More information about the cfe-commits mailing list