[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