Analysis: unique_ptr-ify DependenceAnalysis::collectCoeffInfo
authorDylan Noblesmith <nobled@dreamwidth.org>
Mon, 25 Aug 2014 00:28:43 +0000 (00:28 +0000)
committerDylan Noblesmith <nobled@dreamwidth.org>
Mon, 25 Aug 2014 00:28:43 +0000 (00:28 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216358 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Analysis/DependenceAnalysis.h
lib/Analysis/DependenceAnalysis.cpp

index a52d6a8ef2d8e6a07160e326a345509ba6078a0c..d032a418366fa32357275378de4904b95c5cbff2 100644 (file)
@@ -766,9 +766,10 @@ namespace llvm {
     /// collectCoefficientInfo - Walks through the subscript,
     /// collecting each coefficient, the associated loop bounds,
     /// and recording its positive and negative parts for later use.
-    CoefficientInfo *collectCoeffInfo(const SCEV *Subscript,
-                                      bool SrcFlag,
-                                      const SCEV *&Constant) const;
+    std::unique_ptr<CoefficientInfo[]>
+    collectCoeffInfo(const SCEV *Subscript,
+                     bool SrcFlag,
+                     const SCEV *&Constant) const;
 
     /// getPositivePart - X^+ = max(X, 0).
     ///
index be4e487a149201a32f8a0db679a6aea41a9dd766..8120736885ca158354211209f3cd3e8d7df42385 100644 (file)
@@ -2437,11 +2437,14 @@ bool DependenceAnalysis::banerjeeMIVtest(const SCEV *Src,
   ++BanerjeeApplications;
   DEBUG(dbgs() << "    Src = " << *Src << '\n');
   const SCEV *A0;
-  CoefficientInfo *A = collectCoeffInfo(Src, true, A0);
+  auto AOwner = collectCoeffInfo(Src, true, A0);
+  auto A = AOwner.get();
   DEBUG(dbgs() << "    Dst = " << *Dst << '\n');
   const SCEV *B0;
-  CoefficientInfo *B = collectCoeffInfo(Dst, false, B0);
-  BoundInfo *Bound = new BoundInfo[MaxLevels + 1];
+  auto BOwner = collectCoeffInfo(Dst, false, B0);
+  auto B = BOwner.get();
+  auto BoundOwner = make_unique<BoundInfo[]>(MaxLevels + 1);
+  auto Bound = BoundOwner.get();
   const SCEV *Delta = SE->getMinusSCEV(B0, A0);
   DEBUG(dbgs() << "\tDelta = " << *Delta << '\n');
 
@@ -2498,9 +2501,6 @@ bool DependenceAnalysis::banerjeeMIVtest(const SCEV *Src,
     ++BanerjeeIndependence;
     Disproved = true;
   }
-  delete [] Bound;
-  delete [] A;
-  delete [] B;
   return Disproved;
 }
 
@@ -2818,12 +2818,12 @@ const SCEV *DependenceAnalysis::getNegativePart(const SCEV *X) const {
 // Walks through the subscript,
 // collecting each coefficient, the associated loop bounds,
 // and recording its positive and negative parts for later use.
-DependenceAnalysis::CoefficientInfo *
+std::unique_ptr<DependenceAnalysis::CoefficientInfo[]>
 DependenceAnalysis::collectCoeffInfo(const SCEV *Subscript,
                                      bool SrcFlag,
                                      const SCEV *&Constant) const {
   const SCEV *Zero = SE->getConstant(Subscript->getType(), 0);
-  CoefficientInfo *CI = new CoefficientInfo[MaxLevels + 1];
+  auto CI = make_unique<CoefficientInfo[]>(MaxLevels + 1);
   for (unsigned K = 1; K <= MaxLevels; ++K) {
     CI[K].Coeff = Zero;
     CI[K].PosPart = Zero;