You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It includes references to f3.so.y.yi, but it's outside of that loop. Note that f[1] calls f[0] in a weird way - it adds f[0] to an upsampled version of f[0]. This means the region required by one value of f[1] depends on an amount of f[0] that is a function of x and y.
The storage hoisting code looks like it explicitly tries to account for this, so I'm not sure what's going on.
The text was updated successfully, but these errors were encountered:
The problem is that bound_of_expr_in_scope is not recursive: when the storage is hoisted, the allocation extents may depend on the loop variables, so we find a maximum bound for them using bound_of_expr_in_scope and the scope which has intervals for each of the loop variables. However, the loop variables themselves may depend on the other loop variables in which case the extent still may refer to loop variables even after calling bound_of_expr_in_scope.
This code:
produces this compile-time error during codegen
The IR after storage flattening has the following size for the allocation of f[0]:
It includes references to f3.so.y.yi, but it's outside of that loop. Note that f[1] calls f[0] in a weird way - it adds f[0] to an upsampled version of f[0]. This means the region required by one value of f[1] depends on an amount of f[0] that is a function of x and y.
The storage hoisting code looks like it explicitly tries to account for this, so I'm not sure what's going on.
The text was updated successfully, but these errors were encountered: