1 /* { dg-do compile } */ 2 /* { dg-options -O2 } */ 3 4 /* Basic tests for flatten attribute, check we end up 5 with only the flattened function bodies. */ 6 7 static int foobar(int i); 8 static int bar(int i); 9 leaf0a(int i)10int __attribute__((flatten)) leaf0a(int i) 11 { 12 return bar(i); 13 } leaf0b(int i)14int __attribute__((flatten)) leaf0b(int i) 15 { 16 return foobar(i); 17 } leaf1(int i)18int __attribute__((flatten)) leaf1(int i) 19 { 20 return bar(foobar(i)); 21 } leaf2(int i)22int __attribute__((flatten)) leaf2(int i) 23 { 24 int j; 25 j = foobar(i); 26 return bar(j); 27 } 28 foobar(int i)29static int foobar(int i) 30 { 31 return i-1; 32 } bar(int i)33static int bar(int i) 34 { 35 return i + foobar(i); 36 } 37 38 gloobar(int i)39static int gloobar(int i) 40 { 41 return i*5+1; 42 } floobar(int i)43static int floobar(int i) 44 { 45 return gloobar(i); 46 } leaf3(int i)47int __attribute__((flatten)) leaf3(int i) 48 { 49 int j; 50 j = floobar(i); 51 j += floobar(i); 52 return j; 53 } 54 55 /* { dg-final { scan-assembler-not "bar\[: \t\n\]" } } */ 56