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
11 foo (void) { S100 }
12
13 inline void
14 bar (void) { S100 }
15
16 static inline void
17 baz (void) { S100 }
18
19 int
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" } } */