void PassMgr::destroyPass(PASS_TYPE passtype) { Pass * pass = queryPass(passtype); if (pass == NULL) { return; } destroyPass(pass); }
Pass * PassMgr::registerPass(PASS_TYPE opty) { Pass * pass = queryPass(opty); if (pass != NULL) { return pass; } switch (opty) { case PASS_CFG: pass = allocCFG(); break; case PASS_AA: pass = allocAA(); break; case PASS_DU_MGR: pass = allocDUMgr(); break; case PASS_CP: pass = allocCopyProp(); break; case PASS_GCSE: pass = allocGCSE(); break; case PASS_LCSE: pass = allocLCSE(); break; case PASS_RP: pass = allocRP(); break; case PASS_PRE: pass = allocPRE(); break; case PASS_IVR: pass = allocIVR(); break; case PASS_LICM: pass = allocLICM(); break; case PASS_DCE: pass = allocDCE(); break; case PASS_DSE: pass = allocDSE(); break; case PASS_RCE: pass = allocRCE(); break; case PASS_GVN: pass = allocGVN(); break; case PASS_LOOP_CVT: pass = allocLoopCvt(); break; case PASS_SSA_MGR: pass = allocSSAMgr(); break; case PASS_CCP: pass = allocCCP(); break; case PASS_CDG: return (Pass*)registerGraphBasedPass(opty); case PASS_EXPR_TAB: pass = allocExprTab(); break; case PASS_CFS_MGR: pass = allocCfsMgr(); break; case PASS_IPA: pass = allocIPA(); break; case PASS_INLINER: pass = allocInliner(); break; default: ASSERT(0, ("Unsupport Optimization.")); } ASSERT0(opty != PASS_UNDEF && pass); m_registered_pass.set(opty, pass); return pass; }