diff --git a/loopy/kernel/tools.py b/loopy/kernel/tools.py
index bccff71bd51db0f1994ace424757f253bb93ebd7..ac1e00bae4c16a66ac2eedd3c6fdc618894eb027 100644
--- a/loopy/kernel/tools.py
+++ b/loopy/kernel/tools.py
@@ -1422,15 +1422,21 @@ def draw_dependencies_as_unicode_arrows(
 def stringify_instruction_list(kernel):
     # {{{ topological sort
 
-    from pytools.graph import compute_topological_order
+    printed_insn_ids = set()
+    printed_insn_order = []
 
-    dep_graph = {}
-    for insn in kernel.instructions:
-        dep_graph[insn.id] = natsorted(insn.depends_on)
+    def insert_insn_into_order(insn):
+        if insn.id in printed_insn_ids:
+            return
+        printed_insn_ids.add(insn.id)
 
-    printed_insn_order = compute_topological_order(dep_graph)
+        for dep_id in natsorted(insn.depends_on):
+            insert_insn_into_order(kernel.id_to_insn[dep_id])
 
-    del dep_graph
+        printed_insn_order.append(insn)
+
+    for insn in kernel.instructions:
+        insert_insn_into_order(insn)
 
     # }}}