[llvm] r302334 - [SCEV] Use std::move to avoid some APInt copies.

David Blaikie via llvm-commits llvm-commits at lists.llvm.org
Mon May 8 11:18:03 PDT 2017


On Mon, May 8, 2017 at 10:32 AM Craig Topper <craig.topper at gmail.com> wrote:

> They are required to be the same width so the buffer is the same size. I
> just did it for symmetry, but you're right that could be confusing. I'll go
> drop one of them.
>

If you reckon the symmetry's better - totally up to you. Just figured I'd
mention it - could see it going either way. :)


>
> ~Craig
>
> On Mon, May 8, 2017 at 10:19 AM, David Blaikie <dblaikie at gmail.com> wrote:
>
>> Is it useful to std::move both sides of a binary operator like that? Or
>> is it equivalent/enough to move only the LHS?
>>
>> I mean I can appreciate the symmetry too, but it strikes me when reading
>> it as surprising "wait, is there something weird going on that this could
>> use both left and right data"?
>>
>> I guess maybe it can take memory from either if one has a larger internal
>> buffer?
>>
>> On Fri, May 5, 2017 at 10:36 PM Craig Topper via llvm-commits <
>> llvm-commits at lists.llvm.org> wrote:
>>
>>> Author: ctopper
>>> Date: Sat May  6 00:22:56 2017
>>> New Revision: 302334
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=302334&view=rev
>>> Log:
>>> [SCEV] Use std::move to avoid some APInt copies.
>>>
>>> Modified:
>>>     llvm/trunk/lib/Analysis/ScalarEvolution.cpp
>>>
>>> Modified: llvm/trunk/lib/Analysis/ScalarEvolution.cpp
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/ScalarEvolution.cpp?rev=302334&r1=302333&r2=302334&view=diff
>>>
>>> ==============================================================================
>>> --- llvm/trunk/lib/Analysis/ScalarEvolution.cpp (original)
>>> +++ llvm/trunk/lib/Analysis/ScalarEvolution.cpp Sat May  6 00:22:56 2017
>>> @@ -2970,7 +2970,7 @@ static const APInt gcd(const SCEVConstan
>>>    else if (ABW < BBW)
>>>      A = A.zext(BBW);
>>>
>>> -  return APIntOps::GreatestCommonDivisor(A, B);
>>> +  return APIntOps::GreatestCommonDivisor(std::move(A), std::move(B));
>>>  }
>>>
>>>  /// Get a canonical unsigned division expression, or something simpler
>>> if
>>> @@ -8980,7 +8980,7 @@ bool ScalarEvolution::doesIVOverflowOnLT
>>>                                  .getSignedMax();
>>>
>>>      // SMaxRHS + SMaxStrideMinusOne > SMaxValue => overflow!
>>> -    return (MaxValue - MaxStrideMinusOne).slt(MaxRHS);
>>> +    return (std::move(MaxValue) -
>>> std::move(MaxStrideMinusOne)).slt(MaxRHS);
>>>    }
>>>
>>>    APInt MaxRHS = getUnsignedRange(RHS).getUnsignedMax();
>>> @@ -8989,7 +8989,7 @@ bool ScalarEvolution::doesIVOverflowOnLT
>>>                                .getUnsignedMax();
>>>
>>>    // UMaxRHS + UMaxStrideMinusOne > UMaxValue => overflow!
>>> -  return (MaxValue - MaxStrideMinusOne).ult(MaxRHS);
>>> +  return (std::move(MaxValue) -
>>> std::move(MaxStrideMinusOne)).ult(MaxRHS);
>>>  }
>>>
>>>  bool ScalarEvolution::doesIVOverflowOnGT(const SCEV *RHS, const SCEV
>>> *Stride,
>>> @@ -9006,7 +9006,7 @@ bool ScalarEvolution::doesIVOverflowOnGT
>>>                                 .getSignedMax();
>>>
>>>      // SMinRHS - SMaxStrideMinusOne < SMinValue => overflow!
>>> -    return (MinValue + MaxStrideMinusOne).sgt(MinRHS);
>>> +    return (std::move(MinValue) +
>>> std::move(MaxStrideMinusOne)).sgt(MinRHS);
>>>    }
>>>
>>>    APInt MinRHS = getUnsignedRange(RHS).getUnsignedMin();
>>> @@ -9015,7 +9015,7 @@ bool ScalarEvolution::doesIVOverflowOnGT
>>>                              .getUnsignedMax();
>>>
>>>    // UMinRHS - UMaxStrideMinusOne < UMinValue => overflow!
>>> -  return (MinValue + MaxStrideMinusOne).ugt(MinRHS);
>>> +  return (std::move(MinValue) +
>>> std::move(MaxStrideMinusOne)).ugt(MinRHS);
>>>  }
>>>
>>>  const SCEV *ScalarEvolution::computeBECount(const SCEV *Delta, const
>>> SCEV *Step,
>>>
>>>
>>> _______________________________________________
>>> llvm-commits mailing list
>>> llvm-commits at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170508/42c8f7c2/attachment.html>


More information about the llvm-commits mailing list