Exemplo n.º 1
0
/**
 * Convert for_stmt to a upc_forall statement if it has an affinity exp
 * in the global map.
 */
SgStatement* translate_to_upc(SgForStatement* for_stmt) {
    /* return value is either SgUpcForAllStmt or SgForStmt */
    SgStatement* retval;

    /* translate if the for_stmt was upc_forall stmt */
    aff_map_t::iterator affinity_exp_it = aff_exp_map.find(for_stmt);
    if (affinity_exp_it != aff_exp_map.end()) {

        /* build a new upc_forall statement */
        retval = SageBuilder::buildUpcForAllStatement_nfi(
                for_stmt->get_for_init_stmt(), /* initialize stmt */
                for_stmt->get_test(),          /* condition */
                for_stmt->get_increment(),     /* increment */
                affinity_exp_it->second,       /* affinity */
                for_stmt->get_loop_body()      /* loop body */
                );

        /* set file info */
        Sg_File_Info* old_file_info = for_stmt->get_file_info();
        retval->set_file_info( old_file_info );

    } else {
        /* for_stmt was never a upc_forall stmt */
        retval = for_stmt;
    }

    return retval;
}