diff options
author | Anna Zaks <ganna@apple.com> | 2012-06-07 20:18:08 +0000 |
---|---|---|
committer | Anna Zaks <ganna@apple.com> | 2012-06-07 20:18:08 +0000 |
commit | a7dcc996a980d29fa7fb7536d0f3f48e572b1ca9 (patch) | |
tree | 4a774a23ebdd7124cff1ef98968940ee68572510 /clang/test/Analysis/malloc.c | |
parent | a5d24ca453e44d0aab542a317d705c05e954101e (diff) | |
download | bcm5719-llvm-a7dcc996a980d29fa7fb7536d0f3f48e572b1ca9.tar.gz bcm5719-llvm-a7dcc996a980d29fa7fb7536d0f3f48e572b1ca9.zip |
[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.
llvm-svn: 158165
Diffstat (limited to 'clang/test/Analysis/malloc.c')
-rw-r--r-- | clang/test/Analysis/malloc.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/clang/test/Analysis/malloc.c b/clang/test/Analysis/malloc.c index bdbd96e2be4..7be29301fe6 100644 --- a/clang/test/Analysis/malloc.c +++ b/clang/test/Analysis/malloc.c @@ -902,6 +902,23 @@ int HeapAssignment() { 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. |