[Loads] Support SCEVAddExpr as start for pointer AddRec.
authorFlorian Hahn <flo@fhahn.com>
Sun, 2 Apr 2023 11:33:43 +0000 (12:33 +0100)
committerFlorian Hahn <flo@fhahn.com>
Sun, 2 Apr 2023 11:33:44 +0000 (12:33 +0100)
commit0d61ffd350a5d5367ee2f35ee5a98223aa8e6be3
treea8a094cc956563d1c83aa274ec8dad58deb7430d
parentaeee4ebd689171c963aa5d973e14cb6e731eb147
[Loads] Support SCEVAddExpr as start for pointer AddRec.

Extend handling to support `%base + offset` as start for AddRecs in
isDereferenceableAndAlignedInLoop. This is done by adjusting AccessSize
by the offset and effectively checking if the full object starting from
%base to %base + offset + access-size is dereferenceable.

Reviewed By: nikic

Differential Revision: https://reviews.llvm.org/D147260
llvm/lib/Analysis/Loads.cpp
llvm/test/Transforms/LoopVectorize/X86/load-deref-pred.ll
llvm/test/Transforms/LoopVectorize/load-of-struct-deref-pred.ll