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
13 extern void abort (void);
14 
main()15 int 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