From cb42f2c04e89534746849d6c41cce3238a990fbb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jan=20H=C3=B6nig?= <jan.hoenig@fau.de>
Date: Thu, 17 Feb 2022 17:16:56 +0100
Subject: [PATCH] Reverting back to previous more correctly broken
 implementation

---
 pystencils/backends/cbackend.py    | 2 +-
 pystencils/integer_set_analysis.py | 5 +++--
 pystencils/transformations.py      | 3 +--
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/pystencils/backends/cbackend.py b/pystencils/backends/cbackend.py
index 139c8b0f6..f425eef88 100644
--- a/pystencils/backends/cbackend.py
+++ b/pystencils/backends/cbackend.py
@@ -219,7 +219,7 @@ class CBackend:
             method_name = f"_print_{cls.__name__}"
             if hasattr(self, method_name):
                 return getattr(self, method_name)(node)
-        return self.sympy_printer.doprint(node)
+        raise NotImplementedError(f"{self.__class__.__name__} does not support node of type {node.__class__.__name__}")
 
     def _print_AbstractType(self, node):
         return str(node)
diff --git a/pystencils/integer_set_analysis.py b/pystencils/integer_set_analysis.py
index a3fcd37a2..f90d89ab7 100644
--- a/pystencils/integer_set_analysis.py
+++ b/pystencils/integer_set_analysis.py
@@ -5,7 +5,7 @@ import sympy as sp
 
 import pystencils.astnodes as ast
 from pystencils.typing import parents_of_type
-from pystencils.backends import generate_c
+from pystencils.backends.cbackend import CustomSympyPrinter
 
 
 def remove_brackets(s):
@@ -52,7 +52,8 @@ def simplify_loop_counter_dependent_conditional(conditional):
     dofs_in_loops, iteration_set = isl_iteration_set(conditional)
     if dofs_in_condition.issubset(dofs_in_loops):
         symbol_names = ','.join(dofs_in_loops)
-        condition_str = remove_brackets(generate_c(conditional.condition_expr))
+        condition_str = CustomSympyPrinter().doprint(conditional.condition_expr)
+        condition_str = remove_brackets(condition_str)
         condition_set = isl.BasicSet(f"{{ [{symbol_names}] : {condition_str} }}")
 
         if condition_set.is_empty():
diff --git a/pystencils/transformations.py b/pystencils/transformations.py
index 50ee67f7a..c022e728d 100644
--- a/pystencils/transformations.py
+++ b/pystencils/transformations.py
@@ -772,7 +772,7 @@ def simplify_conditionals(node: ast.Node, loop_counter_simplification: bool = Fa
                                      default.
     """
     for conditional in node.atoms(ast.Conditional):
-        # TODO simplify conditional before the type system!
+        # TODO simplify conditional before the type system! Casts make it very hard here
         # conditional.condition_expr = sp.simplify(conditional.condition_expr)
         if conditional.condition_expr == sp.true:
             conditional.parent.replace(conditional, [conditional.true_block])
@@ -781,7 +781,6 @@ def simplify_conditionals(node: ast.Node, loop_counter_simplification: bool = Fa
         elif loop_counter_simplification:
             try:
                 # noinspection PyUnresolvedReferences
-                raise ImportError
                 from pystencils.integer_set_analysis import simplify_loop_counter_dependent_conditional
                 simplify_loop_counter_dependent_conditional(conditional)
             except ImportError:
-- 
GitLab