From c5771c214e640dd9ec27095869cb9bfa90261c0a Mon Sep 17 00:00:00 2001 From: David Blaikie Date: Tue, 3 Mar 2015 19:20:16 +0000 Subject: [PATCH] FullDependenceAnalysis: Avoid using the (deprecated in C++11) copy ctor llvm-svn: 231103 --- llvm/lib/Analysis/DependenceAnalysis.cpp | 45 ++++++++++++++++---------------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/llvm/lib/Analysis/DependenceAnalysis.cpp b/llvm/lib/Analysis/DependenceAnalysis.cpp index 8120045..393ee5c 100644 --- a/llvm/lib/Analysis/DependenceAnalysis.cpp +++ b/llvm/lib/Analysis/DependenceAnalysis.cpp @@ -3334,7 +3334,8 @@ DependenceAnalysis::depends(Instruction *Src, Instruction *Dst, DEBUG(dbgs() << " common nesting levels = " << CommonLevels << "\n"); DEBUG(dbgs() << " maximum nesting levels = " << MaxLevels << "\n"); - FullDependence Result(Src, Dst, PossiblyLoopIndependent, CommonLevels); + auto Result = llvm::make_unique( + Src, Dst, PossiblyLoopIndependent, CommonLevels); ++TotalArrayPairs; // See if there are GEPs we can use. @@ -3472,7 +3473,7 @@ DependenceAnalysis::depends(Instruction *Src, Instruction *Dst, collectCommonLoops(Pair[SI].Dst, LI->getLoopFor(Dst->getParent()), Pair[SI].Loops); - Result.Consistent = false; + Result->Consistent = false; } else if (Pair[SI].Classification == Subscript::ZIV) { // always separable @@ -3519,26 +3520,26 @@ DependenceAnalysis::depends(Instruction *Src, Instruction *Dst, switch (Pair[SI].Classification) { case Subscript::ZIV: DEBUG(dbgs() << ", ZIV\n"); - if (testZIV(Pair[SI].Src, Pair[SI].Dst, Result)) + if (testZIV(Pair[SI].Src, Pair[SI].Dst, *Result)) return nullptr; break; case Subscript::SIV: { DEBUG(dbgs() << ", SIV\n"); unsigned Level; const SCEV *SplitIter = nullptr; - if (testSIV(Pair[SI].Src, Pair[SI].Dst, Level, - Result, NewConstraint, SplitIter)) + if (testSIV(Pair[SI].Src, Pair[SI].Dst, Level, *Result, NewConstraint, + SplitIter)) return nullptr; break; } case Subscript::RDIV: DEBUG(dbgs() << ", RDIV\n"); - if (testRDIV(Pair[SI].Src, Pair[SI].Dst, Result)) + if (testRDIV(Pair[SI].Src, Pair[SI].Dst, *Result)) return nullptr; break; case Subscript::MIV: DEBUG(dbgs() << ", MIV\n"); - if (testMIV(Pair[SI].Src, Pair[SI].Dst, Pair[SI].Loops, Result)) + if (testMIV(Pair[SI].Src, Pair[SI].Dst, Pair[SI].Loops, *Result)) return nullptr; break; default: @@ -3575,8 +3576,8 @@ DependenceAnalysis::depends(Instruction *Src, Instruction *Dst, unsigned Level; const SCEV *SplitIter = nullptr; DEBUG(dbgs() << "SIV\n"); - if (testSIV(Pair[SJ].Src, Pair[SJ].Dst, Level, - Result, NewConstraint, SplitIter)) + if (testSIV(Pair[SJ].Src, Pair[SJ].Dst, Level, *Result, NewConstraint, + SplitIter)) return nullptr; ConstrainedLevels.set(Level); if (intersectConstraints(&Constraints[Level], &NewConstraint)) { @@ -3597,7 +3598,7 @@ DependenceAnalysis::depends(Instruction *Src, Instruction *Dst, // SJ is an MIV subscript that's part of the current coupled group DEBUG(dbgs() << "\tSJ = " << SJ << "\n"); if (propagate(Pair[SJ].Src, Pair[SJ].Dst, Pair[SJ].Loops, - Constraints, Result.Consistent)) { + Constraints, Result->Consistent)) { DEBUG(dbgs() << "\t Changed\n"); ++DeltaPropagations; Pair[SJ].Classification = @@ -3607,7 +3608,7 @@ DependenceAnalysis::depends(Instruction *Src, Instruction *Dst, switch (Pair[SJ].Classification) { case Subscript::ZIV: DEBUG(dbgs() << "ZIV\n"); - if (testZIV(Pair[SJ].Src, Pair[SJ].Dst, Result)) + if (testZIV(Pair[SJ].Src, Pair[SJ].Dst, *Result)) return nullptr; Mivs.reset(SJ); break; @@ -3630,7 +3631,7 @@ DependenceAnalysis::depends(Instruction *Src, Instruction *Dst, for (int SJ = Mivs.find_first(); SJ >= 0; SJ = Mivs.find_next(SJ)) { if (Pair[SJ].Classification == Subscript::RDIV) { DEBUG(dbgs() << "RDIV test\n"); - if (testRDIV(Pair[SJ].Src, Pair[SJ].Dst, Result)) + if (testRDIV(Pair[SJ].Src, Pair[SJ].Dst, *Result)) return nullptr; // I don't yet understand how to propagate RDIV results Mivs.reset(SJ); @@ -3643,19 +3644,19 @@ DependenceAnalysis::depends(Instruction *Src, Instruction *Dst, for (int SJ = Mivs.find_first(); SJ >= 0; SJ = Mivs.find_next(SJ)) { if (Pair[SJ].Classification == Subscript::MIV) { DEBUG(dbgs() << "MIV test\n"); - if (testMIV(Pair[SJ].Src, Pair[SJ].Dst, Pair[SJ].Loops, Result)) + if (testMIV(Pair[SJ].Src, Pair[SJ].Dst, Pair[SJ].Loops, *Result)) return nullptr; } else llvm_unreachable("expected only MIV subscripts at this point"); } - // update Result.DV from constraint vector + // update Result->DV from constraint vector DEBUG(dbgs() << " updating\n"); for (int SJ = ConstrainedLevels.find_first(); SJ >= 0; SJ = ConstrainedLevels.find_next(SJ)) { - updateDirection(Result.DV[SJ - 1], Constraints[SJ]); - if (Result.DV[SJ - 1].Direction == Dependence::DVEntry::NONE) + updateDirection(Result->DV[SJ - 1], Constraints[SJ]); + if (Result->DV[SJ - 1].Direction == Dependence::DVEntry::NONE) return nullptr; } } @@ -3667,15 +3668,15 @@ DependenceAnalysis::depends(Instruction *Src, Instruction *Dst, CompleteLoops |= Pair[SI].Loops; for (unsigned II = 1; II <= CommonLevels; ++II) if (CompleteLoops[II]) - Result.DV[II - 1].Scalar = false; + Result->DV[II - 1].Scalar = false; if (PossiblyLoopIndependent) { // Make sure the LoopIndependent flag is set correctly. // All directions must include equal, otherwise no // loop-independent dependence is possible. for (unsigned II = 1; II <= CommonLevels; ++II) { - if (!(Result.getDirection(II) & Dependence::DVEntry::EQ)) { - Result.LoopIndependent = false; + if (!(Result->getDirection(II) & Dependence::DVEntry::EQ)) { + Result->LoopIndependent = false; break; } } @@ -3685,7 +3686,7 @@ DependenceAnalysis::depends(Instruction *Src, Instruction *Dst, // loop-independent dependence possible, then no dependence exists. bool AllEqual = true; for (unsigned II = 1; II <= CommonLevels; ++II) { - if (Result.getDirection(II) != Dependence::DVEntry::EQ) { + if (Result->getDirection(II) != Dependence::DVEntry::EQ) { AllEqual = false; break; } @@ -3694,9 +3695,7 @@ DependenceAnalysis::depends(Instruction *Src, Instruction *Dst, return nullptr; } - auto Final = make_unique(Result); - Result.DV = nullptr; - return std::move(Final); + return std::move(Result); } -- 2.7.4