diff --git a/loopy/__init__.py b/loopy/__init__.py
index a14dff965bd349bac80bbda3e6deb6bb67e2ae5a..6a68748731a0d62c444c6f8865ecb989374374e3 100644
--- a/loopy/__init__.py
+++ b/loopy/__init__.py
@@ -73,7 +73,8 @@ def make_kernel(*args, **kwargs):
 
         for iname in reduction_expr.inames:
             if iname in duplicate_inames:
-                new_iname = knl.make_unique_var_name(iname, newly_created_vars)
+                new_iname = knl.make_unique_var_name(iname+"_"+insn.id,
+                        newly_created_vars)
 
                 old_insn_inames.append(iname)
                 new_insn_inames.append(new_iname)
@@ -123,7 +124,7 @@ def make_kernel(*args, **kwargs):
 
             new_inames = [
                     knl.make_unique_var_name(
-                        iname,
+                        based_on=iname+"_"+insn.id,
                         extra_used_vars=
                         newly_created_vars)
                     for iname in duplicate_inames]
diff --git a/loopy/cse.py b/loopy/cse.py
index 3456476439be06132853ffd605b24723ac73d1a7..5388ce19360f819fd32865f29c73fb9fc701b715 100644
--- a/loopy/cse.py
+++ b/loopy/cse.py
@@ -371,7 +371,12 @@ def realize_cse(kernel, cse_tag, dtype, independent_inames=[],
     temp_new_inames = []
     for old_iname, new_iname in zip(independent_inames, new_inames):
         if new_iname is None:
-            new_iname = kernel.make_unique_var_name(old_iname, set(temp_new_inames))
+            if cse_tag is not None:
+                based_on = old_iname+"_"+cse_tag
+            else:
+                based_on = old_iname
+
+            new_iname = kernel.make_unique_var_name(based_on, set(temp_new_inames))
             assert new_iname != old_iname
 
         temp_new_inames.append(new_iname)