aboutsummaryrefslogtreecommitdiffstats
path: root/test/mppa/instr/individual/indirect_tailcall.c
blob: e6c16ea122202ce45a0caf80529c0bbb5a4f8fd0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include "framework.h"

long long sum(long long a, long long b){
  return a+b;
}

long long diff(long long a, long long b){
  return a-b;
}

long long mul(long long a, long long b){
  return a*b;
}

long long random_op(long long a, long long b){
  long long d = 3;
  long long (*op)(long long, long long);

  if (a % d == 0)
    op = sum;
  else if (a % d == 1)
    op = diff;
  else
    op = mul;

  return op(a, b);
}

BEGIN_TEST(long long)
{
  c += random_op(a, b);
}
END_TEST64()