summaryrefslogtreecommitdiff
path: root/gcc/testsuite/c-c++-common/cpp
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@linaro.org>2017-11-20 16:02:55 +0000
committerRichard Sandiford <richard.sandiford@linaro.org>2017-11-20 16:02:55 +0000
commitd58952aefb03632bbb5b441d5c0bd330711f0af1 (patch)
treed046e56bfbd6a40106ae6ab96fafc954f1dfc955 /gcc/testsuite/c-c++-common/cpp
parent648f8fc59b2cc39abd24f4c22388b346cdebcc31 (diff)
parent50221fae802a10fafe95e61d40504a58da33e98f (diff)
downloadgcc-linaro-dev/sve.tar.gz
Merge trunk into svelinaro-dev/sve
Diffstat (limited to 'gcc/testsuite/c-c++-common/cpp')
-rw-r--r--gcc/testsuite/c-c++-common/cpp/pr58844-1.c4
-rw-r--r--gcc/testsuite/c-c++-common/cpp/pr58844-2.c4
-rw-r--r--gcc/testsuite/c-c++-common/cpp/va-opt-error.c28
-rw-r--r--gcc/testsuite/c-c++-common/cpp/va-opt-pedantic.c5
-rw-r--r--gcc/testsuite/c-c++-common/cpp/va-opt.c42
-rw-r--r--gcc/testsuite/c-c++-common/cpp/warning-zero-location.c2
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 } */