From d5076f4f0635c9e36387fccd58f6d26e773bb8d7 Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Tue, 17 Jun 2014 00:28:23 +0100
Subject: [PATCH] Rename inames in insn.forced_iname_deps in duplicate_inames

---
 loopy/__init__.py |  7 +++++++
 loopy/symbolic.py | 10 +++++++++-
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/loopy/__init__.py b/loopy/__init__.py
index 3d6f71bec..fa146961d 100644
--- a/loopy/__init__.py
+++ b/loopy/__init__.py
@@ -522,6 +522,13 @@ class _InameDuplicator(ExpandingIdentityMapper):
             from pymbolic import var
             return var(new_name)
 
+    def map_instruction(self, insn):
+        new_fid = frozenset(
+                self.old_to_new.get(iname, iname)
+                for iname in insn.forced_iname_deps)
+        return insn.copy(
+                forced_iname_deps=new_fid)
+
 
 def duplicate_inames(knl, inames, within, new_inames=None, suffix=None,
         tags={}):
diff --git a/loopy/symbolic.py b/loopy/symbolic.py
index 77e92ace1..8f0cd02e3 100644
--- a/loopy/symbolic.py
+++ b/loopy/symbolic.py
@@ -504,6 +504,9 @@ class ExpandingIdentityMapper(IdentityMapper):
 
         return renamed_result, renames
 
+    def map_instruction(self, insn):
+        return insn
+
     def map_kernel(self, kernel):
         new_insns = [
                 # While subst rules are not allowed in assignees, the mapper
@@ -514,9 +517,14 @@ class ExpandingIdentityMapper(IdentityMapper):
                 for insn in kernel.instructions]
 
         new_substs, renames = self._get_new_substitutions_and_renames()
+
+        new_insns = [self.map_instruction(insn)
+                for insn in rename_subst_rules_in_instructions(
+                    new_insns, renames)]
+
         return kernel.copy(
             substitutions=new_substs,
-            instructions=rename_subst_rules_in_instructions(new_insns, renames))
+            instructions=new_insns)
 
 
 class ExpandingSubstitutionMapper(ExpandingIdentityMapper):
-- 
GitLab