Exemplo n.º 1
0
int main()
{
r__t__n = (void *)(void *)5;
r__t__expr = (void *)expr_app(expr_lambda(expr_app(expr_app(expr_var((void *)0),expr_var((void *)0)),expr_const((void *)5))),expr_lambda(expr_lambda(expr_if(expr_zero(expr_var((void *)0)),expr_const((void *)1),expr_mult(expr_var((void *)0),expr_app(expr_app(expr_var((void *)1),expr_var((void *)1)),expr_subr1(expr_var((void *)0))))))));
r__t__env = (void *)envrr_empty();
r__t__pc = ⅇ
mount_tram();
printf("Fact Test Yields: %d\n", (int)r__t__a);r__t__n = (void *)(void *)5;
r__t__expr = (void *)expr_letcc(expr_mult(expr_const((void *)5),expr_throw(expr_var((void *)0),expr_mult(expr_const((void *)2),expr_const((void *)6)))));
r__t__env = (void *)envrr_empty();
r__t__pc = ⅇ
mount_tram();
printf("Let/CC Test Yields: %d\n", (int)r__t__a);}
Exemplo n.º 2
0
/* this function searches an expression to see if it includes a loop invariant
 * atom */
static void search_expr_for_unchanged_atom(expr_t *expr, mloop_t *mloop) {
  int array=0;
  int numdims;
  int innerdim;

  if (expr  && T_TYPEINFO(expr) &&
      S_CLASS(T_TYPEINFO(expr))==DT_ARRAY) {
    array=1;
  }
  if (expr) {
    if (expr_is_atom(expr) && !array &&
	(T_TYPE(expr)!=ARRAY_REF || (expr_const(nthoperand(expr,2)) &&  
				     !expr_contains_indexi(nthoperand(expr,2))
				     && !expr_contains_ia_indexi(nthoperand(expr,2))))) {
      expr_t *typeinfo;
      datatype_t *type = NULL;
      expr_t* at_expr;

      at_expr = expr_find_at(expr);
      if (at_expr && T_SUBTYPE(at_expr) == AT_RANDACC) {
        return;
      }
      typeinfo = T_TYPEINFO_REG(expr);
      if (typeinfo) {
        type = T_TYPEINFO(typeinfo);
      }
      if (type && (D_CLASS(type) == DT_REGION)) {
	numdims = T_MLOOP_RANK(mloop);
	innerdim = T_MLOOP_ORDER(mloop,numdims);
	if (D_REG_DIM_TYPE(type, innerdim) == DIM_FLOOD) {
	  replace_expression(expr,mloop);
	}
      }
    } else if (T_TYPE(expr)!=ARRAY_REF) {
      search_expr_for_unchanged_atom(T_OPLS(expr),mloop);
    }
    search_expr_for_unchanged_atom(T_NEXT(expr),mloop);
  } /* if expr */

}