Skip to content

Commit

Permalink
InterstateEdge.new_symbols now uses a similar algorithm to Interstate…
Browse files Browse the repository at this point in the history
…Edge.free_symbols to return only newly defined symbols instead of all the LHS.
  • Loading branch information
alexnick83 committed Jul 15, 2023
1 parent cf14962 commit 686562b
Showing 1 changed file with 13 additions and 1 deletion.
14 changes: 13 additions & 1 deletion dace/sdfg/sdfg.py
Original file line number Diff line number Diff line change
Expand Up @@ -292,7 +292,19 @@ def new_symbols(self, sdfg, symbols) -> Dict[str, dtypes.typeclass]:
else:
alltypes = symbols

return {k: infer_expr_type(v, alltypes) for k, v in self.assignments.items()}
inferred_lhs_symbols = {k: infer_expr_type(v, alltypes) for k, v in self.assignments.items()}

# Symbols in assignment keys are candidate newly defined symbols
lhs_symbols = set()
# Symbols already defined
rhs_symbols = set()
for lhs, rhs in self.assignments.items():
rhs_symbols |= symbolic.free_symbols_and_functions(rhs)
# Only add LHS to the set of candidate newly defined symbols if it has not been defined yet
if lhs not in rhs_symbols:
lhs_symbols.add(lhs)

return {k: v for k, v in inferred_lhs_symbols.items() if k in lhs_symbols}

def get_read_memlets(self, arrays: Dict[str, dt.Data]) -> List[mm.Memlet]:
"""
Expand Down

0 comments on commit 686562b

Please sign in to comment.