diff --git a/loopy/transform/buffer.py b/loopy/transform/buffer.py
index dd54fc12c20492a62b88b769d7a0ccefded7f7a4..dd343a81ab9e86c9fa822f519aa9becb3f7c8baf 100644
--- a/loopy/transform/buffer.py
+++ b/loopy/transform/buffer.py
@@ -136,8 +136,11 @@ def buffer_array(kernel, var_name, buffer_inames, init_expression=None,
         array should be read) or an expression optionally involving the
         variable 'base' (which references the associated location in the array
         being buffered).
-    :arg store_expression: Either *None* or an expression involving
+    :arg store_expression: Either *None*, *False*, or an expression involving
         variables 'base' and 'buffer' (without array indices).
+        (*None* indicates that a default storage instruction should be used,
+        *False* indicates that no storing of the temporary should occur
+        at all.)
     """
 
     # {{{ process arguments
@@ -426,19 +429,25 @@ def buffer_array(kernel, var_name, buffer_inames, init_expression=None,
                     "buffer": buf_var_store,
                     }))(store_expression)
 
-    from loopy.kernel.data import Assignment
-    store_instruction = Assignment(
-                id=kernel.make_unique_instruction_id(based_on="store_"+var_name),
-                depends_on=frozenset(aar.modified_insn_ids),
-                assignee=store_target,
-                expression=store_expression,
-                forced_iname_deps=frozenset(within_inames))
+    if store_expression is not False:
+        from loopy.kernel.data import Assignment
+        store_instruction = Assignment(
+                    id=kernel.make_unique_instruction_id(based_on="store_"+var_name),
+                    depends_on=frozenset(aar.modified_insn_ids),
+                    assignee=store_target,
+                    expression=store_expression,
+                    forced_iname_deps=frozenset(within_inames))
+    else:
+        did_write = False
 
     # }}}
 
     new_insns.append(init_instruction)
     if did_write:
         new_insns.append(store_instruction)
+    else:
+        for iname in store_inames:
+            del new_iname_to_tag[iname]
 
     kernel = kernel.copy(
             domains=new_kernel_domains,