]> gcc.gnu.org Git - gcc.git/commitdiff
(decl_attributes): Allow format attributes on old style
authorRichard Kenner <kenner@gcc.gnu.org>
Tue, 1 Feb 1994 23:56:12 +0000 (18:56 -0500)
committerRichard Kenner <kenner@gcc.gnu.org>
Tue, 1 Feb 1994 23:56:12 +0000 (18:56 -0500)
(non-prototype) function declarations.

From-SVN: r6463

gcc/c-common.c

index 9a9c8ba1c023da443bb1c069385e9d6c204291e4..73ae7ebd686cc561089bc6e0d80a0b8d64f211ec 100644 (file)
@@ -1,5 +1,5 @@
 /* Subroutines shared by all languages that are variants of C.
-   Copyright (C) 1992, 1993 Free Software Foundation, Inc.
+   Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc.
 
 This file is part of GNU CC.
 
@@ -345,35 +345,39 @@ decl_attributes (decl, attributes)
            continue;
          }
 
-       /* Verify that the format_num argument is actually a string, in case
-          the format attribute is in error.  */
+       /* If a parameter list is specified, verify that the format_num
+          argument is actually a string, in case the format attribute
+          is in error.  */
        argument = TYPE_ARG_TYPES (TREE_TYPE (decl));
-       for (arg_num = 1; ; ++arg_num)
+       if (argument)
          {
-           if (argument == 0 || arg_num == format_num)
-             break;
-           argument = TREE_CHAIN (argument);
-         }
-       if (! argument
-           || TREE_CODE (TREE_VALUE (argument)) != POINTER_TYPE
-           || (TYPE_MAIN_VARIANT (TREE_TYPE (TREE_VALUE (argument)))
-               != char_type_node))
-         {
-           error_with_decl (decl,
-                            "format string arg not a string type, for `%s'");
-           continue;
-         }
-       if (first_arg_num != 0)
-         {
-           /* Verify that first_arg_num points to the last arg, the ... */
-           while (argument)
-             arg_num++, argument = TREE_CHAIN (argument);
-           if (arg_num != first_arg_num)
+           for (arg_num = 1; ; ++arg_num)
+             {
+               if (argument == 0 || arg_num == format_num)
+                 break;
+               argument = TREE_CHAIN (argument);
+             }
+           if (! argument
+               || TREE_CODE (TREE_VALUE (argument)) != POINTER_TYPE
+               || (TYPE_MAIN_VARIANT (TREE_TYPE (TREE_VALUE (argument)))
+                   != char_type_node))
              {
                error_with_decl (decl,
-                                "args to be formatted is not ..., for `%s'");
+                            "format string arg not a string type, for `%s'");
                continue;
              }
+           if (first_arg_num != 0)
+             {
+               /* Verify that first_arg_num points to the last arg, the ... */
+               while (argument)
+                 arg_num++, argument = TREE_CHAIN (argument);
+               if (arg_num != first_arg_num)
+                 {
+                   error_with_decl (decl,
+                                "args to be formatted is not ..., for `%s'");
+                   continue;
+                 }
+             }
          }
 
        record_function_format (DECL_NAME (decl), DECL_ASSEMBLER_NAME (decl),
This page took 0.078478 seconds and 5 git commands to generate.