[llvm] r304920 - [CGP] pass size as param in MemCmpExpansion; NFCI

Sanjay Patel via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 7 08:05:14 PDT 2017


Author: spatel
Date: Wed Jun  7 10:05:13 2017
New Revision: 304920

URL: http://llvm.org/viewvc/llvm-project?rev=304920&view=rev
Log:
[CGP] pass size as param in MemCmpExpansion; NFCI

Avoid extracting the constant int twice.

Modified:
    llvm/trunk/lib/CodeGen/CodeGenPrepare.cpp

Modified: llvm/trunk/lib/CodeGen/CodeGenPrepare.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/CodeGenPrepare.cpp?rev=304920&r1=304919&r2=304920&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/CodeGenPrepare.cpp (original)
+++ llvm/trunk/lib/CodeGen/CodeGenPrepare.cpp Wed Jun  7 10:05:13 2017
@@ -1679,7 +1679,7 @@ class MemCmpExpansion {
   unsigned getNumLoads(unsigned Size);
 
 public:
-  MemCmpExpansion(CallInst *CI, unsigned MaxLoadSize,
+  MemCmpExpansion(CallInst *CI, uint64_t Size, unsigned MaxLoadSize,
                   unsigned NumLoadsPerBlock);
   Value *getMemCmpExpansion(uint64_t Size, bool IsLittleEndian);
 };
@@ -1695,20 +1695,16 @@ MemCmpExpansion::ResultBlock::ResultBloc
 // return from.
 // 3. ResultBlock, block to branch to for early exit when a
 // LoadCmpBlock finds a difference.
-MemCmpExpansion::MemCmpExpansion(CallInst *CI, unsigned MaxLoadSize,
-                                 unsigned NumLoadsPerBlock)
-    : CI(CI), MaxLoadSize(MaxLoadSize), NumLoadsPerBlock(NumLoadsPerBlock) {
+MemCmpExpansion::MemCmpExpansion(CallInst *CI, uint64_t Size,
+                                 unsigned MaxLoadSize, unsigned LoadsPerBlock)
+    : CI(CI), MaxLoadSize(MaxLoadSize), NumLoadsPerBlock(LoadsPerBlock) {
 
   IRBuilder<> Builder(CI->getContext());
-
   BasicBlock *StartBlock = CI->getParent();
   EndBlock = StartBlock->splitBasicBlock(CI, "endblock");
   setupEndBlockPHINodes();
   IsUsedForZeroCmp = isOnlyUsedInZeroEqualityComparison(CI);
 
-  ConstantInt *SizeCast = dyn_cast<ConstantInt>(CI->getArgOperand(2));
-  uint64_t Size = SizeCast->getZExtValue();
-
   // Calculate how many load compare blocks are required for an expansion of
   // given Size.
   NumBlocks = calculateNumBlocks(Size);
@@ -2206,7 +2202,6 @@ static bool expandMemCmp(CallInst *CI, c
 
   // Early exit from expansion if size greater than max bytes to load.
   uint64_t SizeVal = SizeCast->getZExtValue();
-
   unsigned NumLoads = 0;
   unsigned RemainingSize = SizeVal;
   unsigned LoadSize = MaxLoadSize;
@@ -2226,7 +2221,7 @@ static bool expandMemCmp(CallInst *CI, c
   // MemCmpHelper object creates and sets up basic blocks required for
   // expanding memcmp with size SizeVal.
   unsigned NumLoadsPerBlock = MemCmpNumLoadsPerBlock;
-  MemCmpExpansion MemCmpHelper(CI, MaxLoadSize, NumLoadsPerBlock);
+  MemCmpExpansion MemCmpHelper(CI, SizeVal, MaxLoadSize, NumLoadsPerBlock);
 
   Value *Res = MemCmpHelper.getMemCmpExpansion(SizeVal, DL->isLittleEndian());
 




More information about the llvm-commits mailing list