Exemplo n.º 1
0
int
main(int argc, char *argv[])
{
    /* Process the command-line; remove the block address and pass the remainder to ROSE. */
    ROSE_ASSERT(argc>=2);
    char *rest;
    rose_addr_t removal_addr = strtoull(argv[1], &rest, 0);
    if (!*rest) {
        for (int i=2; i<=argc; i++) /*include null ptr at end of list*/
            argv[i-1]=argv[i];
        --argc;
    } else {
        std::cerr <<"warning: no basic block will be removed" <<std::endl;
    }

    SgProject *project = frontend(argc, argv);
    ROSE_ASSERT(project!=NULL);

    /* Remove the specified basic block */
    struct T1: public SgSimpleProcessing {
        rose_addr_t removal_addr;
        T1(rose_addr_t a): removal_addr(a) {}
        void visit(SgNode *node) {
            SgAsmBlock *bb = isSgAsmBlock(node);
            SgAsmFunction *func = bb ? SageInterface::getEnclosingNode<SgAsmFunction>(bb) : NULL;
            if (func && bb->get_address()==removal_addr) {
                SgAsmStatementPtrList::iterator found = std::find(func->get_statementList().begin(), 
                                                                  func->get_statementList().end(),
                                                                  bb);
                ROSE_ASSERT(found!=func->get_statementList().end());
                func->get_statementList().erase(found);
                std::cout <<"removed basic block " <<StringUtility::addrToString(removal_addr) <<std::endl;
                // throw 1 /* found the one-and-only block, so we can abandon the traversal */
            }
        }
    };
    T1(removal_addr).traverse(project, preorder);

    /* Unparse the file using assembled data from above */
    std::vector<SgAsmInterpretation*> interps = SageInterface::querySubTree<SgAsmInterpretation>(project, V_SgAsmInterpretation);
    ROSE_ASSERT(!interps.empty());
    for (size_t i=0; i<interps.size(); ++i) {
        std::cout <<"\n\n\n==================== Interpretation Listing ====================\n\n";
        interps[i]->get_map()->dump(stdout);
        AsmUnparser unparser;
        unparser.set_organization(AsmUnparser::ORGANIZED_BY_ADDRESS);
        unparser.unparse(std::cout, interps[i]);
        assemble_all(interps[i]);
    }
    backend(project);
}
Exemplo n.º 2
0
void Simulation:: step()
{
    

    VisIt::Simulation::step();
    
    // move concerned points
    //bubbles.first()->translate(Vertex(0,0.2*delta_Y));
    advect(0.1);
    
    // send back information to master
    assemble_all();
    
    
    // - process topologies on master
    // - update B, compute P, gradP, U
    // - and all exchanges
    //bubbles_velocities = false;
    compute_fields();
    
    
}