diff --git a/loopy/creation.py b/loopy/creation.py
index 0337f7c8b53c6a280eaa5fba0f8c91debfed2651..28be2b09557f7ef285b7d2c5a9dc2010e3bd94eb 100644
--- a/loopy/creation.py
+++ b/loopy/creation.py
@@ -35,9 +35,11 @@ class CSEToAssignmentMapper(IdentityMapper):
                 dtype = None
 
             child = self.rec(expr.child)
+            from pymbolic.primitives import Variable
+            if isinstance(child, Variable):
+                return child
 
             var_name = self.add_assignment(expr.prefix, child, dtype)
-            from pymbolic.primitives import Variable
             var = Variable(var_name)
             self.expr_to_var[expr.child] = var
             return var