diff --git a/pytato/target/loopy/codegen.py b/pytato/target/loopy/codegen.py
index 1bf286e3785decb91a6d8d77c666b4e0d94fa9cb..8055c12f5b5d9d5c78989ca3d68f51e9e9dd9648 100644
--- a/pytato/target/loopy/codegen.py
+++ b/pytato/target/loopy/codegen.py
@@ -746,8 +746,9 @@ def _generate_name_for_temp(expr: Array, state: CodeGenState) -> str:
             name_tag, = expr.tags_of_type(Named)
             if state.var_name_gen.is_name_conflicting(name_tag.name):
                 raise ValueError(f"Cannot assign the name {name_tag.name} to the"
-                                 f" temporary corresponding to {expr} as it is"
-                                 " referring a loopy kernel argument.")
+                                 f" temporary corresponding to {expr} as it "
+                                 "conflicts with an existing name. ")
+            state.var_name_gen.add_name(name_tag.name)
             return name_tag.name
         elif expr.tags_of_type(PrefixNamed):
             prefix_tag, = expr.tags_of_type(PrefixNamed)
diff --git a/test/test_codegen.py b/test/test_codegen.py
index 2e619f7dbe5ad925ab35f65e1b5f53ab2c942b57..6a2080a76892076f95d0223f2867d45b89f5ae5b 100755
--- a/test/test_codegen.py
+++ b/test/test_codegen.py
@@ -59,6 +59,18 @@ def test_basic_codegen(ctx_factory):
     assert (out == x_in * x_in).all()
 
 
+def test_named_clash(ctx_factory):
+    x = pt.make_placeholder("x", (5,), np.int64)
+
+    from pytato.tags import ImplStored, Named
+    expr = (
+            (2*x).tagged((Named("xx"), ImplStored()))
+            + (3*x).tagged((Named("xx"), ImplStored())))
+
+    with pytest.raises(ValueError):
+        pt.generate_loopy(expr)
+
+
 def test_scalar_placeholder(ctx_factory):
     ctx = ctx_factory()
     queue = cl.CommandQueue(ctx)