summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Grosser <tobias@grosser.es>2015-08-28 07:07:04 +0000
committerTobias Grosser <tobias@grosser.es>2015-08-28 07:07:04 +0000
commit1e5a8c1a5ce3d82b40c324ee55271b9e405aec5c (patch)
tree3b2bd6cce00e41c67bc6a469ef96a9d4fe38dd3a
parente57e3aebe344e7cbdd78ffa7c05dd32836a1cfe4 (diff)
downloadbcm5719-llvm-1e5a8c1a5ce3d82b40c324ee55271b9e405aec5c.tar.gz
bcm5719-llvm-1e5a8c1a5ce3d82b40c324ee55271b9e405aec5c.zip
Virtualize the IslNodeBuilder
This allows users to extend the IslNodeBuilder to create their own optimization passes. This feature is not used in Polly's codebase itself, but as these funtions are not performance critical, the cost of making experiments of external users easier seems low enough to do so. llvm-svn: 246281
-rw-r--r--polly/include/polly/CodeGen/IslNodeBuilder.h12
1 files changed, 6 insertions, 6 deletions
diff --git a/polly/include/polly/CodeGen/IslNodeBuilder.h b/polly/include/polly/CodeGen/IslNodeBuilder.h
index c38d64b6d39..1fa0baf8328 100644
--- a/polly/include/polly/CodeGen/IslNodeBuilder.h
+++ b/polly/include/polly/CodeGen/IslNodeBuilder.h
@@ -36,7 +36,7 @@ public:
&ExprBuilder),
RegionGen(BlockGen), P(P), DL(DL), LI(LI), SE(SE), DT(DT) {}
- ~IslNodeBuilder() {}
+ virtual ~IslNodeBuilder() {}
void addParameters(__isl_take isl_set *Context);
void create(__isl_take isl_ast_node *Node);
@@ -182,8 +182,8 @@ private:
/// currently not special handling for marker nodes implemented.
///
/// @param Mark The node we generate code for.
- void createMark(__isl_take isl_ast_node *Marker);
- void createFor(__isl_take isl_ast_node *For);
+ virtual void createMark(__isl_take isl_ast_node *Marker);
+ virtual void createFor(__isl_take isl_ast_node *For);
void createForVector(__isl_take isl_ast_node *For, int VectorWidth);
void createForSequential(__isl_take isl_ast_node *For);
@@ -254,13 +254,13 @@ private:
std::vector<LoopToScevMapT> &VLTS,
std::vector<Value *> &IVS,
__isl_take isl_id *IteratorID);
- void createIf(__isl_take isl_ast_node *If);
+ virtual void createIf(__isl_take isl_ast_node *If);
void createUserVector(__isl_take isl_ast_node *User,
std::vector<Value *> &IVS,
__isl_take isl_id *IteratorID,
__isl_take isl_union_map *Schedule);
- void createUser(__isl_take isl_ast_node *User);
- void createBlock(__isl_take isl_ast_node *Block);
+ virtual void createUser(__isl_take isl_ast_node *User);
+ virtual void createBlock(__isl_take isl_ast_node *Block);
};
#endif
OpenPOWER on IntegriCloud