]> granicus.if.org Git - clang/commitdiff
[analyzer] Improve test from r207486.
authorJordan Rose <jordan_rose@apple.com>
Tue, 29 Apr 2014 17:08:17 +0000 (17:08 +0000)
committerJordan Rose <jordan_rose@apple.com>
Tue, 29 Apr 2014 17:08:17 +0000 (17:08 +0000)
The constructor that comes right before a variable declaration in the CFG might
not be the initialization of that variable. Previously, we just checked that
the variable's initializer expression was different from the construction
expression, but forgot to see whether the variable had an initializer expression
at all.

Thanks for the prompting, David.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@207562 91177308-0d34-0410-b5e6-96231b3b80d8

test/Analysis/ctor.mm

index 58db91e64d09e18f2ba262a02be48e1ca2807b76..e7c0c6cac630e1353e142fc8e476bba594c700de 100644 (file)
@@ -678,17 +678,20 @@ namespace InitializerList {
 namespace PR19579 {
   class C {};
 
-  struct S {
-    C c;
-    int i;
-  };
-
   void f() {
     C();
     int a;
+
+    extern void use(int);
+    use(a); // expected-warning{{uninitialized}}
   }
 
   void g() {
+    struct S {
+      C c;
+      int i;
+    };
+    
     // This order triggers the initialization of the inner "a" after the
     // constructor for "C" is run, which used to confuse the analyzer
     // (is "C()" the initialization of "a"?).