[cfe-commits] r158165 - in /cfe/trunk: lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp test/Analysis/malloc.c
Jordan Rose
jordan_rose at apple.com
Thu Jun 7 13:59:54 PDT 2012
This might be a case to use clang_analyzer_eval, so that the divide-by-zero doesn't get taken for part of the semantics. (Also because eventually we could make the second test UNKNOWN.)
On Jun 7, 2012, at 13:18 , Anna Zaks <ganna at apple.com> wrote:
> Author: zaks
> Date: Thu Jun 7 15:18:08 2012
> New Revision: 158165
>
> URL: http://llvm.org/viewvc/llvm-project?rev=158165&view=rev
> Log:
> [analyzer] Fixit for r158136.
>
> I falsely assumed that the memory spaces are equal when we reach this
> point, they might not be when memory space of one or more is stack or
> Unknown. We don't want a region from Heap space alias something with
> another memory space.
>
> Modified:
> cfe/trunk/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp
> cfe/trunk/test/Analysis/malloc.c
>
> Modified: cfe/trunk/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp?rev=158165&r1=158164&r2=158165&view=diff
> ==============================================================================
> --- cfe/trunk/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp (original)
> +++ cfe/trunk/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp Thu Jun 7 15:18:08 2012
> @@ -701,7 +701,7 @@
> // on each invocation.
> if (LeftBase != RightBase &&
> ((!isa<SymbolicRegion>(LeftBase) && !isa<SymbolicRegion>(RightBase)) ||
> - isa<HeapSpaceRegion>(LeftMS)) ){
> + (isa<HeapSpaceRegion>(LeftMS) || isa<HeapSpaceRegion>(RightMS))) ){
> switch (op) {
> default:
> return UnknownVal();
>
> Modified: cfe/trunk/test/Analysis/malloc.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/malloc.c?rev=158165&r1=158164&r2=158165&view=diff
> ==============================================================================
> --- cfe/trunk/test/Analysis/malloc.c (original)
> +++ cfe/trunk/test/Analysis/malloc.c Thu Jun 7 15:18:08 2012
> @@ -902,6 +902,23 @@
> return 0;
> }
>
> +int *retPtr();
> +int *retPtrMightAlias(int *x);
> +int cmpHeapAllocationToUnknown() {
> + int zero = 0;
> + int *yBefore = retPtr();
> + int *m = malloc(8);
> + int *yAfter = retPtrMightAlias(m);
> + if (yBefore == m) {
> + return 5/zero; // expected-warning {{This statement is never executed}}
> + }
> + if (yAfter == m) {
> + return 5/zero; // expected-warning {{This statement is never executed}}
> + }
> + free(m);
> + return 0;
> +}
> +
> // ----------------------------------------------------------------------------
> // False negatives.
>
>
>
> _______________________________________________
> 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