fix type of ?: operator. If one of the operator is void, the type should be void as well.
Please confirm this is safe

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51957 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/Sema/conditional.c b/test/Sema/conditional.c
index 3af0fe5..e1ad1a5 100644
--- a/test/Sema/conditional.c
+++ b/test/Sema/conditional.c
@@ -1,4 +1,15 @@
-// RUN: clang %s -fsyntax-only
+// RUN: clang %s -fsyntax-only -verify
 
 const char* test1 = 1 ? "i" : 1 == 1 ? "v" : "r";
 
+void _efree(void *ptr);
+
+int _php_stream_free1()
+{
+	return (1 ? free(0) : _efree(0)); // expected-error {{incompatible type returning 'void', expected 'int'}}
+}
+
+int _php_stream_free2()
+{
+	return (1 ? _efree(0) : free(0));  // expected-error {{incompatible type returning 'void', expected 'int'}}
+}