isl_ctx *Scop::getIslCtx() const { return IslCtx; }
__isl_give isl_union_set *Scop::getDomains() {
- isl_union_set *Domain = nullptr;
+ isl_union_set *Domain = isl_union_set_empty(getParamSpace());
- for (Scop::iterator SI = begin(), SE = end(); SI != SE; ++SI)
- if (!Domain)
- Domain = isl_union_set_from_set((*SI)->getDomain());
- else
- Domain = isl_union_set_union(Domain,
- isl_union_set_from_set((*SI)->getDomain()));
+ for (ScopStmt *Stmt : *this)
+ Domain = isl_union_set_add_set(Domain, Stmt->getDomain());
return Domain;
}
__isl_give isl_union_map *Scop::getWrites() {
isl_union_map *Write = isl_union_map_empty(this->getParamSpace());
- for (Scop::iterator SI = this->begin(), SE = this->end(); SI != SE; ++SI) {
- ScopStmt *Stmt = *SI;
-
+ for (ScopStmt *Stmt : *this) {
for (MemoryAccess *MA : *Stmt) {
if (!MA->isWrite())
continue;
isl_set *Domain = Stmt->getDomain();
isl_map *AccessDomain = MA->getAccessRelation();
-
AccessDomain = isl_map_intersect_domain(AccessDomain, Domain);
Write = isl_union_map_add_map(Write, AccessDomain);
}
}
__isl_give isl_union_map *Scop::getReads() {
- isl_union_map *Read = isl_union_map_empty(this->getParamSpace());
-
- for (Scop::iterator SI = this->begin(), SE = this->end(); SI != SE; ++SI) {
- ScopStmt *Stmt = *SI;
+ isl_union_map *Read = isl_union_map_empty(getParamSpace());
+ for (ScopStmt *Stmt : *this) {
for (MemoryAccess *MA : *Stmt) {
if (!MA->isRead())
continue;
}
__isl_give isl_union_map *Scop::getSchedule() {
- isl_union_map *Schedule = isl_union_map_empty(this->getParamSpace());
+ isl_union_map *Schedule = isl_union_map_empty(getParamSpace());
- for (Scop::iterator SI = this->begin(), SE = this->end(); SI != SE; ++SI) {
- ScopStmt *Stmt = *SI;
+ for (ScopStmt *Stmt : *this)
Schedule = isl_union_map_add_map(Schedule, Stmt->getScattering());
- }
+
return isl_union_map_coalesce(Schedule);
}
bool Scop::restrictDomains(__isl_take isl_union_set *Domain) {
bool Changed = false;
- for (Scop::iterator SI = this->begin(), SE = this->end(); SI != SE; ++SI) {
- ScopStmt *Stmt = *SI;
+ for (ScopStmt *Stmt : *this) {
isl_union_set *StmtDomain = isl_union_set_from_set(Stmt->getDomain());
-
isl_union_set *NewStmtDomain = isl_union_set_intersect(
isl_union_set_copy(StmtDomain), isl_union_set_copy(Domain));
isl_ast_node *Root;
isl_ast_expr *RunCondition;
- __isl_give isl_union_map *getSchedule();
void buildRunCondition(__isl_keep isl_ast_build *Context);
};
} // End namespace polly.
Context = isl_ast_build_set_at_each_domain(Context, AtEachDomain, nullptr);
- isl_union_map *Schedule = getSchedule();
+ isl_union_map *Schedule =
+ isl_union_map_intersect_domain(S->getSchedule(), S->getDomains());
Function *F = Scop->getRegion().getEntry()->getParent();
(void)F;
DEBUG(pprint(dbgs()));
}
-__isl_give isl_union_map *IslAst::getSchedule() {
- isl_union_map *Schedule = isl_union_map_empty(S->getParamSpace());
-
- for (ScopStmt *Stmt : *S) {
- isl_map *StmtSchedule = Stmt->getScattering();
-
- StmtSchedule = isl_map_intersect_domain(StmtSchedule, Stmt->getDomain());
- Schedule =
- isl_union_map_union(Schedule, isl_union_map_from_map(StmtSchedule));
- }
-
- return Schedule;
-}
-
IslAst::~IslAst() {
isl_ast_node_free(Root);
isl_ast_expr_free(RunCondition);