/* Sue Ann Hong, Virginia Vassilevska
 * 15-745 Task 1 Test Suite
 * 1/31/2006
 * Dead Code Elimination, Constant Folding, Constant Propagation
 * Common subexpression elimination (don't need if got dead code elimination)
 */

void alloc(int count, int size) {}
void print_int(int i) {}
void print_newline(void) {}

void main(void) {
  int a, b;
  int t, n, i, max;
  int *big;

  a = (0!=0);
  t = 0;
  n = 3;
  max = 41;
  big = alloc(n, 4);

  big[0] = fib(max);
  for(i=1; i<n; i+=1) {
    big[i] = big[i-1] + fib(max);
    //print_int(big[i]);
    //print_newline();
  }

  // Dead code
  if ((0!=0))
    t = big[0];
  print_int(t);
  print_newline();

  // Constant propagation with dead code
  if (a)
    t = big[1];
  print_int(t);
  print_newline();

  // Constant propagation, folding and dead code
  b = a && !a;
  if (b)
    t = big[2];
  print_int(t);
  print_newline();
}


int fib(int n) {
  if (n == 0)
     return 1;
  if (n == 1)
     return 1;
  return fib(n-2) + fib(n-1);
}
