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);}
/* 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 */ }