diff --git a/loopy/check.py b/loopy/check.py
index 2ce9ffe0f3bbfa16006037a12e6a56cc3325eae8..a8ec1ad35e42410454b36fa38ef5f0a2fbefc0d6 100644
--- a/loopy/check.py
+++ b/loopy/check.py
@@ -100,6 +100,8 @@ def check_for_duplicate_insn_ids(knl):
     insn_ids = set()
 
     for insn in knl.instructions:
+        if not isinstance(insn.id, str):
+            raise LoopyError("instruction id %r is not a string" % insn.id)
         if insn.id in insn_ids:
             raise LoopyError("duplicate instruction id: '%s'" % insn.id)
         insn_ids.add(insn.id)