@@ -521,16 +521,28 @@ Iterators::Iterators(IndexStmt stmt, const map<TensorVar, Expr>& tensorVars)
521521{
522522 ProvenanceGraph provGraph = ProvenanceGraph (stmt);
523523 set<IndexVar> underivedAdded;
524+
524525 // Create dimension iterators
525526 match (stmt,
526527 function<void (const ForallNode*, Matcher*)>([&](auto n, auto m) {
527528 content->modeIterators .insert ({n->indexVar , Iterator (n->indexVar , !provGraph.hasCoordBounds (n->indexVar ) && provGraph.isCoordVariable (n->indexVar ))});
529+ cout << " Adding following index var to iterators: " << n->indexVar << " for statement (" << n->stmt << " )" << endl;
528530 for (const IndexVar& underived : provGraph.getUnderivedAncestors (n->indexVar )) {
529531 if (!underivedAdded.count (underived)) {
532+ cout << " Adding following underived ancestor to iterators: " << underived << endl;
530533 content->modeIterators .insert ({underived, underived});
531534 underivedAdded.insert (underived);
532535 }
533536 }
537+
538+ // Insert all children of current index variable into iterators as well
539+ for (const IndexVar& child : provGraph.getChildren (n->indexVar )) {
540+ if (!underivedAdded.count (child)) {
541+ content->modeIterators .insert ({child, child});
542+ underivedAdded.insert (child);
543+ }
544+ }
545+
534546 m->match (n->stmt );
535547 })
536548 );
@@ -553,6 +565,8 @@ Iterators::Iterators(IndexStmt stmt, const map<TensorVar, Expr>& tensorVars)
553565 for (auto & iterator : content->levelIterators ) {
554566 content->modeAccesses .insert ({iterator.second , iterator.first });
555567 }
568+
569+ // cout << "FINISHED ITERATORS BUILDING" << endl;
556570}
557571
558572
@@ -662,6 +676,8 @@ ModeAccess Iterators::modeAccess(Iterator iterator) const
662676Iterator Iterators::modeIterator (IndexVar indexVar) const
663677{
664678 taco_iassert (content != nullptr );
679+ cout << " Searching for " << indexVar << " in "
680+ << util::join (content->modeIterators ) << endl;
665681 taco_iassert (util::contains (content->modeIterators , indexVar));
666682 return content->modeIterators .at (indexVar);
667683}
0 commit comments