diff options
Diffstat (limited to 'gcc/testsuite/c-c++-common/cpp')
-rw-r--r-- | gcc/testsuite/c-c++-common/cpp/pr58844-1.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/c-c++-common/cpp/pr58844-2.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/c-c++-common/cpp/va-opt-error.c | 28 | ||||
-rw-r--r-- | gcc/testsuite/c-c++-common/cpp/va-opt-pedantic.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/c-c++-common/cpp/va-opt.c | 42 | ||||
-rw-r--r-- | gcc/testsuite/c-c++-common/cpp/warning-zero-location.c | 2 |
6 files changed, 80 insertions, 5 deletions
diff --git a/gcc/testsuite/c-c++-common/cpp/pr58844-1.c b/gcc/testsuite/c-c++-common/cpp/pr58844-1.c index 3abf8a76803..2a2e277b0fc 100644 --- a/gcc/testsuite/c-c++-common/cpp/pr58844-1.c +++ b/gcc/testsuite/c-c++-common/cpp/pr58844-1.c @@ -4,5 +4,5 @@ #define A x######x int A = 1; -#define A x######x /* { dg-message "previous definition" } */ -#define A x##x /* { dg-warning "redefined" } */ +#define A x######x /* { dg-message "-:previous definition" } */ +#define A x##x /* { dg-warning "-:redefined" } */ diff --git a/gcc/testsuite/c-c++-common/cpp/pr58844-2.c b/gcc/testsuite/c-c++-common/cpp/pr58844-2.c index 1e219152fc5..52993b314be 100644 --- a/gcc/testsuite/c-c++-common/cpp/pr58844-2.c +++ b/gcc/testsuite/c-c++-common/cpp/pr58844-2.c @@ -4,5 +4,5 @@ #define A x######x int A = 1; -#define A x######x /* { dg-message "previous definition" } */ -#define A x##x /* { dg-warning "redefined" } */ +#define A x######x /* { dg-message "-:previous definition" } */ +#define A x##x /* { dg-warning "-:redefined" } */ diff --git a/gcc/testsuite/c-c++-common/cpp/va-opt-error.c b/gcc/testsuite/c-c++-common/cpp/va-opt-error.c new file mode 100644 index 00000000000..f32f0551723 --- /dev/null +++ b/gcc/testsuite/c-c++-common/cpp/va-opt-error.c @@ -0,0 +1,28 @@ +/* { dg-do preprocess }*/ +/* { dg-options "-std=gnu99" { target c } } */ +/* { dg-options "-std=c++2a" { target c++ } } */ + +#define ERR1(x) __VA_OPT__ /* { dg-warning "__VA_OPT__ can only appear" } */ +#define ERR2(x) __VA_OPT__( /* { dg-warning "can only appear" } */ +#define ERR3(x) __VA_OPT__() /* { dg-warning "can only appear" } */ + +#define ERR4(x,...) __VA_OPT__ /* { dg-error "unterminated __VA_OPT__" } */ +#define ERR5(x,...) __VA_OPT__( /* { dg-error "unterminated" } */ +#define ERR6(x,...) __VA_OPT__(() /* { dg-error "unterminated" } */ + +#define ERR7(x,...) __VA_OPT__(__VA_OPT__) /* { dg-error "may not appear" } */ +#define ERR7(x,...) __VA_OPT__(__VA_OPT__()) /* { dg-error "may not appear" } */ + +#define ERR8(x, y,...) x __VA_OPT__(##) y /* { dg-error "either end" } */ +#define ERR9(x, y,...) x __VA_OPT__(x ##) y /* { dg-error "either end" } */ +#define ERRA(x, y,...) x x __VA_OPT__(## y) /* { dg-error "either end" } */ + +#define ERRB __VA_OPT__ /* { dg-warning "can only appear" } */ +#define ERRC(__VA_OPT__) x /* { dg-warning "can only appear" } */ + +__VA_OPT__ /* { dg-warning "can only appear" } */ + +#define ERRD(x) +ERRD(__VA_OPT__) /* { dg-warning "can only appear" } */ + +#define __VA_OPT__ /* { dg-warning "can only appear" } */ diff --git a/gcc/testsuite/c-c++-common/cpp/va-opt-pedantic.c b/gcc/testsuite/c-c++-common/cpp/va-opt-pedantic.c new file mode 100644 index 00000000000..5887bf5a484 --- /dev/null +++ b/gcc/testsuite/c-c++-common/cpp/va-opt-pedantic.c @@ -0,0 +1,5 @@ +/* { dg-do preprocess }*/ +/* { dg-options "-std=c11 -pedantic-errors" { target c } } */ +/* { dg-options "-std=c++17 -pedantic-errors" { target c++ } } */ + +#define CALL(F, ...) F (7 __VA_OPT__(,) __VA_ARGS__) /* { dg-error "__VA_OPT__ is not available" } */ diff --git a/gcc/testsuite/c-c++-common/cpp/va-opt.c b/gcc/testsuite/c-c++-common/cpp/va-opt.c new file mode 100644 index 00000000000..243d33b2cf1 --- /dev/null +++ b/gcc/testsuite/c-c++-common/cpp/va-opt.c @@ -0,0 +1,42 @@ +/* { dg-do compile } */ +/* { dg-options "-std=gnu99" { target c } } */ +/* { dg-options "-std=c++2a" { target c++ } } */ + +extern void f0 (void); +extern void f1 (int); +extern void f2 (int, int); +extern void f3 (int, int, int); +extern void f4 (int, int, int, int); +extern int s (const char *); + +#define CALL(F, ...) F (7 __VA_OPT__(,) __VA_ARGS__) +#define CP(F, X, Y, ...) F (__VA_OPT__(X ## Y,) __VA_ARGS__) +#define CS(F, ...) F(__VA_OPT__(s(# __VA_ARGS__))) +#define D(F, ...) F(__VA_OPT__(__VA_ARGS__) __VA_OPT__(,) __VA_ARGS__) +#define CALL0(...) __VA_OPT__(f2)(0 __VA_OPT__(,)__VA_ARGS__) + +void t (void) +{ + CALL (f1); + CALL (f1, ); + CALL (f2, 1); + CALL (f3, 1, 2); + + int one = 1; + int two = 2; + int onetwo = 23; + + CP (f0, one, two); + CP (f0, one, two, ); + CP (f2, one, two, 3); + + CS (f0); + CS (f1, 1, 2, 3, 4); + + D (f0); + D (f2, 1); + D (f4, 1, 2); + + CALL0 (); + CALL0 (23); +} diff --git a/gcc/testsuite/c-c++-common/cpp/warning-zero-location.c b/gcc/testsuite/c-c++-common/cpp/warning-zero-location.c index 2b9c9a95217..57544b6aff1 100644 --- a/gcc/testsuite/c-c++-common/cpp/warning-zero-location.c +++ b/gcc/testsuite/c-c++-common/cpp/warning-zero-location.c @@ -3,6 +3,6 @@ { dg-do compile } */ -#define _GNU_SOURCE /* { dg-warning "redefined" } */ +#define _GNU_SOURCE /* { dg-warning "-:redefined" } */ /* { dg-message "" "#define _GNU_SOURCE" {target *-*-* } 0 } */ |