diff --git a/clang/lib/CodeGen/CGExprConstant.cpp b/clang/lib/CodeGen/CGExprConstant.cpp --- a/clang/lib/CodeGen/CGExprConstant.cpp +++ b/clang/lib/CodeGen/CGExprConstant.cpp @@ -1127,6 +1127,13 @@ case CK_ConstructorConversion: return Visit(subExpr, destType); + case CK_NullToPointer: { + if (llvm::Constant *C = Visit(subExpr, destType)) + if (C->isNullValue()) + return CGM.EmitNullConstant(destType); + return nullptr; + } + case CK_IntToOCLSampler: llvm_unreachable("global sampler variables are not generated"); @@ -1183,7 +1190,6 @@ case CK_IntegralComplexToFloatingComplex: case CK_PointerToIntegral: case CK_PointerToBoolean: - case CK_NullToPointer: case CK_IntegralCast: case CK_BooleanToSignedIntegral: case CK_IntegralToPointer: