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:
parent
8c7b74b939
commit
9f6ef6bcaf
8 changed files with 94 additions and 2 deletions
|
@ -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.
|
||||
|
|
27
gcc/testsuite/gcc.dg/cpp/defined.c
Normal file
27
gcc/testsuite/gcc.dg/cpp/defined.c
Normal 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
|
13
gcc/testsuite/gcc.dg/cpp/include1.c
Normal file
13
gcc/testsuite/gcc.dg/cpp/include1.c
Normal 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
|
|
@ -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" } */
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
7
gcc/testsuite/gcc.dg/cpp/mi3.h
Normal file
7
gcc/testsuite/gcc.dg/cpp/mi3.h
Normal 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
|
15
gcc/testsuite/gcc.dg/cpp/paste11.c
Normal file
15
gcc/testsuite/gcc.dg/cpp/paste11.c
Normal 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" } */
|
20
gcc/testsuite/gcc.dg/cpp/skipping.c
Normal file
20
gcc/testsuite/gcc.dg/cpp/skipping.c
Normal 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
|
Loading…
Add table
Reference in a new issue