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

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Mon May 8 10:32:28 PDT 2017


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.

~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/66f9ce8c/attachment.html>


More information about the llvm-commits mailing list