diff options
-rw-r--r-- | lib/CodeGen/CGExprScalar.cpp | 2 | ||||
-rw-r--r-- | test/CodeGen/_Bool-conversion.c | 4 |
2 files changed, 5 insertions, 1 deletions
diff --git a/lib/CodeGen/CGExprScalar.cpp b/lib/CodeGen/CGExprScalar.cpp index fd77a67606..4e16f66ba4 100644 --- a/lib/CodeGen/CGExprScalar.cpp +++ b/lib/CodeGen/CGExprScalar.cpp @@ -1033,7 +1033,7 @@ Value *ScalarExprEmitter::EmitCastExpr(CastExpr *CE) { // Handle conversion to bool correctly. if (DestTy->isBooleanType()) - return EmitScalarConversion(Visit(E), E->getType(), DestTy); + return EmitScalarConversion(Src, E->getType(), DestTy); return Builder.CreatePtrToInt(Src, ConvertType(DestTy)); } diff --git a/test/CodeGen/_Bool-conversion.c b/test/CodeGen/_Bool-conversion.c index fce7ada30a..9e5e894503 100644 --- a/test/CodeGen/_Bool-conversion.c +++ b/test/CodeGen/_Bool-conversion.c @@ -6,3 +6,7 @@ static _Bool f0_0(void *a0) { return (_Bool) a0; } int f0() { return f0_0((void*) 0x2); } + +_Bool f1(void) { + return (_Bool) ({ void (*x)(); x = 0; }); +} |