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
This commit is contained in:
Tobias Grosser 2015-08-28 07:07:04 +00:00
parent e57e3aebe3
commit 1e5a8c1a5c
1 changed files with 6 additions and 6 deletions

View File

@ -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