| /* PR c/71969 */ |
| /* { dg-do compile } */ |
| /* { dg-options "-std=gnu99 -fgnu89-inline -O2 -fdump-tree-einline-details" } */ |
| |
| volatile int v; |
| #define S v++; |
| #define S10 S S S S S S S S S S |
| #define S100 S10 S10 S10 S10 S10 S10 S10 S10 S10 S10 |
| |
| extern inline void |
| foo (void) { S100 } |
| |
| inline void |
| bar (void) { S100 } |
| |
| static inline void |
| baz (void) { S100 } |
| |
| int |
| main () |
| { |
| foo (); |
| foo (); |
| foo (); |
| foo (); |
| bar (); |
| bar (); |
| bar (); |
| bar (); |
| baz (); |
| baz (); |
| baz (); |
| baz (); |
| return 0; |
| } |
| |
| /* { dg-final { scan-tree-dump-times "will not early inline" 8 "einline" } } */ |
| /* { dg-final { scan-tree-dump-times "Inlining foo/\[0-9\]* into main/\[0-9\]*" 4 "einline" } } */ |