aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNuno Lopes <nunoplopes@sapo.pt>2008-06-04 19:15:45 +0000
committerNuno Lopes <nunoplopes@sapo.pt>2008-06-04 19:15:45 +0000
commit108f55d6fd9a1c0e753eb8e046cb1f1b81d77a76 (patch)
tree2d812196502712f4d0347e66a09d33e81a3c067c
parentd8de725d95cb29db175f6430c5911ff092271f2e (diff)
fix crash when codegening 'cond ? lhs : call-to-void-func()'
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51958 91177308-0d34-0410-b5e6-96231b3b80d8
-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);
+}