From 63d425826ecebbab2869e529e5513fa1aaf65368 Mon Sep 17 00:00:00 2001
From: jdsteve2 <jdsteve2@illinois.edu>
Date: Tue, 24 Mar 2020 01:20:33 -0500
Subject: [PATCH] make unused iname removal optional when
 remove_any_newly_unused_inames decorator is present on a transformation

---
 loopy/transform/iname.py | 24 ++++++++++++++++--------
 1 file changed, 16 insertions(+), 8 deletions(-)

diff --git a/loopy/transform/iname.py b/loopy/transform/iname.py
index a061ca111..1f9108bb7 100644
--- a/loopy/transform/iname.py
+++ b/loopy/transform/iname.py
@@ -1242,16 +1242,24 @@ def remove_unused_inames(knl, inames=None):
 def remove_any_newly_unused_inames(transformation_func):
 
     def wrapper(knl, *args, **kwargs):
-        # determine which inames were already unused
-        inames_already_unused = knl.all_inames() - get_used_inames(knl)
 
-        # call transform
-        transformed_knl = transformation_func(knl, *args, **kwargs)
+        # check for remove_unused_inames argument, default: True
+        remove_unused_inames = kwargs.pop("remove_unused_inames", True)
 
-        # Remove inames that are unused due to transform
-        return remove_unused_inames(
-            transformed_knl,
-            transformed_knl.all_inames()-inames_already_unused)
+        if remove_unused_inames:
+            # determine which inames were already unused
+            inames_already_unused = knl.all_inames() - get_used_inames(knl)
+
+            # call transform
+            transformed_knl = transformation_func(knl, *args, **kwargs)
+
+            # Remove inames that are unused due to transform
+            return remove_unused_inames(
+                transformed_knl,
+                transformed_knl.all_inames()-inames_already_unused)
+        else:
+            # call transform
+            return transformation_func(knl, *args, **kwargs)
 
     return wrapper
 
-- 
GitLab