diff --git a/loopy/codegen/dispatch.py b/loopy/codegen/dispatch.py
index bd7f40a3361727a4c2b3a1275f45bd22c9dfdef4..e7ed34c189fdf191576885ee94827b40e18eeb3f 100644
--- a/loopy/codegen/dispatch.py
+++ b/loopy/codegen/dispatch.py
@@ -36,7 +36,9 @@ def build_loop_nest(cgs, kernel, sched_index, exec_domain):
             for i, (assignments, impl_domain) in \
                     enumerate(exec_domain):
 
-                my_block = assignments+[Line()]
+                my_block = []
+                if assignments:
+                    my_block.extend(assignments+[Line()])
 
                 assert isinstance(lvalue, Subscript)
                 name = lvalue.aggregate.name
@@ -80,8 +82,10 @@ def build_loop_nest(cgs, kernel, sched_index, exec_domain):
                     "tmp_%s_%d" % (lvalue.aggregate.name, i)), 0)
                     for i in range(len(exec_domain))
                     for lvalue, expr in kernel.instructions]
+                +[Line()]
                 +[build_loop_nest(cgs, kernel, sched_index+1, 
-                    exec_domain)])
+                    exec_domain)]
+                +[Line()])
 
 
         for i, (idx_assignments, impl_domain) in \
@@ -95,9 +99,12 @@ def build_loop_nest(cgs, kernel, sched_index, exec_domain):
                         get_valid_index_vars(kernel, sched_index),
                         impl_domain, assignment)
 
-                result.append(
-                        gen_code_block(
-                            idx_assignments+[ Line(), wrapped_assign]))
+                cb = []
+                if idx_assignments:
+                    cb.extend(idx_assignments+[Line()])
+                cb.append(wrapped_assign)
+
+                result.append(gen_code_block(cb))
 
         return gen_code_block(result)