1//===- LoopDeletion.h - Loop Deletion -------------------------------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This file provides the interface for the Loop Deletion Pass. 11// 12//===----------------------------------------------------------------------===// 13 14#ifndef LLVM_TRANSFORMS_SCALAR_LOOPDELETION_H 15#define LLVM_TRANSFORMS_SCALAR_LOOPDELETION_H 16 17#include "llvm/Analysis/LoopInfo.h" 18#include "llvm/Analysis/ScalarEvolution.h" 19#include "llvm/IR/PassManager.h" 20 21namespace llvm { 22 23class LoopDeletionPass : public PassInfoMixin<LoopDeletionPass> { 24public: 25 LoopDeletionPass() {} 26 PreservedAnalyses run(Loop &L, AnalysisManager<Loop> &AM); 27 bool runImpl(Loop *L, DominatorTree &DT, ScalarEvolution &SE, 28 LoopInfo &loopInfo); 29 30private: 31 bool isLoopDead(Loop *L, ScalarEvolution &SE, 32 SmallVectorImpl<BasicBlock *> &exitingBlocks, 33 SmallVectorImpl<BasicBlock *> &exitBlocks, bool &Changed, 34 BasicBlock *Preheader); 35}; 36} 37 38#endif // LLVM_TRANSFORMS_SCALAR_LOOPDELETION_H 39