зеркало из https://github.com/microsoft/clang-1.git
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
This commit is contained in:
Родитель
24f1a96774
Коммит
4b3f9b367c
|
@ -995,7 +995,7 @@ bool Expr::isNullPointerConstant(ASTContext &Ctx) const {
|
||||||
// Strip off a cast to void*, if it exists.
|
// Strip off a cast to void*, if it exists.
|
||||||
if (const CastExpr *CE = dyn_cast<CastExpr>(this)) {
|
if (const CastExpr *CE = dyn_cast<CastExpr>(this)) {
|
||||||
// Check that it is a cast to void*.
|
// 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();
|
QualType Pointee = PT->getPointeeType();
|
||||||
if (Pointee.getQualifiers() == 0 && Pointee->isVoidType() && // to void*
|
if (Pointee.getQualifiers() == 0 && Pointee->isVoidType() && // to void*
|
||||||
CE->getSubExpr()->getType()->isIntegerType()) // from int.
|
CE->getSubExpr()->getType()->isIntegerType()) // from int.
|
||||||
|
|
|
@ -31,5 +31,8 @@ void foo() {
|
||||||
enum {xxx,yyy,zzz} e, *ee;
|
enum {xxx,yyy,zzz} e, *ee;
|
||||||
short x;
|
short x;
|
||||||
ee = ee ? &x : ee ? &i : &e; // expected-warning {{pointer type mismatch}}
|
ee = ee ? &x : ee ? &i : &e; // expected-warning {{pointer type mismatch}}
|
||||||
|
|
||||||
|
typedef void *asdf;
|
||||||
|
*(0 ? (asdf) 0 : &x) = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче