From: Steve Naroff Date: Mon, 18 Feb 2008 15:14:59 +0000 (+0000) Subject: Tweak fix for http://llvm.org/bugs/show_bug.cgi?id=2000 to work across typedefs. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a0992b63c9c938699da526dd6032ad30b6011656;p=clang Tweak fix for http://llvm.org/bugs/show_bug.cgi?id=2000 to work across typedefs. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47269 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/AST/Expr.cpp b/AST/Expr.cpp index 720b490d24..27dfa78273 100644 --- a/AST/Expr.cpp +++ b/AST/Expr.cpp @@ -358,7 +358,7 @@ Expr::isLvalueResult Expr::isLvalue() const { return LV_NotObjectType; // Allow qualified void which is an incomplete type other than void (yuck). - if (TR->isVoidType() && !TR.getQualifiers()) + if (TR->isVoidType() && !TR.getCanonicalType().getQualifiers()) return LV_IncompleteVoidType; if (TR->isReferenceType()) // C++ [expr] diff --git a/test/Sema/deref.c b/test/Sema/deref.c index 8f8156d81f..83f7f8389c 100644 --- a/test/Sema/deref.c +++ b/test/Sema/deref.c @@ -21,6 +21,7 @@ void foo3 (void) } extern const void cv1; + const void *foo4 (void) { return &cv1; @@ -31,3 +32,12 @@ void *foo5 (void) { return &cv2; // expected-error{{address expression must be an lvalue or a function designator}} } + +typedef const void CVT; +extern CVT cv3; + +const void *foo6 (void) +{ + return &cv3; +} +