LangRef explicitly guarantees that sret memory can be both read and written (which makes sense, given how the whole point of sret is that it will be written to):
This pointer must be guaranteed by the caller to be valid: loads and stores to the structure may be assumed by the callee not to trap and to be properly aligned.
Together with the noalias attribute this makes store promotion on sret memory legal, even if there are no unconditional stores.
If you want to be a bit more aggressive here, I believe that every dereferenceable argument satisfies this requirement. Note that this is specific to the deref globally semantic, not the defer at point semantic. Since the split on that never got through review, you probably don't want to rely on that.
You could directly implement the "at point" semantics here - which would be safe - by using dereferenceability in combination with !Value::canBeFreed. We do have precedent for this in several places already.