[PATCH] D68511: [PATCH 17/27] [noalias] Clone scopes and llvm.noalias.decl as needed during loop rotation.
Jeroen Dobbelaere via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Dec 18 01:20:19 PST 2020
jeroen.dobbelaere added inline comments.
================
Comment at: llvm/lib/Transforms/Utils/LoopRotationUtils.cpp:551
+ // (1) -> : ... D' { D U D'' }
+ // (2) -> : ... D' U' { D D'' U'' }
+ // D: original llvm.noalias.decl
----------------
barannikov88 wrote:
> Compared to the (2) above, the `U` element has disappeared. Is it intended?
Yes. in (2), U'' is already referring to a different iteration. It must be cloned, to make sure that it is treated different from load/stores that were hoisted outside the loop body (by a different pass). Those will still have the original 'D' dependency and 'U' related scope.
Of course, there is the situation that you have :
(1+2) ... { D U U }
-> ... D' U' { U D U }
-> ... D' U' { D U D'' U '' }
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D68511/new/
https://reviews.llvm.org/D68511
More information about the llvm-commits
mailing list