143504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham// Some convenient things to return: 243504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstatic char *g_first_pointer = "I am the first"; 343504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstatic char *g_second_pointer = "I am the second"; 443504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 543504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham// First we have some simple functions that return standard types, ints, floats and doubles. 643504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham// We have a function calling a function in a few cases to test that if you stop in the 743504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham// inner function then do "up/fin" you get the return value from the outer-most frame. 843504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 9016ef8886cd429f8a53bff967e601f831e409eaaJim Inghamint 10016ef8886cd429f8a53bff967e601f831e409eaaJim Inghaminner_sint (int value) 11016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham{ 12016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham return value; 13016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham} 14016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham 15016ef8886cd429f8a53bff967e601f831e409eaaJim Inghamint 16016ef8886cd429f8a53bff967e601f831e409eaaJim Inghamouter_sint (int value) 17016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham{ 1843504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham int outer_value = 2 * inner_sint (value); 1943504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return outer_value; 20016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham} 21016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham 22016ef8886cd429f8a53bff967e601f831e409eaaJim Inghamfloat 23016ef8886cd429f8a53bff967e601f831e409eaaJim Inghaminner_float (float value) 24016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham{ 25016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham return value; 26016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham} 27016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham 28016ef8886cd429f8a53bff967e601f831e409eaaJim Inghamfloat 29016ef8886cd429f8a53bff967e601f831e409eaaJim Inghamouter_float (float value) 30016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham{ 3143504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham float outer_value = 2 * inner_float(value); 3243504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return outer_value; 33016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham} 34016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham 3543504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamdouble 3643504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamreturn_double (double value) 37016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham{ 38016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham return value; 39016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham} 40016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham 4143504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamlong double 4243504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamreturn_long_double (long double value) 43016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham{ 4443504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return value; 45016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham} 46016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham 4743504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamchar * 4843504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamreturn_pointer (char *value) 49016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham{ 50016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham return value; 51016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham} 52016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham 5343504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct one_int 5443504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 5543504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham int one_field; 5643504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham}; 5743504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 5843504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct one_int 5943504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamreturn_one_int (struct one_int value) 6043504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 6143504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return value; 6243504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham} 6343504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 6443504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct two_int 6543504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 6643504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham int first_field; 6743504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham int second_field; 6843504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham}; 6943504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 7043504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct two_int 7143504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamreturn_two_int (struct two_int value) 7243504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 7343504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return value; 7443504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham} 7543504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 7643504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct three_int 7743504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 7843504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham int first_field; 7943504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham int second_field; 8043504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham int third_field; 8143504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham}; 8243504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 8343504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct three_int 8443504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamreturn_three_int (struct three_int value) 8543504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 8643504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return value; 8743504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham} 8843504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 8943504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct four_int 9043504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 9143504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham int first_field; 9243504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham int second_field; 9343504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham int third_field; 9443504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham int fourth_field; 9543504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham}; 9643504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 9743504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct four_int 9843504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamreturn_four_int (struct four_int value) 9943504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 10043504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return value; 10143504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham} 10243504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 10343504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct five_int 10443504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 10543504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham int first_field; 10643504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham int second_field; 10743504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham int third_field; 10843504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham int fourth_field; 10943504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham int fifth_field; 11043504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham}; 11143504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 11243504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct five_int 11343504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamreturn_five_int (struct five_int value) 11443504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 11543504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return value; 11643504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham} 11743504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 11843504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct one_int_one_double 11943504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 12043504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham int first_field; 12143504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham double second_field; 12243504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham}; 12343504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 12443504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct one_int_one_double 12543504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamreturn_one_int_one_double (struct one_int_one_double value) 12643504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 12743504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return value; 12843504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham} 12943504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 13043504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct one_int_one_double_one_int 13143504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 13243504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham int one_field; 13343504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham double second_field; 13443504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham int third_field; 13543504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham}; 13643504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 13743504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct one_int_one_double_one_int 13843504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamreturn_one_int_one_double_one_int (struct one_int_one_double_one_int value) 13943504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 14043504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return value; 14143504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham} 14243504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 14343504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct one_short_one_double_one_short 14443504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 14543504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham int one_field; 14643504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham double second_field; 14743504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham int third_field; 14843504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham}; 14943504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 15043504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct one_short_one_double_one_short 15143504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamreturn_one_short_one_double_one_short (struct one_short_one_double_one_short value) 15243504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 15343504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return value; 15443504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham} 15543504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 15643504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct three_short_one_float 15743504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 15843504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham short one_field; 15943504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham short second_field; 16043504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham short third_field; 16143504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham float fourth_field; 16243504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham}; 16343504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 16443504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct three_short_one_float 16543504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamreturn_three_short_one_float (struct three_short_one_float value) 16643504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 16743504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return value; 16843504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham} 16943504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 17043504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct one_int_one_float_one_int 17143504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 17243504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham int one_field; 17343504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham float second_field; 17443504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham int third_field; 17543504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham}; 17643504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 17743504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct one_int_one_float_one_int 17843504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamreturn_one_int_one_float_one_int (struct one_int_one_float_one_int value) 17943504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 18043504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return value; 18143504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham} 18243504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 18343504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct one_float_one_int_one_float 18443504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 18543504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham float one_field; 18643504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham int second_field; 18743504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham float third_field; 18843504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham}; 18943504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 19043504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct one_float_one_int_one_float 19143504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamreturn_one_float_one_int_one_float (struct one_float_one_int_one_float value) 192016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham{ 19343504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return value; 194016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham} 195016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham 19643504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct one_double_two_float 19743504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 19843504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham double one_field; 19943504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham float second_field; 20043504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham float third_field; 20143504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham}; 20243504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 20343504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct one_double_two_float 20443504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamreturn_one_double_two_float (struct one_double_two_float value) 20543504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 20643504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return value; 20743504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham} 20843504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 20943504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct two_double 21043504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 21143504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham double first_field; 21243504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham double second_field; 21343504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham}; 21443504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 21543504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct two_double 21643504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamreturn_two_double (struct two_double value) 217016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham{ 21843504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return value; 21943504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham} 220016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham 22143504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct two_float 22243504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 22343504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham float first_field; 22443504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham float second_field; 225016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham}; 226016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham 22743504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct two_float 22843504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamreturn_two_float (struct two_float value) 22943504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 23043504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return value; 23143504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham} 23243504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 23343504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct one_int_one_double_packed 234016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham{ 23543504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham int first_field; 23643504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham double second_field; 23743504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham} __attribute__((__packed__)); 23843504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 23943504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct one_int_one_double_packed 24043504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamreturn_one_int_one_double_packed (struct one_int_one_double_packed value) 24143504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 24243504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return value; 24343504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham} 24443504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 24543504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct one_int_one_long 24643504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 24743504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham int first_field; 24843504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham long second_field; 24943504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham}; 25043504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 25143504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct one_int_one_long 25243504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamreturn_one_int_one_long (struct one_int_one_long value) 25343504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 25443504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return value; 25543504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham} 25643504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 25743504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct one_pointer 25843504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 25943504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham char *first_field; 26043504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham}; 26143504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 26243504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct one_pointer 26343504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamreturn_one_pointer (struct one_pointer value) 26443504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 26543504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return value; 26643504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham} 26743504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 26843504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct two_pointer 26943504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 27043504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham char *first_field; 27143504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham char *second_field; 27243504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham}; 27343504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 27443504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct two_pointer 27543504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamreturn_two_pointer (struct two_pointer value) 27643504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 27743504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return value; 27843504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham} 27943504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 28043504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct one_float_one_pointer 28143504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 28243504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham float first_field; 28343504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham char *second_field; 28443504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham}; 28543504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 28643504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct one_float_one_pointer 28743504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamreturn_one_float_one_pointer (struct one_float_one_pointer value) 28843504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 28943504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return value; 29043504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham} 29143504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 29243504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct one_int_one_pointer 29343504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 29443504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham int first_field; 29543504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham char *second_field; 29643504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham}; 29743504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 29843504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamstruct one_int_one_pointer 29943504ce5a38fff1361bc190f718be1ec348dd4afJim Inghamreturn_one_int_one_pointer (struct one_int_one_pointer value) 30043504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham{ 30143504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return value; 302016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham} 303016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham 304f95fc9e09fa0a32de0a3904a1517266df37e8bffGreg Claytontypedef float vector_size_float32 __attribute__((__vector_size__(16))); 305f95fc9e09fa0a32de0a3904a1517266df37e8bffGreg Claytontypedef float ext_vector_size_float32 __attribute__((ext_vector_type(4))); 306f95fc9e09fa0a32de0a3904a1517266df37e8bffGreg Clayton 307f95fc9e09fa0a32de0a3904a1517266df37e8bffGreg Claytonvector_size_float32 308f95fc9e09fa0a32de0a3904a1517266df37e8bffGreg Claytonreturn_vector_size_float32 (vector_size_float32 value) 309f95fc9e09fa0a32de0a3904a1517266df37e8bffGreg Clayton{ 310f95fc9e09fa0a32de0a3904a1517266df37e8bffGreg Clayton return value; 311f95fc9e09fa0a32de0a3904a1517266df37e8bffGreg Clayton} 312f95fc9e09fa0a32de0a3904a1517266df37e8bffGreg Clayton 313f95fc9e09fa0a32de0a3904a1517266df37e8bffGreg Claytonext_vector_size_float32 314f95fc9e09fa0a32de0a3904a1517266df37e8bffGreg Claytonreturn_ext_vector_size_float32 (ext_vector_size_float32 value) 315f95fc9e09fa0a32de0a3904a1517266df37e8bffGreg Clayton{ 316f95fc9e09fa0a32de0a3904a1517266df37e8bffGreg Clayton return value; 317f95fc9e09fa0a32de0a3904a1517266df37e8bffGreg Clayton} 318f95fc9e09fa0a32de0a3904a1517266df37e8bffGreg Clayton 319016ef8886cd429f8a53bff967e601f831e409eaaJim Inghamint 320016ef8886cd429f8a53bff967e601f831e409eaaJim Inghammain () 321016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham{ 322016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham int first_int = 123456; 323016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham int second_int = 234567; 324016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham 325016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham outer_sint (first_int); 326016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham outer_sint (second_int); 327016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham 32843504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham float first_float_value = 12.34; 32943504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham float second_float_value = 23.45; 33043504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 33143504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham outer_float (first_float_value); 33243504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham outer_float (second_float_value); 333016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham 334016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham double double_value = -23.45; 335016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham 33643504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return_double (double_value); 33743504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 33843504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return_pointer(g_first_pointer); 339016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham 340016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham long double long_double_value = -3456789.987654321; 341016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham 34243504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return_long_double (long_double_value); 34343504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 34443504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham // Okay, now the structures: 34543504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return_one_int ((struct one_int) {10}); 34643504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return_two_int ((struct two_int) {10, 20}); 34743504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return_three_int ((struct three_int) {10, 20, 30}); 34843504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return_four_int ((struct four_int) {10, 20, 30, 40}); 34943504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return_five_int ((struct five_int) {10, 20, 30, 40, 50}); 35043504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 35143504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return_two_double ((struct two_double) {10.0, 20.0}); 35243504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return_one_double_two_float ((struct one_double_two_float) {10.0, 20.0, 30.0}); 35343504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return_one_int_one_float_one_int ((struct one_int_one_float_one_int) {10, 20.0, 30}); 35443504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham 35543504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return_one_pointer ((struct one_pointer) {g_first_pointer}); 35643504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return_two_pointer ((struct two_pointer) {g_first_pointer, g_second_pointer}); 35743504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return_one_float_one_pointer ((struct one_float_one_pointer) {10.0, g_first_pointer}); 35843504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return_one_int_one_pointer ((struct one_int_one_pointer) {10, g_first_pointer}); 35943504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return_three_short_one_float ((struct three_short_one_float) {10, 20, 30, 40.0}); 360016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham 36143504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return_one_int_one_double ((struct one_int_one_double) {10, 20.0}); 36243504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return_one_int_one_double_one_int ((struct one_int_one_double_one_int) {10, 20.0, 30}); 36343504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return_one_short_one_double_one_short ((struct one_short_one_double_one_short) {10, 20.0, 30}); 36443504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return_one_float_one_int_one_float ((struct one_float_one_int_one_float) {10.0, 20, 30.0}); 36543504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return_two_float ((struct two_float) { 10.0, 20.0}); 36643504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return_one_int_one_double_packed ((struct one_int_one_double_packed) {10, 20.0}); 36743504ce5a38fff1361bc190f718be1ec348dd4afJim Ingham return_one_int_one_long ((struct one_int_one_long) {10, 20}); 368016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham 369f95fc9e09fa0a32de0a3904a1517266df37e8bffGreg Clayton return_vector_size_float32 (( vector_size_float32 ){1.5, 2.25, 4.125, 8.0625}); 370f95fc9e09fa0a32de0a3904a1517266df37e8bffGreg Clayton return_ext_vector_size_float32 ((ext_vector_size_float32){ 16.5, 32.25, 64.125, 128.0625}); 371f95fc9e09fa0a32de0a3904a1517266df37e8bffGreg Clayton 372016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham return 0; 373016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham 374016ef8886cd429f8a53bff967e601f831e409eaaJim Ingham} 375