From 6c7492ee534e62a16f6b88a0b10385d92e51b102 Mon Sep 17 00:00:00 2001
From: Frederik Hennig <frederik.hennig@fau.de>
Date: Thu, 7 Nov 2024 08:54:55 +0100
Subject: [PATCH] Fix AST cloning in loop vectorizer. Add missing docstring.

---
 src/pystencils/backend/ast/vector.py                      | 2 ++
 src/pystencils/backend/transformations/loop_vectorizer.py | 6 +++---
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/pystencils/backend/ast/vector.py b/src/pystencils/backend/ast/vector.py
index 36217fa2c..84875c604 100644
--- a/src/pystencils/backend/ast/vector.py
+++ b/src/pystencils/backend/ast/vector.py
@@ -50,6 +50,8 @@ class PsVecMemAcc(PsExpression, PsLvalue, PsVectorOp):
         offset: Offset inside the memory region
         vector_entries: Number of elements to access
         stride: Optional integer step size for strided access, or ``None`` for contiguous access
+        aligned: For contiguous accesses, whether the access is guaranteed to be naturally aligned
+            according to the vector data type
     """
 
     __match_args__ = ("pointer", "offset", "vector_entries", "stride", "aligned")
diff --git a/src/pystencils/backend/transformations/loop_vectorizer.py b/src/pystencils/backend/transformations/loop_vectorizer.py
index 9ee6ec366..e01e657e3 100644
--- a/src/pystencils/backend/transformations/loop_vectorizer.py
+++ b/src/pystencils/backend/transformations/loop_vectorizer.py
@@ -187,13 +187,13 @@ class LoopVectorizer:
 
                 trailing_ctr = self._ctx.duplicate_symbol(scalar_ctr)
                 trailing_loop_body = substitute_symbols(
-                    loop.body, {scalar_ctr: PsExpression.make(trailing_ctr)}
+                    loop.body.clone(), {scalar_ctr: PsExpression.make(trailing_ctr)}
                 )
                 trailing_loop = PsLoop(
                     PsExpression.make(trailing_ctr),
                     PsExpression.make(trailing_start),
-                    loop.stop,
-                    loop.step,
+                    loop.stop.clone(),
+                    loop.step.clone(),
                     trailing_loop_body,
                 )
 
-- 
GitLab