1 /* PR c/71969 */
2 /* { dg-do compile } */
3 /* { dg-options "-std=gnu99 -fgnu89-inline -O2 -fdump-tree-einline-details" } */
4 
5 volatile int v;
6 #define S v++;
7 #define S10 S S S S S S S S S S
8 #define S100 S10 S10 S10 S10 S10 S10 S10 S10 S10 S10
9 
10 extern inline void
foo(void)11 foo (void) { S100 }
12 
13 inline void
bar(void)14 bar (void) { S100 }
15 
16 static inline void
baz(void)17 baz (void) { S100 }
18 
19 int
main()20 main ()
21 {
22   foo ();
23   foo ();
24   foo ();
25   foo ();
26   bar ();
27   bar ();
28   bar ();
29   bar ();
30   baz ();
31   baz ();
32   baz ();
33   baz ();
34   return 0;
35 }
36 
37 /* { dg-final { scan-tree-dump-times "will not early inline" 8 "einline" } } */
38 /* { dg-final { scan-tree-dump-times "Inlining foo/\[0-9\]* into main/\[0-9\]*" 4 "einline" } } */
39