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

        PR preprocessor/33305
        * gcc.dg/cpp/avoidpaste1.c: Use dg-options "-ansi" to avoid
        "-pedantic".
        * gcc.dg/cpp/avoidpaste2.c: Likewise
        * gcc.dg/cpp/20000519-1.c: Likewise.
        * g++.dg/ext/gnu-inline-global-reject.C: Likewise.
        * gcc.dg/cpp/c99-empty-macro-args.c: New test.
        * gcc.dg/cpp/c90-empty-macro-args.c: New test.

From-SVN: r137411

gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/ext/gnu-inline-global-reject.C
gcc/testsuite/gcc.dg/cpp/20000519-1.c
gcc/testsuite/gcc.dg/cpp/avoidpaste1.c
gcc/testsuite/gcc.dg/cpp/avoidpaste2.c
gcc/testsuite/gcc.dg/cpp/c90-empty-macro-args.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/cpp/c99-empty-macro-args.c [new file with mode: 0644]

index 3feefc8985adf0bddf7bed90e683617536f83740..cc23a06e70cb3f6fb6f8f5388eddc93777f48068 100644 (file)
@@ -1,3 +1,14 @@
+2008-07-03  Andrew Haley  <aph@redhat.com>
+
+       PR preprocessor/33305
+       * gcc.dg/cpp/avoidpaste1.c: Use dg-options "-ansi" to avoid
+       "-pedantic".
+       * gcc.dg/cpp/avoidpaste2.c: Likewise
+       * gcc.dg/cpp/20000519-1.c: Likewise.
+       * g++.dg/ext/gnu-inline-global-reject.C: Likewise.
+       * gcc.dg/cpp/c99-empty-macro-args.c: New test.
+       * gcc.dg/cpp/c90-empty-macro-args.c: New test.
+
 2008-07-03  Richard Guenther  <rguenther@suse.de>
 
        PR c++/36128
index 2f2b8f29a08a19a5816324eece496b645484a7a1..d9e26609550e8da5e485804d775c75489a703050 100644 (file)
@@ -4,6 +4,7 @@
 */
 
 /* { dg-do compile } */
+/* { dg-options " -ansi -Wno-long-long" } */
 
 #include "gnu-inline-common.h"
 
index 82ab3a268618c9676d4c716c58959c1e853b0a95..7cd7daa3ad20d79c69592491c5cb894e91b12e31 100644 (file)
@@ -1,6 +1,7 @@
 /* Regression test for preprocessor crash.
    Reported by Mathias Froehlich <frohlich@na.uni-tuebingen.de>.  */
 /* { dg-do preprocess } */
+/* { dg-options "-ansi" } */
 #define foo
 
 #define __CAT__(a,b,c,d) a##b##c##d
index d304a74415589cd8b39fa9889289cc3b374d9f8c..3591f9c08aeaa001381e46feaee795ad8e1a5c21 100644 (file)
@@ -1,6 +1,7 @@
 /* Copyright (C) 2001, 2003 Free Software Foundation, Inc.  */
 
 /* { dg-do preprocess } */
+/* { dg-options "-ansi" } */
 
 /* This tests that we avoid accidental pasting only before and after
    macros and arguments, and not when the tokens are already pasted
index 42b549c8d6c9d309f3299dd314ef9d18cd84c63e..dc5bbc7f270502a70e0cbeb68490d5d8f4bf4d05 100644 (file)
@@ -1,6 +1,7 @@
 /* Copyright (C) 2001, 2003 Free Software Foundation, Inc.  */
 
 /* { dg-do preprocess } */
+/* { dg-options "-ansi" } */
 
 /* This tests that we avoid accidental pasting, as well as gratuitous
    space insertion, in various nasty places _inside_ a macro's
diff --git a/gcc/testsuite/gcc.dg/cpp/c90-empty-macro-args.c b/gcc/testsuite/gcc.dg/cpp/c90-empty-macro-args.c
new file mode 100644 (file)
index 0000000..e90f8e6
--- /dev/null
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-std=c89 -pedantic" } */
+
+#define f(a,b)   f2(a,,b) 
+#define f2(a,b,c) a; b; c;
+#define f3(a)    a
+
+#define g()   p()
+
+void p(void) {}
+
+
+void foo(void)
+{
+    f(p(),p()); /* { dg-warning "macro f2 argument 2: empty macro arguments are undefined" } */
+    f2(p(),,p()); /* { dg-warning "macro f2 argument 2: empty macro arguments are undefined" } */
+    f3(); /* { dg-warning "macro f3 argument 1: empty macro arguments are undefined" } */
+    g();
+}
diff --git a/gcc/testsuite/gcc.dg/cpp/c99-empty-macro-args.c b/gcc/testsuite/gcc.dg/cpp/c99-empty-macro-args.c
new file mode 100644 (file)
index 0000000..e1e0c61
--- /dev/null
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-std=c99 -pedantic" } */
+
+#define f(a,b)   f2(a,,b) 
+#define f2(a,b,c) a; b; c;
+#define f3(a)    a
+
+#define g()   p()
+
+void p(void) {}
+
+
+void foo(void)
+{
+    f(p(),p());
+    f2(p(),,p());
+    f3();
+    g();
+}