From: neil Date: Sun, 29 Oct 2000 17:43:57 +0000 (+0000) Subject: * gcc.dg/cpp/defined.c, include1.c, paste11.c, skipping.c: X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b45dd3f3246a32b0075200134a86b2a399f772d4;p=thirdparty%2Fgcc.git * gcc.dg/cpp/defined.c, include1.c, paste11.c, skipping.c: New tests. * gcc.dg/cpp/macsyntx.c: Move test to defined.c. * gcc.dg/cpp/mi3.c, mi3.h: New test for over-enthusiastic optimisation. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37126 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f6838e88a5ba..f8bad74d9bc6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2000-10-29 Neil Booth + + * gcc.dg/cpp/defined.c, include1.c, paste11.c, skipping.c: + New tests. + * gcc.dg/cpp/macsyntx.c: Move test to defined.c. + * gcc.dg/cpp/mi3.c, mi3.h: New test for over-enthusiastic + optimisation. + 2000-10-29 Neil Booth * gcc.dg/cpp/macro4.c, macro5.c: New tests. diff --git a/gcc/testsuite/gcc.dg/cpp/defined.c b/gcc/testsuite/gcc.dg/cpp/defined.c new file mode 100644 index 000000000000..0e82f7e1f507 --- /dev/null +++ b/gcc/testsuite/gcc.dg/cpp/defined.c @@ -0,0 +1,27 @@ +/* Copyright (C) 2000 Free Software Foundation, Inc. */ + +/* { dg-do preprocess } */ + +/* Tests behaviour of the defined operator. */ + +/* Source: Neil Booth, 29 Oct 2000. */ + +/* No diagnostics, though you could argue there should be. */ +#if defined defined +#error defined is defined! +#endif + +#define defined /* { dg-error "defined" } */ + +#define is_Z_defined defined Z + +/* The behaviour of "defined" when it comes from a macro expansion is + now documented. */ +#if is_Z_defined /* { dg-warning "macro expansion" } */ +#error Macro expanding into defined operator test 1 +#endif + +#define Z +#if !is_Z_defined /* { dg-warning "macro expansion" } */ +#error Macro expanding into defined operator test 2 +#endif diff --git a/gcc/testsuite/gcc.dg/cpp/include1.c b/gcc/testsuite/gcc.dg/cpp/include1.c new file mode 100644 index 000000000000..a0a54e00598c --- /dev/null +++ b/gcc/testsuite/gcc.dg/cpp/include1.c @@ -0,0 +1,13 @@ +/* Copyright (C) 2000 Free Software Foundation, Inc. */ + +/* { dg-do preprocess } */ + +/* Tests that "#include MACRO" works. */ + +/* Source: Neil Booth, 29 Oct 2000. */ + +#define MACRO "mi1c.h" +#include MACRO +#ifndef CPP_MIC_H +#error #include MACRO does not work +#endif diff --git a/gcc/testsuite/gcc.dg/cpp/macsyntx.c b/gcc/testsuite/gcc.dg/cpp/macsyntx.c index e7f3528b49f4..ee5fd365a9cf 100644 --- a/gcc/testsuite/gcc.dg/cpp/macsyntx.c +++ b/gcc/testsuite/gcc.dg/cpp/macsyntx.c @@ -21,7 +21,6 @@ #define ; /* { dg-error "identifier" } */ #define SEMI; /* { dg-warning "space" } */ -#define defined /* { dg-error "defined" } */ #define foo(X /* { dg-error "missing" } */ #define foo\ (X,) /* { dg-error "parameter name" } */ diff --git a/gcc/testsuite/gcc.dg/cpp/mi3.c b/gcc/testsuite/gcc.dg/cpp/mi3.c index 533b509f1e70..f33fd7887e98 100644 --- a/gcc/testsuite/gcc.dg/cpp/mi3.c +++ b/gcc/testsuite/gcc.dg/cpp/mi3.c @@ -10,8 +10,11 @@ #include "mi3.def" #undef X +#include "mi3.h" +#include "mi3.h" /* The second include declares variable c. */ + int main(void) { - return a + b; + return a + b + c; } diff --git a/gcc/testsuite/gcc.dg/cpp/mi3.h b/gcc/testsuite/gcc.dg/cpp/mi3.h new file mode 100644 index 000000000000..8774fcf486ab --- /dev/null +++ b/gcc/testsuite/gcc.dg/cpp/mi3.h @@ -0,0 +1,7 @@ +/* Another test case for over-eager multiple include optimization. */ + +#ifndef GUARD +#define GUARD +#elif 1 /* #elif kills optimisation */ +int c; +#endif diff --git a/gcc/testsuite/gcc.dg/cpp/paste11.c b/gcc/testsuite/gcc.dg/cpp/paste11.c new file mode 100644 index 000000000000..18530b3448ad --- /dev/null +++ b/gcc/testsuite/gcc.dg/cpp/paste11.c @@ -0,0 +1,15 @@ +/* Copyright (C) 2000 Free Software Foundation, Inc. */ + +/* { dg-do preprocess } */ + +/* Test correct pasting of identifiers and numbers. We can paste any + number, as long as no '.', '-' or '+' appears in its spelling. */ + +#define glue(x, y) x ## y + +glue (ident, 12) /* OK. */ +glue (ident, 12e3) /* OK. */ +glue (ident, 12e+3) /* { dg-warning "valid preprocessing tok" } */ +glue (ident, 12e-3) /* { dg-warning "valid preprocessing tok" } */ +glue (ident, 1.2) /* { dg-warning "valid preprocessing tok" } */ +glue (ident, .12) /* { dg-warning "valid preprocessing tok" } */ diff --git a/gcc/testsuite/gcc.dg/cpp/skipping.c b/gcc/testsuite/gcc.dg/cpp/skipping.c new file mode 100644 index 000000000000..d87ea70591cc --- /dev/null +++ b/gcc/testsuite/gcc.dg/cpp/skipping.c @@ -0,0 +1,20 @@ +/* Copyright (C) 2000 Free Software Foundation, Inc. */ + +/* { dg-do preprocess } */ + +/* Tests expansion of macros whilst skipping false conditionals. */ + +/* Source: Neil Booth, 29 Oct 2000. */ + +#define F() +#define TRUE 1 + +#if 0 +F( /* No diagnostic: don't even try to expand it. */ +#endif + +#if 0 +#elif TRUE /* Expand this, even though we were skipping. */ +#else +#error Macros not expanded in #elif +#endif