aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/CodeGen/CGExprScalar.cpp2
-rw-r--r--test/CodeGen/conditional.c12
2 files changed, 13 insertions, 1 deletions
diff --git a/lib/CodeGen/CGExprScalar.cpp b/lib/CodeGen/CGExprScalar.cpp
index 622d2c5317..ea92828f72 100644
--- a/lib/CodeGen/CGExprScalar.cpp
+++ b/lib/CodeGen/CGExprScalar.cpp
@@ -1074,7 +1074,7 @@ VisitConditionalOperator(const ConditionalOperator *E) {
CGF.EmitBlock(ContBlock);
- if (!LHS) {
+ if (!LHS || !RHS) {
assert(E->getType()->isVoidType() && "Non-void value should have a value");
return 0;
}
diff --git a/test/CodeGen/conditional.c b/test/CodeGen/conditional.c
index d3e5c0b938..29ad786793 100644
--- a/test/CodeGen/conditional.c
+++ b/test/CodeGen/conditional.c
@@ -30,3 +30,15 @@ void test6();
void test7(int);
void* test8() {return 1 ? test6 : test7;}
+
+void _efree(void *ptr);
+
+void _php_stream_free3()
+{
+ (1 ? free(0) : _efree(0));
+}
+
+void _php_stream_free4()
+{
+ 1 ? _efree(0) : free(0);
+}