Add a warning for questionable va_args usage.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68435 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp
index a43c2c3..a4335ea 100644
--- a/lib/Sema/SemaExpr.cpp
+++ b/lib/Sema/SemaExpr.cpp
@@ -4726,11 +4726,18 @@
 
   AssignConvertType ConvResult = 
     CheckAssignmentConstraints(VaListType, E->getType());
-  if (ConvResult != Compatible &&
-      ConvResult != CompatiblePointerDiscardsQualifiers)
+  switch (ConvResult) {
+  case Compatible: break;  // Everything good.
+  case CompatiblePointerDiscardsQualifiers:
+    Diag(E->getLocStart(), diag::warn_va_arg_with_qualified_va_list)
+      << E->getType() << E->getSourceRange();
+    break;
+
+  default:
     return ExprError(Diag(E->getLocStart(),
                          diag::err_first_argument_to_va_arg_not_of_type_va_list)
       << E->getType() << E->getSourceRange());
+  }
 
   // FIXME: Check that type is complete/non-abstract
   // FIXME: Warn if a non-POD type is passed in.