diff --git a/python/dune/perftool/sumfact/sumfact.py b/python/dune/perftool/sumfact/sumfact.py
index 2d981f07c92d187f65363fdeae3382a18b0900d7..35cb783e2e325efbe89796ccfae89d550300f1b6 100644
--- a/python/dune/perftool/sumfact/sumfact.py
+++ b/python/dune/perftool/sumfact/sumfact.py
@@ -195,6 +195,12 @@ def generate_accumulation_instruction(visitor, accterm, measure, subdomain_id):
             replace_dict[Variable(iname)] = i
         expression = substitute(pymbolic_expr, replace_dict)
 
+        # Determine dependencies
+        from loopy.match import Or, Writes
+        from pymbolic.mapper.dependency import DependencyMapper
+        from dune.perftool.tools import get_pymbolic_basename
+        deps = Or(tuple(Writes(get_pymbolic_basename(expr)) for expr in DependencyMapper()(expression)))
+
         # Issue an instruction in the quadrature loop that fills the buffer
         # with the evaluation of the contribution at all quadrature points
         assignee = Subscript(Variable(temp), tuple(Variable(i) for i in quadrature_inames()))
@@ -203,6 +209,7 @@ def generate_accumulation_instruction(visitor, accterm, measure, subdomain_id):
                                   forced_iname_deps=frozenset(quadrature_inames() + visitor.inames),
                                   forced_iname_deps_is_final=True,
                                   tags=frozenset({"quadvec"}),
+                                  depends_on=frozenset({deps})
                                   )
         contribution_ids.append(contrib_dep)