Changed merge operation for uninitialized values analysis to "intersect" (previous union).

The effect is that if a variable is uninitialized along a branch (but initialized along another), at merge points it is considered uninitialized.  Previously we had the opposite behavior.  The new behavior is more conservative, and more in line with gcc's behavior.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48689 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/Analysis/uninit-vals.c b/test/Analysis/uninit-vals.c
index 041c946..fa6d0fc 100644
--- a/test/Analysis/uninit-vals.c
+++ b/test/Analysis/uninit-vals.c
@@ -20,7 +20,7 @@
 int f4(int x) {
   int y;
   if (x) y = 1;
-  return y; // no-warning
+  return y; // expected-warning {{use of uninitialized variable}}
 }
 
 int f5() {