20#include "llvm/Analysis/DominanceFrontier.h"
21#include "llvm/Analysis/LoopInfo.h"
22#include "llvm/Analysis/RegionInfo.h"
23#include "llvm/Analysis/ScalarEvolution.h"
32 auto &EntryBlock = F.getEntryBlock();
33 BasicBlock::iterator I = EntryBlock.begin();
34 while (isa<AllocaInst>(I))
38 if (I->isTerminator() && isa<BranchInst>(I) &&
39 cast<BranchInst>(I)->isUnconditional())
static bool runCodePreprationImpl(Function &F, DominatorTree *DT, LoopInfo *LI, RegionInfo *RI)
bool runCodePreparation(llvm::Function &F, llvm::DominatorTree *DT, llvm::LoopInfo *LI, llvm::RegionInfo *RI)
void splitEntryBlockForAlloca(llvm::BasicBlock *EntryBlock, llvm::DominatorTree *DT, llvm::LoopInfo *LI, llvm::RegionInfo *RI)
Split the entry block of a function to store the newly inserted allocations outside of all Scops.