[PATCH] [LoopDist/LoopVer] Move LoopVersioning to a new module, NFC

Ashutosh Nema ashutosh.nema at amd.com
Thu Jul 2 02:51:26 PDT 2015


memcheck no-alias resulting branch is original loop(VersionedLoop).
& memcheck alias resulting branch is newly created loop(NonVersionedLoop).

Any specific reason you kept memcheck branch target like this ?

Why can't memcheck no-alias resulting branch targets to NonVersionedLoop
and alias resulting branch targets to VersionedLoop ?

In current implementation if loopVersioningLICM attempts to set no-alias attribute to the VersionedLoop
that is actually it will set no-alias attribute to the original loop.

I'm doubtful here because the variables of the original loop might be used out of loop in that function. 
after setting no-alias it might change the intent of program.

My understanding might be wrong here, please clarify.


================
Comment at: include/llvm/Transforms/Utils/LoopVersioning.h:67
@@ +66,3 @@
+  /// \brief The original loop.  This becomes the "versioned" one, i.e. control
+  /// goes if the memchecks all pass.
+  Loop *VersionedLoop;
----------------
Its more clear if we expand meaning of memcheck pass & fail.
i.e. memory/pointers [non]aliased in loop.

================
Comment at: include/llvm/Transforms/Utils/LoopVersioning.h:71
@@ +70,3 @@
+  Loop *NonVersionedLoop;
+
+  /// \brief For each memory pointer it contains the partitionId it is used in.
----------------
Can we expose NonVersionedLoop & VersionedLoop, or provide getter functions for these.
Loop versioning need these to set meta data.

http://reviews.llvm.org/D10577

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/






More information about the llvm-commits mailing list