[HWToLLVM] Do not take illegal shortcut in array_get lowering.
#9172
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.
Should fix #9171.
Currently, the LLVM lowering of
hw.array_getwill attempt to reuse pointers to array values to avoid rematerializing the array on the stack. This is only legal as long as we can ensure the underlying buffer remains unchanged. It works within the confines of the HWToLLVM lowering, which always allocates a new buffer when modifying an array (see #8774). However, operations of other dialects (e.g.,arc.state_write) might still write to the pointed-to buffer between theloadand thearray_get, causing it to return an incorrect value.