1*03ce13f7SAndroid Build Coastguard Worker //===- subzero/src/IceLoopAnalyzer.h - Loop Analysis ------------*- C++ -*-===// 2*03ce13f7SAndroid Build Coastguard Worker // 3*03ce13f7SAndroid Build Coastguard Worker // The LLVM Compiler Infrastructure 4*03ce13f7SAndroid Build Coastguard Worker // 5*03ce13f7SAndroid Build Coastguard Worker // This file is distributed under the University of Illinois Open Source 6*03ce13f7SAndroid Build Coastguard Worker // License. See LICENSE.TXT for details. 7*03ce13f7SAndroid Build Coastguard Worker // 8*03ce13f7SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===// 9*03ce13f7SAndroid Build Coastguard Worker /// 10*03ce13f7SAndroid Build Coastguard Worker /// \file 11*03ce13f7SAndroid Build Coastguard Worker /// \brief This analysis identifies loops in the CFG. 12*03ce13f7SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===// 13*03ce13f7SAndroid Build Coastguard Worker 14*03ce13f7SAndroid Build Coastguard Worker #ifndef SUBZERO_SRC_ICELOOPANALYZER_H 15*03ce13f7SAndroid Build Coastguard Worker #define SUBZERO_SRC_ICELOOPANALYZER_H 16*03ce13f7SAndroid Build Coastguard Worker 17*03ce13f7SAndroid Build Coastguard Worker #include "IceDefs.h" 18*03ce13f7SAndroid Build Coastguard Worker 19*03ce13f7SAndroid Build Coastguard Worker namespace Ice { 20*03ce13f7SAndroid Build Coastguard Worker 21*03ce13f7SAndroid Build Coastguard Worker struct Loop { LoopLoop22*03ce13f7SAndroid Build Coastguard Worker Loop(CfgNode *Header, CfgNode *PreHeader, CfgUnorderedSet<SizeT> Body) 23*03ce13f7SAndroid Build Coastguard Worker : Header(Header), PreHeader(PreHeader), Body(Body) {} 24*03ce13f7SAndroid Build Coastguard Worker CfgNode *Header; 25*03ce13f7SAndroid Build Coastguard Worker CfgNode *PreHeader; 26*03ce13f7SAndroid Build Coastguard Worker CfgUnorderedSet<SizeT> Body; // Node IDs 27*03ce13f7SAndroid Build Coastguard Worker }; 28*03ce13f7SAndroid Build Coastguard Worker 29*03ce13f7SAndroid Build Coastguard Worker CfgVector<Loop> ComputeLoopInfo(Cfg *Func); 30*03ce13f7SAndroid Build Coastguard Worker 31*03ce13f7SAndroid Build Coastguard Worker } // end of namespace Ice 32*03ce13f7SAndroid Build Coastguard Worker 33*03ce13f7SAndroid Build Coastguard Worker #endif // SUBZERO_SRC_ICELOOPANALYZER_H 34