buffering of Function accessed with stencil is broken
The issue is that the buffer halo isn't initialized, so instead of zeros, garbage is read.

```
    nt = 5
    grid = Grid(shape=(4, 4))

    u = TimeFunction(name='u', grid=grid, space_order=4, save=nt)
    u1 = TimeFunction(name='u', grid=grid, space_order=4, save=nt)

    eqn = Eq(u.forward, u.dx + 1)

    op0 = Operator(eqn, opt='noop')
    op1 = Operator(eqn, opt='buffering')

    op0.apply(time_M=nt-2)
    op1.apply(time_M=nt-2, u=u1)

    assert np.all(u.data == u1.data)
```
diff --git a/devito/passes/clusters/buffering.py b/devito/passes/clusters/buffering.py
index 64fedd31c..a0f8efc12 100644
--- a/devito/passes/clusters/buffering.py
+++ b/devito/passes/clusters/buffering.py
@@ -463,9 +463,12 @@ class Buffer(object):
         intervals = []
         sub_iterators = {}
         directions = {}
-        for d in self.buffer.dimensions:
+        for d, h in zip(self.buffer.dimensions, self.buffer._size_halo):
             try:
                 interval, si, direction = self.itintervals_mapper[d]
+                # The initialization must comprise the halo region as well, since
+                # in principle this could be accessed through a stencil
+                interval = interval.translate(v0=-h.left, v1=h.right)
             except KeyError:
                 # E.g., the contraction Dimension `db0`
                 assert d in self.contraction_mapper.values()
diff --git a/tests/test_buffering.py b/tests/test_buffering.py
index 4cbbe02e2..2c6c8ff2e 100644
--- a/tests/test_buffering.py
+++ b/tests/test_buffering.py
@@ -663,3 +663,24 @@ def test_everything():
     op1.apply(time_m=15, time_M=35, save_shift=0, u=u1)
 
     assert np.all(u.data == u1.data)
+
+
+@pytest.mark.parametrize('subdomain', ['domain', 'interior'])
+def test_stencil_issue_1915(subdomain):
+    nt = 5
+    grid = Grid(shape=(6, 6))
+
+    u = TimeFunction(name='u', grid=grid, space_order=4, save=nt)
+    u1 = TimeFunction(name='u', grid=grid, space_order=4, save=nt)
+
+    subdomain = grid.subdomains[subdomain]
+
+    eqn = Eq(u.forward, u.dx + 1, subdomain=subdomain)
+
+    op0 = Operator(eqn, opt='noop')
+    op1 = Operator(eqn, opt='buffering')
+
+    op0.apply(time_M=nt-2)
+    op1.apply(time_M=nt-2, u=u1)
+
+    assert np.all(u.data == u1.data)
['devito/passes/clusters/buffering.py', 'tests/test_buffering.py']