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