diff --git a/loopy/codegen/bounds.py b/loopy/codegen/bounds.py
index 39e292600f5ce0c3e203580214547bcd823d7915..9d90056167d17ca73f5eaffd6f7f1b3f80eabb04 100644
--- a/loopy/codegen/bounds.py
+++ b/loopy/codegen/bounds.py
@@ -236,11 +236,9 @@ def wrap_in_for_from_constraints(ccm, iname, constraint_bset, stmt,
 
 # {{{ on which variables may a conditional depend?
 
-def get_defined_inames(kernel, sched_index, allow_tag_classes=()):
-    """
-    :param exclude_tags: a tuple of tag classes to exclude
-    """
+def get_defined_inames(kernel, sched_index):
     from loopy.schedule import EnterLoop, LeaveLoop
+    from loopy.kernel import ParallelTag
 
     result = set()
 
@@ -255,10 +253,33 @@ def get_defined_inames(kernel, sched_index, allow_tag_classes=()):
     for iname in kernel.all_inames():
         tag = kernel.iname_to_tag.get(iname)
 
-        if isinstance(tag, allow_tag_classes):
+        # these are always defined
+        if isinstance(tag, ParallelTag):
             result.add(iname)
 
-    return result
+    return frozenset(result)
+
+# }}}
+
+# {{{ get_simple_loop_bounds
+
+def get_simple_loop_bounds(kernel, sched_index, iname, implemented_domain, iname_domain):
+    from loopy.codegen.bounds import get_bounds_constraints, get_defined_inames
+    lower_constraints_orig, upper_constraints_orig, equality_constraints_orig = \
+            get_bounds_constraints(iname_domain, iname,
+                    frozenset([iname])
+                    | get_defined_inames(kernel, sched_index+1),
+                    allow_parameters=True)
+
+    lower_constraints_orig.extend(equality_constraints_orig)
+    upper_constraints_orig.extend(equality_constraints_orig)
+    #assert not equality_constraints_orig
+
+    from loopy.codegen.bounds import pick_simple_constraint
+    lb_cns_orig = pick_simple_constraint(lower_constraints_orig, iname)
+    ub_cns_orig = pick_simple_constraint(upper_constraints_orig, iname)
+
+    return lb_cns_orig, ub_cns_orig
 
 # }}}
 
@@ -283,4 +304,7 @@ def pick_simple_constraint(constraints, iname):
 
 
 
+
+
+
 # vim: foldmethod=marker
diff --git a/loopy/codegen/loop.py b/loopy/codegen/loop.py
index faeefa0250518a89b66c44d87d1ef099ea7f156b..db3ff940c1c56e43026b73c79517b61c16fcd154 100644
--- a/loopy/codegen/loop.py
+++ b/loopy/codegen/loop.py
@@ -8,27 +8,6 @@ from loopy.codegen.control import build_loop_nest
 
 
 
-def get_simple_loop_bounds(kernel, sched_index, iname, implemented_domain, iname_domain):
-    from loopy.codegen.bounds import get_bounds_constraints, get_defined_inames
-    lower_constraints_orig, upper_constraints_orig, equality_constraints_orig = \
-            get_bounds_constraints(iname_domain, iname,
-                    frozenset([iname])
-                    | frozenset(get_defined_inames(kernel, sched_index+1)),
-                    allow_parameters=True)
-
-    lower_constraints_orig.extend(equality_constraints_orig)
-    upper_constraints_orig.extend(equality_constraints_orig)
-    #assert not equality_constraints_orig
-
-    from loopy.codegen.bounds import pick_simple_constraint
-    lb_cns_orig = pick_simple_constraint(lower_constraints_orig, iname)
-    ub_cns_orig = pick_simple_constraint(upper_constraints_orig, iname)
-
-    return lb_cns_orig, ub_cns_orig
-
-
-
-
 # {{{ conditional-minimizing slab decomposition
 
 def get_slab_decomposition(kernel, iname, sched_index, codegen_state):
@@ -37,6 +16,7 @@ def get_slab_decomposition(kernel, iname, sched_index, codegen_state):
     if iname_domain.is_empty():
         return ()
 
+    from loopy.codegen.bounds import get_simple_loop_bounds
     lb_cns_orig, ub_cns_orig = get_simple_loop_bounds(kernel, sched_index, iname,
             codegen_state.implemented_domain, iname_domain)