diff --git a/python/dune/perftool/pdelab/localoperator.py b/python/dune/perftool/pdelab/localoperator.py
index f4e90c6affc8c4276cf4e6d91bfc1a80d5be4521..6d9c1dde8dc5167fa584572e85fa006509f65d25 100644
--- a/python/dune/perftool/pdelab/localoperator.py
+++ b/python/dune/perftool/pdelab/localoperator.py
@@ -401,9 +401,6 @@ def generate_accumulation_instruction(expr, visitor):
     accumvar = name_accumulation_variable(test_lfs.get_restriction() + ansatz_lfs.get_restriction())
 
     predicates = boundary_predicates(visitor.measure, visitor.subdomain_id)
-    if False in predicates:
-        return
-
     rank = 1 if ansatz_lfs.lfs is None else 2
 
     from dune.perftool.pdelab.argument import PDELabAccumulationFunction
@@ -448,6 +445,11 @@ def visit_integral(integral):
     measure = integral.integral_type()
     subdomain_id = integral.subdomain_id()
 
+    # Avoid even visiting the integral, if it is noop
+    predicates = boundary_predicates(measure, subdomain_id)
+    if False in predicates:
+        return
+
     # Start the visiting process!
     visitor = get_visitor(measure, subdomain_id)
     visitor.accumulate(integrand)