/* Test for warning of and recovery from recursion in function-like
   macros.  */

/* { dg-do preprocess } */

#define foo() foo()
foo();				/* { dg-error "detected recursion" } */

#define bar() bar baz() bar
bar();				/* { dg-bogus "detected recursion" } */

#define baz() foo()
baz();			       /* { dg-error "detected recursion" } */

#define a(x) x(a)
a(a);			       /* { dg-error "detected recursion" } */
