Prevent offset access with block arrays to thwart dynamic ALA #25933
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR makes sure that ALA is applicable for:
Things of note:
InnerDomain
andA.domain
are aligned.A[i]
) and offset (A[i-1]
) access, where the latter is not optimizable for a block-distributed arrayThe problem is, #25712 modified the dynamic checks in scenarios like this. After that PR, the generated optimization looked like
Note that ALA has static override (
!staticRegularFlag ||
part) which allows optimization and the dynamic checks to be reverted in case a static check fails. This allows some accesses to be optimized while some others fails. However, the same override is not there for the offset check. This PR adds a similar!staticOffsetFlag ||
for similar purposes. This allowsA[i]
to be optimized as before whileA[i-1]
is not.Test: