The result type of logical || and && is bool in C++. Fixes PR5206.

llvm-svn: 84231
diff --git a/clang/test/SemaCXX/bool.cpp b/clang/test/SemaCXX/bool.cpp
index bc44c73..259c09c6 100644
--- a/clang/test/SemaCXX/bool.cpp
+++ b/clang/test/SemaCXX/bool.cpp
@@ -16,3 +16,15 @@
 
   bool *b1 = (int *)0; // expected-error{{expected 'bool *'}}
 }
+
+// static_assert_arg_is_bool(x) compiles only if x is a bool.
+template <typename T>
+void static_assert_arg_is_bool(T x) {
+  bool* p = &x;
+}
+
+void test2() {
+  int n = 2;
+  static_assert_arg_is_bool(n && 4);
+  static_assert_arg_is_bool(n || 5);
+}