[llvm] r302769 - [SCEV] Reduce possible APInt allocations a bit.

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Wed May 10 23:48:54 PDT 2017


Author: ctopper
Date: Thu May 11 01:48:54 2017
New Revision: 302769

URL: http://llvm.org/viewvc/llvm-project?rev=302769&view=rev
Log:
[SCEV] Reduce possible APInt allocations a bit.

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=302769&r1=302768&r2=302769&view=diff
==============================================================================
--- llvm/trunk/lib/Analysis/ScalarEvolution.cpp (original)
+++ llvm/trunk/lib/Analysis/ScalarEvolution.cpp Thu May 11 01:48:54 2017
@@ -7377,15 +7377,18 @@ SolveQuadraticEquation(const SCEVAddRecE
   const APInt &N = NC->getAPInt();
   APInt Two(BitWidth, 2);
 
-  const APInt& C = L;
   // Convert from chrec coefficients to polynomial coefficients AX^2+BX+C
-  // The B coefficient is M-N/2
-  APInt B(M);
-  B -= N.sdiv(Two);
 
   // The A coefficient is N/2
   APInt A(N.sdiv(Two));
 
+  // The B coefficient is M-N/2
+  APInt B(M);
+  B -= A; // A is the same as N/2.
+
+  // The C coefficient is L.
+  const APInt& C = L;
+
   // Compute the B^2-4ac term.
   APInt SqrtTerm(B);
   SqrtTerm *= B;
@@ -7402,9 +7405,10 @@ SolveQuadraticEquation(const SCEVAddRecE
 
   // Compute the two solutions for the quadratic formula.
   // The divisions must be performed as signed divisions.
-  APInt NegB(-B);
-  APInt TwoA(A << 1);
-  if (TwoA.isMinValue())
+  APInt NegB(-std::move(B));
+  APInt TwoA(std::move(A));
+  TwoA <<= 1;
+  if (TwoA.isNullValue())
     return None;
 
   LLVMContext &Context = SE.getContext();




More information about the llvm-commits mailing list