diff --git a/loopy/schedule/__init__.py b/loopy/schedule/__init__.py
index c078da2ec58dabbbf646bfcf593ea0138941cc85..10408bce9b7a555bbd2259cdebd0cbcef30f01d9 100644
--- a/loopy/schedule/__init__.py
+++ b/loopy/schedule/__init__.py
@@ -1528,7 +1528,7 @@ class DependencyTracker(object):
             source, target = target, source
 
         target_deps = self.kernel.recursive_insn_dep_map()[target.id]
-        if source.id in target_deps:
+        if source.id == target.id or source.id in target_deps:
             if self.reverse:
                 dep_descr = "{tgt} rev-depends on {src}"
             else:
diff --git a/test/test_loopy.py b/test/test_loopy.py
index db4a382046cc1aaf1465e81cf493415ace57e64d..bd6466f4aeda762590645e8668e62e81db072587 100644
--- a/test/test_loopy.py
+++ b/test/test_loopy.py
@@ -2073,6 +2073,26 @@ def test_barrier_insertion_near_bottom_of_loop():
     assert_barrier_between(knl, "ainit", "aupdate", ignore_barriers_in_levels=[1])
 
 
+def test_barrier_insertion_with_self_dependency():
+    import loopy as lp
+    knl = lp.make_kernel(
+        "{[i,j]: 0 <=i,j<16}",
+        """
+        <>t = 0 {id=nop0}
+        for i
+         for j
+          <>B[i+1,j] = B[i,j]
+         end
+        end
+        t = 1 {id=nop1}
+        """,
+        seq_dependencies=True)
+    knl = lp.tag_inames(knl, dict(j="l.0"))
+    knl = lp.set_temporary_scope(knl, "B", "local")
+    knl = lp.get_one_scheduled_kernel(lp.preprocess_kernel(knl))
+    assert_barrier_between(knl, "nop0", "nop1")
+
+
 if __name__ == "__main__":
     if len(sys.argv) > 1:
         exec(sys.argv[1])