void optimize(cpu_t *cpu) { FunctionPassManager pm = FunctionPassManager(cpu->mod); pm.add(createPromoteMemoryToRegisterPass()); pm.add(createInstructionCombiningPass()); pm.add(createConstantPropagationPass()); pm.add(createDeadCodeEliminationPass()); pm.run(*cpu->cur_func); }
void optimize(cpu_t *cpu) { dyncom_engine_t* de = cpu->dyncom_engine; FunctionPassManager pm = FunctionPassManager(de->mod); std::string data_layout = de->exec_engine->getTargetData()->getStringRepresentation(); TargetData *TD = new TargetData(data_layout); pm.add(TD); pm.add(createPromoteMemoryToRegisterPass()); pm.add(createInstructionCombiningPass()); pm.add(createConstantPropagationPass()); pm.add(createDeadCodeEliminationPass()); pm.run(*de->cur_func); }
Function &OptimizeForRuntime(Function &F) { #ifdef DEBUG static PassManagerBuilder Builder = getDebugBuilder(); #else static PassManagerBuilder Builder = getBuilder(); #endif Module *M = F.getParent(); opt::GenerateOutput = true; polly::opt::PollyParallel = true; FunctionPassManager PM = FunctionPassManager(M); Builder.populateFunctionPassManager(PM); PM.doInitialization(); PM.run(F); PM.doFinalization(); if (opt::havePapi()) { PassManager MPM; Builder.populateModulePassManager(MPM); MPM.add(polli::createTraceMarkerPass()); MPM.run(*M); } if (opt::haveLikwid()) { PassManager MPM; Builder.populateModulePassManager(MPM); MPM.add(polli::createLikwidMarkerPass()); MPM.run(*M); } DEBUG( StoreModule(*M, M->getModuleIdentifier() + ".after.polly.ll") ); opt::GenerateOutput = false; return F; }