]> granicus.if.org Git - clang/commitdiff
in va_arg diagnostics, print out the unpromoted type. This makes the
authorChris Lattner <sabre@nondot.org>
Sun, 5 Apr 2009 15:49:53 +0000 (15:49 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 5 Apr 2009 15:49:53 +0000 (15:49 +0000)
diagnostic use the va_list typedef more often, see the difference in the
changed testcase.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68441 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaExpr.cpp
test/Sema/varargs-x86-64.c

index a4335eaf627b2566223d7433d4df04c9d2d17ce4..99afd32f1026f9243833b871e8a76cd1099bd894 100644 (file)
@@ -4710,7 +4710,9 @@ Sema::OwningExprResult Sema::ActOnVAArg(SourceLocation BuiltinLoc,
                                         ExprArg expr, TypeTy *type,
                                         SourceLocation RPLoc) {
   QualType T = QualType::getFromOpaquePtr(type);
-
+  Expr *E = static_cast<Expr*>(expr.get());
+  Expr *OrigExpr = E;
+  
   InitBuiltinVaListType();
 
   // Get the va_list type
@@ -4721,7 +4723,6 @@ Sema::OwningExprResult Sema::ActOnVAArg(SourceLocation BuiltinLoc,
   if (VaListType->isArrayType())
     VaListType = Context.getArrayDecayedType(VaListType);
   // Make sure the input expression also decays appropriately.
-  Expr *E = static_cast<Expr*>(expr.get());
   UsualUnaryConversions(E);
 
   AssignConvertType ConvResult = 
@@ -4730,13 +4731,13 @@ Sema::OwningExprResult Sema::ActOnVAArg(SourceLocation BuiltinLoc,
   case Compatible: break;  // Everything good.
   case CompatiblePointerDiscardsQualifiers:
     Diag(E->getLocStart(), diag::warn_va_arg_with_qualified_va_list)
-      << E->getType() << E->getSourceRange();
+      << OrigExpr->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());
+      << OrigExpr->getType() << E->getSourceRange());
   }
 
   // FIXME: Check that type is complete/non-abstract
index 7953eada498ad2a5ed9cfa679158ba6721b15c87..5afcda24717c42a5ebe625a90eff1019ca11b1a3 100644 (file)
@@ -3,6 +3,6 @@
 // rdar://6726818
 void f1() {
   const __builtin_va_list args2;
-  (void)__builtin_va_arg(args2, int); // expected-warning {{va_arg applied to va_list type 'struct __va_list_tag const *' with unexpected qualifiers}}
+  (void)__builtin_va_arg(args2, int); // expected-warning {{va_arg applied to va_list type '__builtin_va_list const' with unexpected qualifiers}}
 }