This is part of the series started by D68484.
The ptr_provenance parameter tracks dependencies on noalias intrinsics without
blocking optimizations on the pointer value.
Note: the space for the optional ptr_provenance argument will always be reserved for each LoadInst/StoreInst.
Note: this is a stable point and tests should run fine with the patches applied up to this point.
Are there Instruction/Value subclasses already, that define non-trivial destructor?
I think this may be a problem for bumpptr allocators.