diff options
-rw-r--r-- | AST/Expr.cpp | 2 | ||||
-rw-r--r-- | test/Sema/deref.c | 10 |
2 files changed, 11 insertions, 1 deletions
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; +} + |