From: Ted Kremenek Date: Fri, 6 Nov 2009 20:32:38 +0000 (+0000) Subject: testing: Merge PR3135.c into misc-ps-region-store.m. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7344c878a73418cfade56e0c2281ac7324a609b2;p=clang testing: Merge PR3135.c into misc-ps-region-store.m. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86286 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/Analysis/PR3135.c b/test/Analysis/PR3135.c deleted file mode 100644 index 1fca57b47b..0000000000 --- a/test/Analysis/PR3135.c +++ /dev/null @@ -1,20 +0,0 @@ -// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -verify %s -// PR3135 - -typedef struct { - int *a; -} structure; - -int bar(structure *x); - -int foo() -{ - int x; - structure y = {&x}; - - // the call to bar may initialize x - if (bar(&y) && x) // no-warning - return 1; - - return 0; -} diff --git a/test/Analysis/misc-ps-region-store.m b/test/Analysis/misc-ps-region-store.m index 90242abbbd..45eb4a252c 100644 --- a/test/Analysis/misc-ps-region-store.m +++ b/test/Analysis/misc-ps-region-store.m @@ -454,3 +454,19 @@ int *test_cwe466_return_outofbounds_pointer() { return p; // expected-warning{{Returned pointer value points outside the original object}} } +//===----------------------------------------------------------------------===// +// PR 3135 - Test case that shows that a variable may get invalidated when its +// address is included in a structure that is passed-by-value to an unknown function. +//===----------------------------------------------------------------------===// + +typedef struct { int *a; } pr3135_structure; +int pr3135_bar(pr3135_structure *x); +int pr3135() { + int x; + pr3135_structure y = { &x }; + // the call to pr3135_bar may initialize x + if (pr3135_bar(&y) && x) // no-warning + return 1; + return 0; +} +