From ada33d729b6d83523fdc27efe56a3958b497a5aa Mon Sep 17 00:00:00 2001 From: Craig Topper Date: Thu, 11 May 2017 06:48:54 +0000 Subject: [PATCH] [SCEV] Reduce possible APInt allocations a bit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302769 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Analysis/ScalarEvolution.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/lib/Analysis/ScalarEvolution.cpp b/lib/Analysis/ScalarEvolution.cpp index 76da5bd057f..17fb979f50f 100644 --- a/lib/Analysis/ScalarEvolution.cpp +++ b/lib/Analysis/ScalarEvolution.cpp @@ -7377,15 +7377,18 @@ SolveQuadraticEquation(const SCEVAddRecExpr *AddRec, ScalarEvolution &SE) { 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 SCEVAddRecExpr *AddRec, ScalarEvolution &SE) { // 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(); -- 2.50.1