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