[PATCH] D23846: [MemCpy] Check for alias in performMemCpyToMemSetOptzn, instead of the identity of two operands

Eric Christopher via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 25 13:52:57 PDT 2016


echristo added inline comments.

================
Comment at: llvm/trunk/lib/Transforms/Scalar/MemCpyOptimizer.cpp:1111
@@ -1110,1 +1110,3 @@
                                                MemSetInst *MemSet) {
+  AliasAnalysis &AA = LookupAliasAnalysis();
+
----------------
Can probably fold this into the conditional since this is the only place it's used.

================
Comment at: llvm/trunk/lib/Transforms/Scalar/MemCpyOptimizer.cpp:1114
@@ -1111,3 +1113,3 @@
   // This only makes sense on memcpy(..., memset(...), ...).
-  if (MemSet->getRawDest() != MemCpy->getRawSource())
+  if (!AA.isMustAlias(MemSet->getRawDest(), MemCpy->getRawSource()))
     return false;
----------------
Document why you care about MustAlias here.

================
Comment at: llvm/trunk/test/Transforms/MemCpyOpt/pr29105.ll:4
@@ +3,3 @@
+
+; CHECK-LABEL: @baz(
+; CHECK-NOT: call void @llvm.memcpy
----------------
Comment on what you're testing.


Repository:
  rL LLVM

https://reviews.llvm.org/D23846





More information about the llvm-commits mailing list