From: Neil Booth Date: Tue, 31 Jul 2001 06:52:21 +0000 (+0000) Subject: * gcc.dg/cpp/macro8.c: New tests. X-Git-Tag: prereleases/libstdc++-3.0.95~2956 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dd666a872b497162a7e2130415936df27f532b35;p=thirdparty%2Fgcc.git * gcc.dg/cpp/macro8.c: New tests. From-SVN: r44502 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 87d3d799eb2f..8a88b5e58169 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2001-07-31 Neil Booth + + * gcc.dg/cpp/macro8.c: New test. + 2001-07-27 Nathan Sidwell * 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 index 000000000000..f49b0be9e2eb --- /dev/null +++ b/gcc/testsuite/gcc.dg/cpp/macro8.c @@ -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; +}