]> granicus.if.org Git - clang/commitdiff
Add test case for <rdar://problem/7770737>.
authorTed Kremenek <kremenek@apple.com>
Fri, 19 Mar 2010 19:45:03 +0000 (19:45 +0000)
committerTed Kremenek <kremenek@apple.com>
Fri, 19 Mar 2010 19:45:03 +0000 (19:45 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98979 91177308-0d34-0410-b5e6-96231b3b80d8

test/Analysis/misc-ps-region-store.m

index 21a54c34d78f7a8a2c16b76f6bea4549775450e8..898a33efe12440deacd5ff6c90957b09558e017a 100644 (file)
@@ -888,3 +888,25 @@ char *rdar_7242010(int count, char **y) {
   return y[0]; // no-warning
 }
 
+//===----------------------------------------------------------------------===//
+// <rdar://problem/7770737>
+//===----------------------------------------------------------------------===//
+
+struct rdar_7770737_s { intptr_t p; };
+void rdar_7770737_aux(struct rdar_7770737_s *p);
+int rdar_7770737(void)
+{ 
+  int x;
+
+  // Previously 'f' was not properly invalidated, causing the use of
+  // an uninitailized value below.
+  struct rdar_7770737_s f = { .p = (intptr_t)&x };
+  rdar_7770737_aux(&f);
+  return x; // no-warning
+}
+int rdar_7770737_pos(void)
+{
+  int x;
+  struct rdar_7770737_s f = { .p = (intptr_t)&x };
+  return x; // expected-warning{{Undefined or garbage value returned to caller}}
+}