For scalar accesses, change the access target to an array element that is known to contain the same value.
This may become an alternative to forwardKnownLoad which creates new loads (and therefore closer to forwarding speculatives). Reloading does not require the known value originating from a load, but can be a store as well.
The next level would be to materialize the known content's llvm::Value, if possible, without necessarily having any memory accessed at all.