1/* Copyright (C) 2002 Free Software Foundation, Inc.  */
2
3/* { dg-do preprocess } */
4
5/* Source: Neil Booth, 26 Feb 2002.
6
7   Test that we allow directives in macro arguments.  */
8
9/* { dg-do run } */
10/* { dg-options "" } */
11
12#define f(x) x
13extern void abort (void);
14
15int main ()
16{
17  if (f (
18#if f(1)			/* True.  */
19	0))			/* False. */
20#else
21    	1))
22#endif
23     abort ();
24
25     /* Outer f expands to original definition, f in argument expands
26	to new definition, so result is: if (1 != 2 - 1).  */
27     if (1 != f(2
28#undef f
29#define f - 1
30     f))
31     abort ();
32
33     return 0;
34}
35