r178820 - [analyzer] Fully-covered switch for families in isTrackedFamily()

Anton Yartsev anton.yartsev at gmail.com
Thu Apr 4 19:14:01 PDT 2013


On 05.04.2013 4:41, Jordan Rose wrote:
> :-) A fully-covered switch in LLVM does not include a "default" case. We do put an llvm_unreachable after the switch to appease older GCCs' -Wreturn-type, but the point of the covered switch is so that we get a warning when a new enum value is added.
Got it. Fixed at r178831.

>
>
> On Apr 4, 2013, at 17:31 , Anton Yartsev <anton.yartsev at gmail.com> wrote:
>
>> Author: ayartsev
>> Date: Thu Apr  4 19:31:02 2013
>> New Revision: 178820
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=178820&view=rev
>> Log:
>> [analyzer] Fully-covered switch for families in isTrackedFamily()
>>
>> Modified:
>>     cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp
>>
>> Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp?rev=178820&r1=178819&r2=178820&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp (original)
>> +++ cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp Thu Apr  4 19:31:02 2013
>> @@ -1068,13 +1068,24 @@ ProgramStateRef MallocChecker::FreeMemAu
>> }
>>
>> bool MallocChecker::isTrackedFamily(AllocationFamily Family) const {
>> -  if (Family == AF_Malloc &&
>> -    (!Filter.CMallocOptimistic && !Filter.CMallocPessimistic))
>> -    return false;
>> -
>> -  if ((Family == AF_CXXNew || Family == AF_CXXNewArray) &&
>> -    !Filter.CNewDeleteChecker)
>> -    return false;
>> +  switch (Family) {
>> +  case AF_Malloc: {
>> +    if (!Filter.CMallocOptimistic && !Filter.CMallocPessimistic)
>> +      return false;
>> +    break;
>> +  }
>> +  case AF_CXXNew:
>> +  case AF_CXXNewArray: {
>> +    if (!Filter.CNewDeleteChecker)
>> +      return false;
>> +    break;
>> +  }
>> +  case AF_None: {
>> +    return true;
>> +  }
>> +  default:
>> +    llvm_unreachable("unhandled family");
>> +  }
>>
>>    return true;
>> }
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits


-- 
Anton




More information about the cfe-commits mailing list