1 //===- LoopIdiomRecognize.h - Loop Idiom Recognize Pass ---------*- C++ -*-===// 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 pass implements an idiom recognizer that transforms simple loops into a 11 // non-loop form. In cases that this kicks in, it can be a significant 12 // performance win. 13 // 14 //===----------------------------------------------------------------------===// 15 16 #ifndef LLVM_TRANSFORMS_SCALAR_LOOPIDIOMRECOGNIZE_H 17 #define LLVM_TRANSFORMS_SCALAR_LOOPIDIOMRECOGNIZE_H 18 19 #include "llvm/Analysis/LoopAnalysisManager.h" 20 #include "llvm/IR/PassManager.h" 21 22 namespace llvm { 23 24 class Loop; 25 class LPMUpdater; 26 27 /// Performs Loop Idiom Recognize Pass. 28 class LoopIdiomRecognizePass : public PassInfoMixin<LoopIdiomRecognizePass> { 29 public: 30 PreservedAnalyses run(Loop &L, LoopAnalysisManager &AM, 31 LoopStandardAnalysisResults &AR, LPMUpdater &U); 32 }; 33 34 } // end namespace llvm 35 36 #endif // LLVM_TRANSFORMS_SCALAR_LOOPIDIOMRECOGNIZE_H 37