From e3c26d8f7e7bfdd52456ecab3584a2934ebcc76d Mon Sep 17 00:00:00 2001 From: Ted Kremenek Date: Tue, 23 Feb 2010 07:17:57 +0000 Subject: [PATCH] Add test case for , which appears to have been fixed in the recent changes to RegionStore::InvalidateRegions(). Note that we are still not yet modeling 'memcpy()' explicitly. llvm-svn: 96902 --- clang/test/Analysis/misc-ps-region-store.m | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/clang/test/Analysis/misc-ps-region-store.m b/clang/test/Analysis/misc-ps-region-store.m index 201cbc9b350f..21a54c34d78f 100644 --- a/clang/test/Analysis/misc-ps-region-store.m +++ b/clang/test/Analysis/misc-ps-region-store.m @@ -1,6 +1,10 @@ // RUN: %clang_cc1 -triple i386-apple-darwin9 -analyze -analyzer-experimental-internal-checks -analyzer-check-objc-mem -analyzer-store=region -verify -fblocks -analyzer-opt-analyze-nested-blocks %s // RUN: %clang_cc1 -triple x86_64-apple-darwin9 -DTEST_64 -analyze -analyzer-experimental-internal-checks -analyzer-check-objc-mem -analyzer-store=region -verify -fblocks -analyzer-opt-analyze-nested-blocks %s +typedef long unsigned int size_t; +void *memcpy(void *, const void *, size_t); +void *alloca(size_t); + typedef struct objc_selector *SEL; typedef signed char BOOL; typedef int NSInteger; @@ -867,3 +871,20 @@ int test_c_rev96062() { test_a_rev96062_aux2(&z); return a + b; // no-warning } + +//===----------------------------------------------------------------------===// +// - The access to y[0] at the bottom previously +// was reported as an uninitialized value. +//===----------------------------------------------------------------------===// + +char *rdar_7242010(int count, char **y) { + char **x = alloca((count + 4) * sizeof(*x)); + x[0] = "hi"; + x[1] = "there"; + x[2] = "every"; + x[3] = "body"; + memcpy(x + 4, y, count * sizeof(*x)); + y = x; + return y[0]; // no-warning +} +