xref: /llvm-project/bolt/test/X86/Inputs/inlined.cpp (revision 4c106cfdf7cf7eec861ad3983a3dd9a9e8f3a8ae)
1*92e306deSAmir Ayupov extern "C" int printf(const char*, ...);
2*92e306deSAmir Ayupov extern const char* question();
3*92e306deSAmir Ayupov 
4*92e306deSAmir Ayupov inline int answer() __attribute__((always_inline));
answer()5*92e306deSAmir Ayupov inline int answer() { return 42; }
6*92e306deSAmir Ayupov 
main(int argc,char * argv[])7*92e306deSAmir Ayupov int main(int argc, char *argv[]) {
8*92e306deSAmir Ayupov   int ans;
9*92e306deSAmir Ayupov   if (argc == 1) {
10*92e306deSAmir Ayupov     ans = 0;
11*92e306deSAmir Ayupov   } else {
12*92e306deSAmir Ayupov     ans = argc;
13*92e306deSAmir Ayupov   }
14*92e306deSAmir Ayupov   printf("%s\n", question());
15*92e306deSAmir Ayupov   for (int i = 0; i < 10; ++i) {
16*92e306deSAmir Ayupov     int x = answer();
17*92e306deSAmir Ayupov     int y = answer();
18*92e306deSAmir Ayupov     ans += x - y;
19*92e306deSAmir Ayupov   }
20*92e306deSAmir Ayupov   // padding to make sure question() is inlineable
21*92e306deSAmir Ayupov   asm("nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;");
22*92e306deSAmir Ayupov   return ans;
23*92e306deSAmir Ayupov }
24