================ @@ -16,105 +16,50 @@ //===----------------------------------------------------------------------===// #include "polly/CodePreparation.h" -#include "polly/LinkAllPasses.h" #include "polly/Support/ScopHelper.h" #include "llvm/Analysis/DominanceFrontier.h" #include "llvm/Analysis/LoopInfo.h" #include "llvm/Analysis/RegionInfo.h" #include "llvm/Analysis/ScalarEvolution.h" -#include "llvm/InitializePasses.h" using namespace llvm; using namespace polly; -namespace { - -/// Prepare the IR for the scop detection. -/// -class CodePreparation final : public FunctionPass { - CodePreparation(const CodePreparation &) = delete; - const CodePreparation &operator=(const CodePreparation &) = delete; - - LoopInfo *LI; - ScalarEvolution *SE; - - void clear(); - -public: - static char ID; - - explicit CodePreparation() : FunctionPass(ID) {} - ~CodePreparation(); - - /// @name FunctionPass interface. - //@{ - void getAnalysisUsage(AnalysisUsage &AU) const override; - void releaseMemory() override; - bool runOnFunction(Function &F) override; - void print(raw_ostream &OS, const Module *) const override; - //@} -}; -} // namespace - -PreservedAnalyses CodePreparationPass::run(Function &F, - FunctionAnalysisManager &FAM) { - +static bool runCodePreprationImpl(Function &F, DominatorTree *DT, LoopInfo *LI, + RegionInfo *RI) { // Find first non-alloca instruction. Every basic block has a non-alloca // instruction, as every well formed basic block has a terminator. auto &EntryBlock = F.getEntryBlock(); BasicBlock::iterator I = EntryBlock.begin(); while (isa<AllocaInst>(I)) ++I; - auto &DT = FAM.getResult<DominatorTreeAnalysis>(F); - auto &LI = FAM.getResult<LoopAnalysis>(F); + // Abort if not necessary to split + if (I->isTerminator() && isa<BranchInst>(I) && + cast<BranchInst>(I)->isUnconditional()) + return false; // splitBlock updates DT, LI and RI. - splitEntryBlockForAlloca(&EntryBlock, &DT, &LI, nullptr); ---------------- kartcq wrote:
Can we please move CodePreparation pass changes to separate commit. This will make the these changes more trackable. https://github.com/llvm/llvm-project/pull/125442 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits