[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