void MoveEliminationPass::runOnKernel(ir::IRKernel& k) { report("Eliminating moves in kernel " << k.name << ""); auto dfg = static_cast<analysis::DataflowGraph*>( getAnalysis("DataflowGraphAnalysis")); assert(dfg != 0); dfg->convertToSSAType(analysis::DataflowGraph::Minimal); auto moves = getMoves(dfg); bool eliminatedAny = false; report(" Eliminating moves"); for(auto move = moves.begin(); move != moves.end(); ++move) { if(canEliminate(*move)) { report(" " << (*move)->i->toString()); eliminate(*move); eliminatedAny = true; } } if(eliminatedAny) { invalidateAnalysis("DataflowGraphAnalysis"); } report("finished..."); }
void MainWindow::zeroVanish() { while(1) { qDebug() << "In while (1)"; moveZero(); qDebug() << "end moveZero"; if (canEliminate()==false) break; } qDebug() << "start fillInZero"; fillInZero(); qDebug() << "start cannotPlayJudge"; /* if (cannotPlay()==true){ qDebug() << "Start Reset Map"; resetMap();}*/ renewPic(); }