diff --git a/loopy/check.py b/loopy/check.py
index 9115d740e8c2b6b3f721706306f2ad673ec745ed..2ce9ffe0f3bbfa16006037a12e6a56cc3325eae8 100644
--- a/loopy/check.py
+++ b/loopy/check.py
@@ -96,6 +96,15 @@ def check_insn_attributes(kernel):
                        ", ".join(no_sync_with_scopes - VALID_NOSYNC_SCOPES)))
 
 
+def check_for_duplicate_insn_ids(knl):
+    insn_ids = set()
+
+    for insn in knl.instructions:
+        if insn.id in insn_ids:
+            raise LoopyError("duplicate instruction id: '%s'" % insn.id)
+        insn_ids.add(insn.id)
+
+
 def check_loop_priority_inames_known(kernel):
     for prio in kernel.loop_priority:
         for iname in prio:
@@ -375,6 +384,7 @@ def pre_schedule_checks(kernel):
     try:
         logger.debug("%s: pre-schedule check: start" % kernel.name)
 
+        check_for_duplicate_insn_ids(kernel)
         check_for_orphaned_user_hardware_axes(kernel)
         check_for_double_use_of_hw_axes(kernel)
         check_insn_attributes(kernel)
diff --git a/loopy/kernel/creation.py b/loopy/kernel/creation.py
index d9fff66310abb62d3fe813677124814b81531161..c6618d62f7543fd2bc5461762ed19714e998fc14 100644
--- a/loopy/kernel/creation.py
+++ b/loopy/kernel/creation.py
@@ -1205,15 +1205,6 @@ def check_for_duplicate_names(knl):
         add_name(name, "substitution")
 
 
-def check_for_duplicate_instruction_ids(knl):
-    insn_ids = set()
-
-    for insn in knl.instructions:
-        if insn.id in insn_ids:
-            raise RuntimeError("duplicate instruction id: '%s'" % insn.id)
-        insn_ids.add(insn.id)
-
-
 def check_for_nonexistent_iname_deps(knl):
     for insn in knl.instructions:
         if not set(insn.within_inames) <= knl.all_inames():
@@ -1995,7 +1986,8 @@ def make_kernel(domains, instructions, kernel_data=["..."], **kwargs):
 
     from loopy.transform.instruction import uniquify_instruction_ids
     knl = uniquify_instruction_ids(knl)
-    check_for_duplicate_instruction_ids(knl)
+    from loopy.check import check_for_duplicate_insn_ids
+    check_for_duplicate_insn_ids(knl)
 
     if seq_dependencies:
         knl = add_sequential_dependencies(knl)