From cb662213c81aa2a2233c6bd44740026beb7de1bb Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner <inform@tiker.net> Date: Tue, 9 Jul 2013 10:45:50 -0400 Subject: [PATCH] CodeGenerationState.fix: Add iname to implemented_domain if not already there --- loopy/codegen/__init__.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/loopy/codegen/__init__.py b/loopy/codegen/__init__.py index 8b4e0d22f..e326f5f3c 100644 --- a/loopy/codegen/__init__.py +++ b/loopy/codegen/__init__.py @@ -162,16 +162,28 @@ class CodeGenerationState(object): self.c_code_mapper) def fix(self, iname, aff): + new_impl_domain = self.implemented_domain + + impl_space = self.implemented_domain.get_space() + if iname not in impl_space.get_var_dict(): + new_impl_domain = (new_impl_domain + .add_dims(isl.dim_type.set, 1) + .set_dim_name( + isl.dim_type.set, + new_impl_domain.dim(isl.dim_type.set), + iname)) + impl_space = new_impl_domain.get_space() + from loopy.isl_helpers import iname_rel_aff - iname_plus_lb_aff = iname_rel_aff( - self.implemented_domain.get_space(), iname, "==", aff) + iname_plus_lb_aff = iname_rel_aff(impl_space, iname, "==", aff) from loopy.symbolic import pw_aff_to_expr cns = isl.Constraint.equality_from_aff(iname_plus_lb_aff) expr = pw_aff_to_expr(aff) + new_impl_domain = new_impl_domain.add_constraint(cns) return CodeGenerationState( - self.implemented_domain.add_constraint(cns), + new_impl_domain, self.c_code_mapper.copy_and_assign(iname, expr)) # }}} -- GitLab