@@ -34,7 +34,7 @@ function array_variable_assignments(args...)
34
34
# get and/or construct the buffer storing indexes
35
35
idxbuffer = get! (
36
36
() -> map (Returns ((0 , 0 )), eachindex (arrvar)), var_to_arridxs, arrvar)
37
- idxbuffer[arguments (var)[2 : end ]. .. ] = (i, j)
37
+ Origin ( first .( axes (arrvar)) ... )( idxbuffer) [arguments (var)[2 : end ]. .. ] = (i, j)
38
38
end
39
39
end
40
40
@@ -59,18 +59,22 @@ function array_variable_assignments(args...)
59
59
idxs = SArray {Tuple{size(idxs)...}} (idxs)
60
60
end
61
61
# view and reshape
62
- push! (assignments,
63
- arrvar ←
64
- term (reshape, term (view, generated_argument_name (buffer_idx), idxs),
65
- size (arrvar)))
62
+
63
+ expr = term (reshape, term (view, generated_argument_name (buffer_idx), idxs),
64
+ size (arrvar))
66
65
else
67
66
elems = map (idxs) do idx
68
67
i, j = idx
69
68
term (getindex, generated_argument_name (i), j)
70
69
end
71
- # use `MakeArray` and generate a stack-allocated array
72
- push! (assignments, arrvar ← MakeArray (elems, SArray))
70
+ # use `MakeArray` syntax and generate a stack-allocated array
71
+ expr = term (SymbolicUtils. Code. create_array, SArray, nothing ,
72
+ Val (ndims (arrvar)), Val (length (arrvar)), elems... )
73
+ end
74
+ if any (x -> ! isone (first (x)), axes (arrvar))
75
+ expr = term (Origin (first .(axes (arrvar))... ), expr)
73
76
end
77
+ push! (assignments, arrvar ← expr)
74
78
end
75
79
76
80
return assignments
0 commit comments