xref: /llvm-project/lldb/test/API/python_api/frame/inlines/inlines.c (revision 99451b4453688a94c6014cac233d371ab4cc342d)
1*99451b44SJordan Rupprecht #include <stdio.h>
2*99451b44SJordan Rupprecht #include "inlines.h"
3*99451b44SJordan Rupprecht 
4*99451b44SJordan Rupprecht #define INLINE_ME __inline__ __attribute__((always_inline))
5*99451b44SJordan Rupprecht 
6*99451b44SJordan Rupprecht int
not_inlined_2(int input)7*99451b44SJordan Rupprecht not_inlined_2 (int input)
8*99451b44SJordan Rupprecht {
9*99451b44SJordan Rupprecht   printf ("Called in not_inlined_2 with : %d.\n", input);
10*99451b44SJordan Rupprecht   return input;
11*99451b44SJordan Rupprecht }
12*99451b44SJordan Rupprecht 
13*99451b44SJordan Rupprecht int
not_inlined_1(int input)14*99451b44SJordan Rupprecht not_inlined_1 (int input)
15*99451b44SJordan Rupprecht {
16*99451b44SJordan Rupprecht   printf ("Called in not_inlined_1 with %d.\n", input);
17*99451b44SJordan Rupprecht   return not_inlined_2(input);
18*99451b44SJordan Rupprecht }
19*99451b44SJordan Rupprecht 
20*99451b44SJordan Rupprecht INLINE_ME int
inner_inline(int inner_input,int mod_value)21*99451b44SJordan Rupprecht inner_inline (int inner_input, int mod_value)
22*99451b44SJordan Rupprecht {
23*99451b44SJordan Rupprecht   int inner_result;
24*99451b44SJordan Rupprecht   inner_result = inner_input % mod_value;
25*99451b44SJordan Rupprecht   printf ("Returning: %d.\n", inner_result);
26*99451b44SJordan Rupprecht   return not_inlined_1 (inner_result);
27*99451b44SJordan Rupprecht }
28*99451b44SJordan Rupprecht 
29*99451b44SJordan Rupprecht INLINE_ME int
outer_inline(int outer_input)30*99451b44SJordan Rupprecht outer_inline (int outer_input)
31*99451b44SJordan Rupprecht {
32*99451b44SJordan Rupprecht   int outer_result;
33*99451b44SJordan Rupprecht 
34*99451b44SJordan Rupprecht   outer_result = inner_inline (outer_input, outer_input % 3);
35*99451b44SJordan Rupprecht   return outer_result;
36*99451b44SJordan Rupprecht }
37*99451b44SJordan Rupprecht 
38*99451b44SJordan Rupprecht int
main(int argc,char ** argv)39*99451b44SJordan Rupprecht main (int argc, char **argv)
40*99451b44SJordan Rupprecht {
41*99451b44SJordan Rupprecht   printf ("Starting...\n");
42*99451b44SJordan Rupprecht 
43*99451b44SJordan Rupprecht   int (*func_ptr) (int);
44*99451b44SJordan Rupprecht   func_ptr = outer_inline;
45*99451b44SJordan Rupprecht 
46*99451b44SJordan Rupprecht   outer_inline (argc); // This should correspond to the first break stop.
47*99451b44SJordan Rupprecht 
48*99451b44SJordan Rupprecht   func_ptr (argc); // This should correspond to the second break stop.
49*99451b44SJordan Rupprecht 
50*99451b44SJordan Rupprecht   return 0;
51*99451b44SJordan Rupprecht }
52*99451b44SJordan Rupprecht 
53*99451b44SJordan Rupprecht 
54