From 41a88c2c9ba8d91448e0e9f56455c8eba110be91 Mon Sep 17 00:00:00 2001
From: Tim Warburton <timwar@caam.rice.edu>
Date: Tue, 8 Nov 2011 23:58:33 -0600
Subject: [PATCH] Properly recurse in CSE expansion.

---
 loopy/symbolic.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/loopy/symbolic.py b/loopy/symbolic.py
index 56cd896eb..63a564eaf 100644
--- a/loopy/symbolic.py
+++ b/loopy/symbolic.py
@@ -625,6 +625,8 @@ class ParametrizedSubstitutor(IdentityMapper):
             raise RuntimeError("CSE '%s' must be invoked with %d arguments"
                     % (expr.name, len(arg_names)))
 
+        cse_expr = self.rec(cse_expr)
+
         if self.wrap_cse:
             from pymbolic.primitives import CommonSubexpression
             return CommonSubexpression(cse_expr, expr.name)
@@ -647,7 +649,7 @@ class ParametrizedSubstitutor(IdentityMapper):
         subst_map = SubstitutionMapper(make_subst_func(
             dict(zip(arg_names, expr.parameters))))
 
-        cse_expr = subst_map(cse_expr)
+        cse_expr = self.rec(subst_map(cse_expr))
 
         if self.wrap_cse:
             return CommonSubexpression(cse_expr, cse_name)
-- 
GitLab