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); }
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(); }