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 Rupprechtnot_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 Rupprechtnot_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 Rupprechtinner_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 Rupprechtouter_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 Rupprechtmain (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