From 97d4462f10a2ca9193b1e2fc493d0e2108aed2a6 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner <inform@tiker.net> Date: Tue, 3 Apr 2012 01:57:27 -0400 Subject: [PATCH] Fix CSE tagger when multiple identical expressions occur in a commutative subexpr. --- pymbolic/cse.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pymbolic/cse.py b/pymbolic/cse.py index bb71581..b7c6109 100644 --- a/pymbolic/cse.py +++ b/pymbolic/cse.py @@ -26,7 +26,11 @@ class NormalizedKeyGetter(object): def __call__(self, expr): expr = self.remove_cses(expr) if isinstance(expr, COMMUTATIVE_CLASSES): - return type(expr), frozenset(expr.children) + kid_count = {} + for child in expr.children: + kid_count[child] = kid_count.get(child, 0) + 1 + + return type(expr), frozenset(kid_count.iteritems()) else: return expr -- GitLab