diff --git a/patches/loopy/tempdep.patch b/patches/loopy/tempdep.patch
deleted file mode 100644
index c73b90733f4869866778289cc94c9da33333862f..0000000000000000000000000000000000000000
--- a/patches/loopy/tempdep.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/loopy/kernel/creation.py b/loopy/kernel/creation.py
-index d9cd76c..a95cc1e 100644
---- a/loopy/kernel/creation.py
-+++ b/loopy/kernel/creation.py
-@@ -1518,7 +1518,7 @@ def apply_single_writer_depencency_heuristic(kernel, warn_if_used=True):
-                                 "temporary variable '%s' is read, but never written."
-                                 % var)
- 
--                if len(var_writers) == 1:
-+                if len(var_writers) >= 1:
-                     auto_deps.update(
-                             var_writers
-                             - set([insn.id]))
diff --git a/python/dune/perftool/pdelab/geometry.py b/python/dune/perftool/pdelab/geometry.py
index 7afe2854f597d1a4207c1b8f20088bd11c0b9be0..d39bd9cb578b62e17f64eb6920bcde855cc32980 100644
--- a/python/dune/perftool/pdelab/geometry.py
+++ b/python/dune/perftool/pdelab/geometry.py
@@ -21,6 +21,8 @@ from ufl.algorithms import MultiFunction
 from pymbolic.primitives import Variable
 from pymbolic.primitives import Expression as PymbolicExpression
 
+from loopy.match import Writes
+
 import numpy as np
 
 
@@ -205,6 +207,7 @@ def apply_in_cell_transformation(name, local, restriction):
                                                             ),
                                assignees=frozenset({name}),
                                read_variables=frozenset({get_pymbolic_basename(local)}),
+                               depends_on=frozenset({Writes(get_pymbolic_basename(local))}),
                                )
 
 
@@ -240,6 +243,7 @@ def evaluate_unit_outer_normal(name):
     return quadrature_preamble("{} = {}.unitOuterNormal({});".format(name, ig, qp),
                                assignees=frozenset({name}),
                                read_variables=frozenset({get_pymbolic_basename(qp)}),
+                               depends_on=frozenset({Writes(get_pymbolic_basename(qp))}),
                                )
 
 
@@ -318,6 +322,7 @@ def define_jacobian_inverse_transposed(name, restriction):
                                                                                ),
                                assignees=frozenset({name}),
                                read_variables=frozenset({get_pymbolic_basename(pos)}),
+                               depends_on=frozenset({Writes(get_pymbolic_basename(pos))}),
                                )
 
 
@@ -353,6 +358,7 @@ def define_jacobian_determinant(name):
     return quadrature_preamble(code,
                                assignees=frozenset({name}),
                                read_variables=frozenset({get_pymbolic_basename(pos)}),
+                               depends_on=frozenset({Writes(get_pymbolic_basename(pos))}),
                                )
 
 
diff --git a/python/dune/perftool/pdelab/parameter.py b/python/dune/perftool/pdelab/parameter.py
index 0d3aa6a29d11f8c520687ded1fb839c95797dcd7..f5a3e356fb4c7db5d3746d909c0dfa92cbf779f5 100644
--- a/python/dune/perftool/pdelab/parameter.py
+++ b/python/dune/perftool/pdelab/parameter.py
@@ -24,6 +24,8 @@ from dune.perftool.pdelab.localoperator import (class_type_from_cache,
                                                 localoperator_basename,
                                                 )
 
+from loopy.match import Writes
+
 
 @class_basename(classtag="parameterclass")
 def parameterclass_basename(formdata, data):
@@ -177,6 +179,7 @@ def evaluate_cell_parameter_function(name, restriction):
                                                             ),
                                assignees=frozenset({name}),
                                read_variables=frozenset({get_pymbolic_basename(pos)}),
+                               depends_on=frozenset({Writes(get_pymbolic_basename(pos))}),
                                )
 
 
@@ -197,6 +200,7 @@ def evaluate_intersection_parameter_function(name):
                                                             ),
                                assignees=frozenset({name}),
                                read_variables=frozenset({get_pymbolic_basename(pos)}),
+                               depends_on=frozenset({Writes(get_pymbolic_basename(pos))}),
                                )