diff --git a/hpvm/tools/hpvm-dse/hpvm-dse.cpp b/hpvm/tools/hpvm-dse/hpvm-dse.cpp index 0e3d37afa22b3c2194f1757bdd8edb3d8f5234de..9b2a40367015be4d916075a47f83cbef1ba9414e 100644 --- a/hpvm/tools/hpvm-dse/hpvm-dse.cpp +++ b/hpvm/tools/hpvm-dse/hpvm-dse.cpp @@ -903,24 +903,17 @@ void OptimizeLeaf(ParamMaps &PM, DFLeafNode *NewLeaf, ValueToValueMapTy &VMap, // Next, do Dim loops unrolling doUnrollDim(PM, NewLeaf, os); + // Invalidate FunctionAnalysisManager after unrolling + FAM.invalidate(*F,PreservedAnalyses::none()); + TripCountMap[F] = getFuncLoopTripCounts(F, 1); removeNZLoop(F); // Normalize after unrolling - FunctionAnalysisManager FAM3; - LoopAnalysisManager LAM3; - ModuleAnalysisManager MAM3; - CGSCCAnalysisManager CAM3; - PassBuilder PB3; - PB3.registerFunctionAnalyses(FAM3); - PB3.registerLoopAnalyses(LAM3); - PB3.registerModuleAnalyses(MAM3); - PB3.registerCGSCCAnalyses(CAM3); - PB3.crossRegisterProxies(LAM3, FAM3, CAM3, MAM3); FunctionPassManager FPM3; // FPM3.addPass(SimplifyCFGPass()); // FPM3.addPass(EarlyCSEPass(false)); FPM3.addPass(InstCombinePass()); - FPM3.run(*F, FAM3); + FPM3.run(*F, FAM); end = std::chrono::steady_clock::now(); duration = std::chrono::duration_cast<std::chrono::milliseconds>(end - start); os << "\t\tDuration: " << duration.count() << " ms" << std::endl; @@ -981,7 +974,7 @@ void OptimizeLeaf(ParamMaps &PM, DFLeafNode *NewLeaf, ValueToValueMapTy &VMap, start = std::chrono::steady_clock::now(); FunctionPassManager FPM4; FPM4.addPass(SimplifyCFGPass()); - FPM4.run(*F, FAM3); + FPM4.run(*F, FAM); end = std::chrono::steady_clock::now(); duration = std::chrono::duration_cast<std::chrono::milliseconds>(end - start); os << "\t\tDuration: " << duration.count() << " ms" << std::endl;