]> granicus.if.org Git - llvm/commitdiff
[CGP] pass size as param in MemCmpExpansion; NFCI
authorSanjay Patel <spatel@rotateright.com>
Wed, 7 Jun 2017 15:05:13 +0000 (15:05 +0000)
committerSanjay Patel <spatel@rotateright.com>
Wed, 7 Jun 2017 15:05:13 +0000 (15:05 +0000)
Avoid extracting the constant int twice.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304920 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CodeGenPrepare.cpp

index 85c6787cd55e424e477a60f3e6917263fb07cdeb..84719f204857c1e07c1ac17518fdbd50b532d7e5 100644 (file)
@@ -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::ResultBlock()
 // 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, const TargetTransformInfo *TTI,
 
   // 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, const TargetTransformInfo *TTI,
   // 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());