Fix a minor bug in isNullPointerConstant triggered by the linux
tgmath.h.
Note that there is another issue with tgmath.h, so mandel.c still
doesn't work.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47069 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/AST/Expr.cpp b/AST/Expr.cpp
index c7a2005..f4da0f0 100644
--- a/AST/Expr.cpp
+++ b/AST/Expr.cpp
@@ -995,7 +995,7 @@
// Strip off a cast to void*, if it exists.
if (const CastExpr *CE = dyn_cast<CastExpr>(this)) {
// Check that it is a cast to void*.
- if (const PointerType *PT = dyn_cast<PointerType>(CE->getType())) {
+ if (const PointerType *PT = CE->getType()->getAsPointerType()) {
QualType Pointee = PT->getPointeeType();
if (Pointee.getQualifiers() == 0 && Pointee->isVoidType() && // to void*
CE->getSubExpr()->getType()->isIntegerType()) // from int.
diff --git a/test/Sema/conditional-expr.c b/test/Sema/conditional-expr.c
index 813aaee..a21914c 100644
--- a/test/Sema/conditional-expr.c
+++ b/test/Sema/conditional-expr.c
@@ -31,5 +31,8 @@
enum {xxx,yyy,zzz} e, *ee;
short x;
ee = ee ? &x : ee ? &i : &e; // expected-warning {{pointer type mismatch}}
+
+ typedef void *asdf;
+ *(0 ? (asdf) 0 : &x) = 10;
}