mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-18 13:34:04 +00:00
Analysis: unique_ptr-ify DependenceAnalysis::depends
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216357 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
75129f6f4c
commit
fe2cc2d8cc
@ -287,9 +287,9 @@ namespace llvm {
|
||||
/// The flag PossiblyLoopIndependent should be set by the caller
|
||||
/// if it appears that control flow can reach from Src to Dst
|
||||
/// without traversing a loop back edge.
|
||||
Dependence *depends(Instruction *Src,
|
||||
Instruction *Dst,
|
||||
bool PossiblyLoopIndependent);
|
||||
std::unique_ptr<Dependence> depends(Instruction *Src,
|
||||
Instruction *Dst,
|
||||
bool PossiblyLoopIndependent);
|
||||
|
||||
/// getSplitIteration - Give a dependence that's splittable at some
|
||||
/// particular level, return the iteration that should be used to split
|
||||
|
@ -163,7 +163,7 @@ void dumpExampleDependence(raw_ostream &OS, Function *F,
|
||||
DstI != DstE; ++DstI) {
|
||||
if (isa<StoreInst>(*DstI) || isa<LoadInst>(*DstI)) {
|
||||
OS << "da analyze - ";
|
||||
if (Dependence *D = DA->depends(&*SrcI, &*DstI, true)) {
|
||||
if (auto D = DA->depends(&*SrcI, &*DstI, true)) {
|
||||
D->dump(OS);
|
||||
for (unsigned Level = 1; Level <= D->getLevels(); Level++) {
|
||||
if (D->isSplitable(Level)) {
|
||||
@ -172,7 +172,6 @@ void dumpExampleDependence(raw_ostream &OS, Function *F,
|
||||
OS << "!\n";
|
||||
}
|
||||
}
|
||||
delete D;
|
||||
}
|
||||
else
|
||||
OS << "none!\n";
|
||||
@ -3277,9 +3276,9 @@ static void dumpSmallBitVector(SmallBitVector &BV) {
|
||||
//
|
||||
// Care is required to keep the routine below, getSplitIteration(),
|
||||
// up to date with respect to this routine.
|
||||
Dependence *DependenceAnalysis::depends(Instruction *Src,
|
||||
Instruction *Dst,
|
||||
bool PossiblyLoopIndependent) {
|
||||
std::unique_ptr<Dependence>
|
||||
DependenceAnalysis::depends(Instruction *Src, Instruction *Dst,
|
||||
bool PossiblyLoopIndependent) {
|
||||
if (Src == Dst)
|
||||
PossiblyLoopIndependent = false;
|
||||
|
||||
@ -3291,7 +3290,7 @@ Dependence *DependenceAnalysis::depends(Instruction *Src,
|
||||
if (!isLoadOrStore(Src) || !isLoadOrStore(Dst)) {
|
||||
// can only analyze simple loads and stores, i.e., no calls, invokes, etc.
|
||||
DEBUG(dbgs() << "can only handle simple loads and stores\n");
|
||||
return new Dependence(Src, Dst);
|
||||
return make_unique<Dependence>(Src, Dst);
|
||||
}
|
||||
|
||||
Value *SrcPtr = getPointerOperand(Src);
|
||||
@ -3302,7 +3301,7 @@ Dependence *DependenceAnalysis::depends(Instruction *Src,
|
||||
case AliasAnalysis::PartialAlias:
|
||||
// cannot analyse objects if we don't understand their aliasing.
|
||||
DEBUG(dbgs() << "can't analyze may or partial alias\n");
|
||||
return new Dependence(Src, Dst);
|
||||
return make_unique<Dependence>(Src, Dst);
|
||||
case AliasAnalysis::NoAlias:
|
||||
// If the objects noalias, they are distinct, accesses are independent.
|
||||
DEBUG(dbgs() << "no alias\n");
|
||||
@ -3675,7 +3674,8 @@ Dependence *DependenceAnalysis::depends(Instruction *Src,
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
FullDependence *Final = new FullDependence(Result);
|
||||
std::unique_ptr<Dependence> Final;
|
||||
Final.reset(new FullDependence(Result));
|
||||
Result.DV = nullptr;
|
||||
return Final;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user