This is part of the series started by D9375, and teaches ScalarEvolution to look through the intrinsic. This is necessary, for example, so that loop vectorization can proceed even with llvm.noalias intrinsics inside the loop.
While, in theory, this could lead to rewriting which removes the intrinsics, I think this is unlikely in practice except very late in the pipeline (by LoopVectorize, LSR, etc.), and we can deal with these passes specifically if that turns out to be a problem.