Add support for warning on general null pointer expressions of boolean
type rather than just the literal 'false'. This begins fixing PR9612,
but the message is now wrong. WIP, the cleanup of the messaging is next.

llvm-svn: 129204
diff --git a/clang/test/SemaCXX/warn_false_to_pointer.cpp b/clang/test/SemaCXX/warn_false_to_pointer.cpp
index 26b54f6..20d4b3a 100644
--- a/clang/test/SemaCXX/warn_false_to_pointer.cpp
+++ b/clang/test/SemaCXX/warn_false_to_pointer.cpp
@@ -5,7 +5,14 @@
 void foo(int* i, int *j=(false)) // expected-warning{{ initialization of pointer of type 'int *' from literal 'false'}}
 {
   foo(false); // expected-warning{{ initialization of pointer of type 'int *' from literal 'false'}}
-  foo((int*)false);
+  foo((int*)false); // no-warning: explicit cast
+  foo(0); // no-warning: not a bool, even though its convertible to bool
+
+  foo(false == true); // expected-warning{{ initialization of pointer of type 'int *' from literal 'false'}}
+  foo((42 + 24) < 32); // expected-warning{{ initialization of pointer of type 'int *' from literal 'false'}}
+
+  const bool kFlag = false;
+  foo(kFlag); // expected-warning{{ initialization of pointer of type 'int *' from literal 'false'}}
 }
 
 char f(struct Undefined*);