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) # }}}