aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AST/Expr.cpp2
-rw-r--r--test/Sema/deref.c10
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;
+}
+