diff options
author | Sanjay Patel <spatel@rotateright.com> | 2017-06-07 15:05:13 +0000 |
---|---|---|
committer | Sanjay Patel <spatel@rotateright.com> | 2017-06-07 15:05:13 +0000 |
commit | cf531ca50c699f71ebbb73e2e489029ddceba273 (patch) | |
tree | b705b7e959c08d789d53080a756a23ce9591fac0 /llvm/lib/CodeGen/CodeGenPrepare.cpp | |
parent | cc07564a277db1f672a928981b1707d5e75ca282 (diff) | |
download | llvm-cf531ca50c699f71ebbb73e2e489029ddceba273.zip llvm-cf531ca50c699f71ebbb73e2e489029ddceba273.tar.gz llvm-cf531ca50c699f71ebbb73e2e489029ddceba273.tar.bz2 |
[CGP] pass size as param in MemCmpExpansion; NFCI
Avoid extracting the constant int twice.
llvm-svn: 304920
Diffstat (limited to 'llvm/lib/CodeGen/CodeGenPrepare.cpp')
-rw-r--r-- | llvm/lib/CodeGen/CodeGenPrepare.cpp | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/llvm/lib/CodeGen/CodeGenPrepare.cpp b/llvm/lib/CodeGen/CodeGenPrepare.cpp index 85c6787..84719f2 100644 --- a/llvm/lib/CodeGen/CodeGenPrepare.cpp +++ b/llvm/lib/CodeGen/CodeGenPrepare.cpp @@ -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()); |