PR2524: downgrade taking address of expression of type 'void' to an 
extension warning.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70805 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp
index 6ce98cd..36ec9c6 100644
--- a/lib/Sema/SemaExpr.cpp
+++ b/lib/Sema/SemaExpr.cpp
@@ -4245,7 +4245,12 @@
 
   if (lval != Expr::LV_Valid) { // C99 6.5.3.2p1
     // The operand must be either an l-value or a function designator
-    if (!op->getType()->isFunctionType()) {
+    if (op->getType()->isFunctionType()) {
+      // Function designator is valid
+    } else if (lval == Expr::LV_IncompleteVoidType) {
+      Diag(OpLoc, diag::ext_typecheck_addrof_void)
+        << op->getSourceRange();
+    } else {
       // FIXME: emit more specific diag...
       Diag(OpLoc, diag::err_typecheck_invalid_lvalue_addrof)
         << op->getSourceRange();