diff options
-rw-r--r-- | lib/CodeGen/CGExprScalar.cpp | 2 | ||||
-rw-r--r-- | test/CodeGen/conditional.c | 12 |
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); +} |