OSDN Git Service

* gcc.dg/cpp/macro8.c: New tests.
authorneil <neil@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 31 Jul 2001 06:52:21 +0000 (06:52 +0000)
committerneil <neil@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 31 Jul 2001 06:52:21 +0000 (06:52 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44502 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/cpp/macro8.c [new file with mode: 0644]

index 87d3d79..8a88b5e 100644 (file)
@@ -1,3 +1,7 @@
+2001-07-31  Neil Booth  <neil@cat.daikokuya.demon.co.uk>
+
+       * gcc.dg/cpp/macro8.c: New test.
+
 2001-07-27  Nathan Sidwell  <nathan@codesourcery.com>
 
        * g++.dg/abi/vbase8-21.C: New test.
diff --git a/gcc/testsuite/gcc.dg/cpp/macro8.c b/gcc/testsuite/gcc.dg/cpp/macro8.c
new file mode 100644 (file)
index 0000000..f49b0be
--- /dev/null
@@ -0,0 +1,29 @@
+/* { dg-do compile } */
+/* { dg-options -std=gnu89 } */
+
+/* GCC 2.95.2 used to get the following variable argument macro
+   expansions wrong.
+
+   Source: Neil Booth, from PR 3852 with persmission.  31 Jul 2001.  */
+
+#define TEST_WORSE(args...) (5, ## args)
+#define TEST_BAD(foo, args...) (2, (foo), ## args)
+
+extern void abort ();
+
+static int add (int a, int b)
+{
+  return a + b;
+}
+
+int main ()
+{
+  /* Would expand to a single closing parenthesis, maybe because of
+     the "no args requires space" brokenness.  */
+  if (TEST_WORSE () != 5)
+    abort ();
+  /* The macro would expand to (0, (0) with a missing closing parenthesis.  */
+  if (add TEST_BAD (5) != 7)
+    abort ();
+  return 0;
+}