r178820 - [analyzer] Fully-covered switch for families in isTrackedFamily()
Jordan Rose
jordan_rose at apple.com
Thu Apr 4 17:41:57 PDT 2013
:-) 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.
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
More information about the cfe-commits
mailing list