diff --git a/loopy/transform/iname.py b/loopy/transform/iname.py
index 8e6f57cc83c52311b074342c4c589f9c5cd99119..53c4a05756b2697657a5a98730e7fab1ef7705f1 100644
--- a/loopy/transform/iname.py
+++ b/loopy/transform/iname.py
@@ -920,6 +920,12 @@ def get_iname_duplication_options(knl, use_boostable_into=False):
 
     # Get the duplication options as a tuple of iname and a set
     for iname, insns in _get_iname_duplication_options(insn_deps):
+        # Check whether this iname has a parallel tag and discard it if so
+        from loopy.kernel.data import ParallelTag
+        if (iname in knl.iname_to_tag
+                    and isinstance(knl.iname_to_tag[iname], ParallelTag)):
+            continue
+
         # If we find a duplication option and fo not use boostable_into
         # information, we restart this generator with use_boostable_into=True
         if not use_boostable_into:
@@ -927,12 +933,6 @@ def get_iname_duplication_options(knl, use_boostable_into=False):
                 yield option
             return
 
-        # Check whether this iname has a parallel tag and discard it if so
-        from loopy.kernel.data import ParallelTag
-        if (iname in knl.iname_to_tag
-                    and isinstance(knl.iname_to_tag[iname], ParallelTag)):
-            continue
-
         # Reconstruct an object that may be passed to the within parameter of
         # loopy.duplicate_inames
         from loopy.match import Id, Or