From: George Burgess IV Date: Sun, 23 Dec 2018 06:40:39 +0000 (+0000) Subject: [MemCpyOpt] Use LocationSize instead of ints; NFC X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c03f924a0cad8c9f51e983fed72a791401d1a702;p=llvm [MemCpyOpt] Use LocationSize instead of ints; NFC Trying to keep these patches super small so they're easily post-commit verifiable, as requested in D44748. srcSize is derived from the size of an alloca, and we quit out if the size of that is > the size of the thing we're copying to. Hence, we should always copy everything over, so these sizes are precise. Don't make srcSize itself a LocationSize, since optionality isn't helpful, and we do some comparisons against other sizes elsewhere in that function. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@350019 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/Scalar/MemCpyOptimizer.cpp b/lib/Transforms/Scalar/MemCpyOptimizer.cpp index 2dd961b0280..3315181c51d 100644 --- a/lib/Transforms/Scalar/MemCpyOptimizer.cpp +++ b/lib/Transforms/Scalar/MemCpyOptimizer.cpp @@ -944,10 +944,10 @@ bool MemCpyOptPass::performCallSlotOptzn(Instruction *cpy, Value *cpyDest, // the use analysis, we also need to know that it does not sneakily // access dest. We rely on AA to figure this out for us. AliasAnalysis &AA = LookupAliasAnalysis(); - ModRefInfo MR = AA.getModRefInfo(C, cpyDest, srcSize); + ModRefInfo MR = AA.getModRefInfo(C, cpyDest, LocationSize::precise(srcSize)); // If necessary, perform additional analysis. if (isModOrRefSet(MR)) - MR = AA.callCapturesBefore(C, cpyDest, srcSize, &DT); + MR = AA.callCapturesBefore(C, cpyDest, LocationSize::precise(srcSize), &DT); if (isModOrRefSet(MR)) return false; @@ -1343,7 +1343,7 @@ bool MemCpyOptPass::processByValArgument(CallSite CS, unsigned ArgNo) { Type *ByValTy = cast(ByValArg->getType())->getElementType(); uint64_t ByValSize = DL.getTypeAllocSize(ByValTy); MemDepResult DepInfo = MD->getPointerDependencyFrom( - MemoryLocation(ByValArg, ByValSize), true, + MemoryLocation(ByValArg, LocationSize::precise(ByValSize)), true, CS.getInstruction()->getIterator(), CS.getInstruction()->getParent()); if (!DepInfo.isClobber()) return false;