blob: d9449ad623e4d47779ab948ecd36157ac79e20dd [file] [log] [blame]
Andrew Scullaa6c1092015-09-03 17:50:30 -07001//===- subzero/src/IceLoopAnalyzer.h - Loop Analysis ------------*- 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/// \file
11/// \brief This analysis identifies loops in the CFG.
12//===----------------------------------------------------------------------===//
13
14#ifndef SUBZERO_SRC_ICELOOPANALYZER_H
15#define SUBZERO_SRC_ICELOOPANALYZER_H
16
17#include "IceDefs.h"
18
19namespace Ice {
20
Manasij Mukherjeeadf352b2016-07-19 13:31:36 -070021struct Loop {
22 Loop(CfgNode *Header, CfgNode *PreHeader, CfgUnorderedSet<SizeT> Body)
23 : Header(Header), PreHeader(PreHeader), Body(Body) {}
24 CfgNode *Header;
25 CfgNode *PreHeader;
26 CfgUnorderedSet<SizeT> Body; // Node IDs
Andrew Scullaa6c1092015-09-03 17:50:30 -070027};
28
Manasij Mukherjeeadf352b2016-07-19 13:31:36 -070029CfgVector<Loop> ComputeLoopInfo(Cfg *Func);
30
Andrew Scullaa6c1092015-09-03 17:50:30 -070031} // end of namespace Ice
32
33#endif // SUBZERO_SRC_ICELOOPANALYZER_H