c-common.c (check_format_info): Avoid non-literal format string warnings when `first_...
authorKaveh R. Ghazi <ghazi@caip.rutgers.edu>
Thu, 28 Oct 1999 10:53:12 +0000 (10:53 +0000)
committerKaveh Ghazi <ghazi@gcc.gnu.org>
Thu, 28 Oct 1999 10:53:12 +0000 (10:53 +0000)
       * c-common.c (check_format_info): Avoid non-literal format string
       warnings when `first_arg_num' is zero.

From-SVN: r30240

gcc/ChangeLog
gcc/c-common.c

index c48bcfd..66642cd 100644 (file)
@@ -1,3 +1,8 @@
+Thu Oct 28 06:47:32 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * c-common.c (check_format_info): Avoid non-literal format string
+       warnings when `first_arg_num' is zero.
+
 Thu Oct 28 12:28:48 1999  Bernd Schmidt  <bernds@cygnus.co.uk>
 
        * rtl.texi: Delete explicit Prev, Up and Next entries in "@node"s.
index 3e9d962..8b2f69c 100644 (file)
@@ -1491,7 +1491,11 @@ check_format_info (info, params)
     {
       /* The user may get multiple warnings if the supplied argument
         isn't even a string pointer.  */
-      warning ("format not a string literal, argument types not checked");
+      /* Functions taking a va_list normally pass a non-literal format
+        string.  These functions typically are declared with
+        first_arg_num == 0, so avoid warning in those cases.  */
+      if (info->first_arg_num != 0)
+       warning ("format not a string literal, argument types not checked");
       return;
     }
   format_tree = TREE_OPERAND (format_tree, 0);
@@ -1499,7 +1503,11 @@ check_format_info (info, params)
     {
       /* The user may get multiple warnings if the supplied argument
         isn't even a string pointer.  */
-      warning ("format not a string literal, argument types not checked");
+      /* Functions taking a va_list normally pass a non-literal format
+        string.  These functions typically are declared with
+        first_arg_num == 0, so avoid warning in those cases.  */
+      if (info->first_arg_num != 0)
+       warning ("format not a string literal, argument types not checked");
       return;
     }
   format_chars = TREE_STRING_POINTER (format_tree);