re PR preprocessor/33305 (We should warn about empty macro arguments)
authorAndrew Haley <aph@redhat.com>
Thu, 3 Jul 2008 10:31:50 +0000 (10:31 +0000)
committerAndrew Haley <aph@gcc.gnu.org>
Thu, 3 Jul 2008 10:31:50 +0000 (10:31 +0000)
2008-06-13  Andrew Haley  <aph@redhat.com>

        PR preprocessor/33305
        * macro.c (replace_args): Print a warning for empty macro
        arguments in C89 and C++.

From-SVN: r137414

libcpp/ChangeLog
libcpp/macro.c

index 7f06941..2d29a30 100644 (file)
@@ -1,3 +1,9 @@
+2008-06-13  Andrew Haley  <aph@redhat.com>
+
+       PR preprocessor/33305
+       * macro.c (replace_args): Print a warning for empty macro
+       arguments in C89 and C++.
+
 2008-06-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 
        * Makefile.in ($(srcdir)/aclocal.m4): Update dependencies.
index 016754b..edc2856 100644 (file)
@@ -1009,6 +1009,17 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, macro_arg
          if (src->flags & PASTE_LEFT)
            paste_flag = dest - 1;
        }
+      else if (CPP_PEDANTIC (pfile) && ! macro->syshdr
+              && ! CPP_OPTION (pfile, c99)
+              && ! cpp_in_system_header (pfile))
+       {
+         cpp_error (pfile, CPP_DL_PEDWARN,
+                    "invoking macro %s argument %d: "
+                    "empty macro arguments are undefined"
+                    " in ISO C90 and ISO C++98",
+                    NODE_NAME (node),
+                    src->val.arg_no);
+       }
 
       /* Avoid paste on RHS (even case count == 0).  */
       if (!pfile->state.in_directive && !(src->flags & PASTE_LEFT))