mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-20 06:29:04 +08:00
macro4.c, macro5.c: New tests.
* gcc.dg/cpp/macro4.c, macro5.c: New tests. * mi1.c, mi1c.h: Add null directives to multiple-include test. * mi5.c: Test multiple includes work with -C. * trigraphs.c: Test ^= version. From-SVN: r37124
This commit is contained in:
parent
44ed91a1d6
commit
00c83d4661
@ -1,3 +1,10 @@
|
||||
2000-10-29 Neil Booth <neilb@earthling.net>
|
||||
|
||||
* gcc.dg/cpp/macro4.c, macro5.c: New tests.
|
||||
* mi1.c, mi1c.h: Add null directives to multiple-include test.
|
||||
* mi5.c: Test multiple includes work with -C.
|
||||
* trigraphs.c: Test ^= version.
|
||||
|
||||
2000-10-28 Neil Booth <neilb@earthling.net>
|
||||
|
||||
New tests and test updates for new macro expander.
|
||||
|
24
gcc/testsuite/gcc.dg/cpp/macro4.c
Normal file
24
gcc/testsuite/gcc.dg/cpp/macro4.c
Normal file
@ -0,0 +1,24 @@
|
||||
/* Copyright (C) 2000 Free Software Foundation, Inc. */
|
||||
|
||||
/* { dg-do run } */
|
||||
|
||||
/* Test source Neil Booth. GCC <= 2.96 don't get this right. */
|
||||
|
||||
extern void abort (void);
|
||||
|
||||
int glue (int x, int y)
|
||||
{
|
||||
return x + y;
|
||||
}
|
||||
|
||||
#define glue(x, y) x ## y
|
||||
#define xglue(x, y) glue (x, y)
|
||||
|
||||
int main ()
|
||||
{
|
||||
/* Should expand to glue (1, 2) as the second "glue" is nested. */
|
||||
if (glue (xgl, ue) (1, 2) != 3)
|
||||
abort ();
|
||||
|
||||
return 0;
|
||||
}
|
24
gcc/testsuite/gcc.dg/cpp/macro5.c
Normal file
24
gcc/testsuite/gcc.dg/cpp/macro5.c
Normal file
@ -0,0 +1,24 @@
|
||||
/* { dg-do preprocess } */
|
||||
|
||||
/* Test source Robert Lipe, with minor modifications for the testsuite
|
||||
by Neil Booth. 29 Oct 2000. */
|
||||
|
||||
#define _VA_ARGS_0() 42
|
||||
#define _L_0() (
|
||||
#define _R_0() )
|
||||
|
||||
#define __VA_ARGLIST(argc,list) \
|
||||
_VA_ARGS_##argc list
|
||||
|
||||
#define _CAT_LIST(argc,list1,list2) \
|
||||
_L_##argc list1 _R_##argc list2
|
||||
|
||||
#define _VA_ARGLIST(argc,list1,list2) \
|
||||
__VA_ARGLIST(argc, \
|
||||
_CAT_LIST(argc, list1, list2))
|
||||
|
||||
#define BLAH(a) _VA_ARGLIST(a, (), ())
|
||||
|
||||
#if BLAH (0) != 42
|
||||
#error Simulated varargs macros
|
||||
#endif
|
@ -1,9 +1,10 @@
|
||||
/* Test "ignore redundant include" facility.
|
||||
We must test with C and C++ comments outside the guard conditional;
|
||||
also, we test guarding with #ifndef and #if !defined.
|
||||
-H is used because cpp mi1ght confuse the issue by optimizing out
|
||||
#line markers. This test only passes if each of the headers is
|
||||
read exactly once.
|
||||
|
||||
We must test with C and C++ comments, and null directives, outside
|
||||
the guard conditional; also, we test guarding with #ifndef and #if
|
||||
!defined. -H is used because cpp might confuse the issue by
|
||||
optimizing out #line markers. This test only passes if each of the
|
||||
headers is read exactly once.
|
||||
|
||||
The disgusting regexp in the dg-error line, when stuck into
|
||||
dg.exp's compiler-output regexp, matches the correct -H output and
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* Redundant header include test with C comments at top. */
|
||||
# /* And a null directive at the top. */
|
||||
|
||||
#ifndef CPP_MIC_H
|
||||
#define CPP_MIC_H
|
||||
@ -7,4 +8,5 @@ int a;
|
||||
|
||||
#endif
|
||||
|
||||
# /* And at the end, too! */
|
||||
/* And at the end too! */
|
||||
|
13
gcc/testsuite/gcc.dg/cpp/mi5.c
Normal file
13
gcc/testsuite/gcc.dg/cpp/mi5.c
Normal file
@ -0,0 +1,13 @@
|
||||
/* Test "ignore redundant include" facility, with -C on.
|
||||
|
||||
The disgusting regexp in the dg-error line, when stuck into
|
||||
dg.exp's compiler-output regexp, matches the correct -H output and
|
||||
only the correct -H output. It has to be all on one line because
|
||||
otherwise it will not be interpreted all in one unit. */
|
||||
|
||||
/* { dg-do preprocess }
|
||||
{ dg-options "-H -C" }
|
||||
{ dg-error "mi1c\.h" "redundant include check with -C" { target *-*-* } 0 } */
|
||||
|
||||
#include "mi1c.h"
|
||||
#include "mi1c.h"
|
@ -17,10 +17,14 @@ static const char str??(??) = "0123456789??/n";
|
||||
int
|
||||
main(void)
|
||||
??<
|
||||
unsigned char x = 5;
|
||||
|
||||
if (sizeof str != TWELVE)
|
||||
abort ();
|
||||
|
||||
if ((5 ??' 3) != 6)
|
||||
/* Test ^=, the only multi-character token to come from trigraphs. */
|
||||
x ??'= 3;
|
||||
if (x != 6)
|
||||
abort ();
|
||||
|
||||
if ((5 ??! 3) != 7)
|
||||
|
Loading…
Reference in New Issue
Block a user