summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/cpp/trad/recurse-3.c
blob: 91485ae5f4500d7d7e98c92ba5f531bd681719b7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/* Tests that macros that look recursive but are not are accepted.  */

/* { dg-do preprocess } */

#define g(x) x
g(g(g(g(g(g(g))))));	       /* { dg-bogus "detected recursion" } */

/* This macro gets longer with each loop, to thwart tests for
   recursion based on length.  */
#define f(a,b,c,d,e,f,g,h,i) a(b,c,d,e,f,g,h,i,2 3 4 5)
f(f,f,f,f,f,f,f,f,f)	       /* { dg-bogus "detected recursion" } */

/* The above cases should be enough, but this is taken from cccp
   sources so let's try it too.  */
#define foo(x,y) bar (x (y,0), y)
foo (foo, baz);	       /* { dg-bogus "detected recursion" } */

#define mac mac/**/ro
mac		       /* { dg-bogus "detected recursion" } */

#define mac2 mac2
"mac2" 		       /* { dg-bogus "detected recursion" } */

#define macro "macro
macro mac2	       /* { dg-bogus "detected recursion" } */