defined.c, [...]: New tests.

* 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.

From-SVN: r37126
This commit is contained in:
Neil Booth 2000-10-29 17:43:57 +00:00 committed by Neil Booth
parent 8c7b74b939
commit 9f6ef6bcaf
8 changed files with 94 additions and 2 deletions

View File

@ -1,3 +1,11 @@
2000-10-29 Neil Booth <neilb@earthling.net>
* 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 <neilb@earthling.net>
* gcc.dg/cpp/macro4.c, macro5.c: New tests.

View File

@ -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

View File

@ -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

View File

@ -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" } */

View File

@ -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;
}

View File

@ -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

View File

@ -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" } */

View File

@ -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