From a39c61f4d4a6400d6e514e9806377429ff5916f5 Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Thu, 29 Mar 2012 01:10:33 -0400
Subject: [PATCH] Don't obliterate specialized CSEs in common subexpression
 finding.

---
 pymbolic/cse.py | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/pymbolic/cse.py b/pymbolic/cse.py
index 7ebaae6..700479a 100644
--- a/pymbolic/cse.py
+++ b/pymbolic/cse.py
@@ -69,7 +69,10 @@ class CSEMapper(IdentityMapper):
 
     def map_common_subexpression(self, expr):
         # don't duplicate CSEs
-        return prim.wrap_in_cse(self.rec(expr.child), expr.prefix)
+        if type(expr) is prim.CommonSubexpression:
+            return prim.wrap_in_cse(self.rec(expr.child), expr.prefix)
+        else:
+            return IdentityMapper.map_common_subexpression(self, expr)
 
     def map_substitution(self, expr):
         return type(expr)(
-- 
GitLab