Skip to content
Snippets Groups Projects
Commit 85827040 authored by Behzad Safaei's avatar Behzad Safaei
Browse files

Force write-after-read for AtomicInc nodes

parent 8ba950c9
No related branches found
No related tags found
No related merge requests found
...@@ -39,8 +39,16 @@ class FetchModulesReferences(Visitor): ...@@ -39,8 +39,16 @@ class FetchModulesReferences(Visitor):
self.visit(ast_node.capacity) self.visit(ast_node.capacity)
def visit_AtomicInc(self, ast_node): def visit_AtomicInc(self, ast_node):
visit_once = self.visit_nodes_once
self.visit_nodes_once = False
# Force write after read for the same node (visited twice)
self.writing = False
self.visit(ast_node.elem)
self.writing = True self.writing = True
self.visit(ast_node.elem) self.visit(ast_node.elem)
self.visit_nodes_once = visit_once
self.writing = False self.writing = False
self.visit(ast_node.value) self.visit(ast_node.value)
......
...@@ -194,18 +194,6 @@ class AddExpressionDeclarations(Mutator): ...@@ -194,18 +194,6 @@ class AddExpressionDeclarations(Mutator):
return ast_node return ast_node
def mutate_AtomicInc(self, ast_node):
self.writing = True
ast_node.elem = self.mutate(ast_node.elem)
self.writing = False
ast_node.value = self.mutate(ast_node.value)
atomic_inc_id = id(ast_node)
if atomic_inc_id not in self.declared_exprs and atomic_inc_id not in self.params:
self.push_decl(Decl(ast_node.sim, ast_node))
self.declared_exprs.append(atomic_inc_id)
return ast_node
def mutate_Block(self, ast_node): def mutate_Block(self, ast_node):
block_id = id(ast_node) block_id = id(ast_node)
self.decls[block_id] = [] self.decls[block_id] = []
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment