From: Ted Kremenek Date: Sat, 21 Nov 2009 02:17:47 +0000 (+0000) Subject: Add another test case to show the precision of RegionStore over X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8ea06e95c396aa56a24cc9325d7ac6b27422adcf;p=clang Add another test case to show the precision of RegionStore over BasicStore. In this example, BasicStore would lose information about the pointer in path after '*path++', causing the analyzer to falsely flag a null dereference. This addresses . git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89533 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/Analysis/misc-ps-region-store.m b/test/Analysis/misc-ps-region-store.m index 23199b6361..fe45823fe4 100644 --- a/test/Analysis/misc-ps-region-store.m +++ b/test/Analysis/misc-ps-region-store.m @@ -509,3 +509,26 @@ void rdar7403269_b_pos() { *p = 0xDEADBEEF; // expected-warning{{Dereference of null pointer}} } + +//===----------------------------------------------------------------------===// +// Test that incrementing a non-null pointer results in a non-null pointer. +// () +//===----------------------------------------------------------------------===// + +void test_increment_nonnull_rdar_7191542(const char *path) { + const char *alf = 0; + + for (;;) { + // When using basic-store, we get a null dereference here because we lose information + // about path after the pointer increment. + char c = *path++; // no-warning + if (c == 'a') { + alf = path; + } + + if (alf) + return; + } +} + +