16#ifndef POLLY_SCOP_GRAPH_PRINTER_H
17#define POLLY_SCOP_GRAPH_PRINTER_H
21#include "llvm/Analysis/DOTGraphTraitsPass.h"
22#include "llvm/Analysis/RegionInfo.h"
23#include "llvm/Analysis/RegionIterator.h"
24#include "llvm/Analysis/RegionPrinter.h"
25#include "llvm/IR/PassManager.h"
35 return nodes_iterator::begin(getEntryNode(SD));
38 return nodes_iterator::end(getEntryNode(SD));
56 Node,
reinterpret_cast<RegionNode *
>(SD->
getRI()->getTopLevelRegion()));
64 raw_ostream &O,
unsigned depth = 0);
67 GraphWriter<polly::ScopDetection *> &GW);
73struct ScopViewer final : llvm::DOTGraphTraitsViewer<ScopAnalysis, false> {
79struct ScopOnlyViewer final : llvm::DOTGraphTraitsViewer<ScopAnalysis, false> {
84struct ScopPrinter final : llvm::DOTGraphTraitsPrinter<ScopAnalysis, false> {
Pass to detect the maximal static control parts (Scops) of a function.
RegionInfo * getRI() const
Get the RegionInfo stored in this pass.
This file contains the declaration of the PolyhedralInfo class, which will provide an interface to ex...
static void addCustomGraphFeatures(polly::ScopDetection *SD, GraphWriter< polly::ScopDetection * > &GW)
static std::string escapeString(llvm::StringRef String)
static void printRegionCluster(polly::ScopDetection *SD, const Region *R, raw_ostream &O, unsigned depth=0)
Print the cluster of the subregions.
static std::string getGraphName(polly::ScopDetection *SD)
std::string getEdgeAttributes(RegionNode *srcNode, GraphTraits< RegionInfo * >::ChildIteratorType CI, polly::ScopDetection *SD)
std::string getNodeLabel(RegionNode *Node, polly::ScopDetection *SD)
DOTGraphTraits(bool isSimple=false)
static NodeRef getEntryNode(polly::ScopDetection *SD)
static nodes_iterator nodes_begin(polly::ScopDetection *SD)
static nodes_iterator nodes_end(polly::ScopDetection *SD)
bool processFunction(Function &F, const ScopDetection &SD) override