mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-12 13:38:21 +00:00
Replace uses of the deprecated std::auto_ptr with OwningPtr.
This is a rework of the broken parts in r179373 which were subsequently reverted in r179374 due to incompatibility with C++98 compilers. This version should be ok under C++98. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179520 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -34,6 +34,7 @@
|
||||
#include "llvm/CodeGen/RegAllocPBQP.h"
|
||||
#include "RegisterCoalescer.h"
|
||||
#include "Spiller.h"
|
||||
#include "llvm/ADT/OwningPtr.h"
|
||||
#include "llvm/Analysis/AliasAnalysis.h"
|
||||
#include "llvm/CodeGen/CalcSpillWeights.h"
|
||||
#include "llvm/CodeGen/LiveIntervalAnalysis.h"
|
||||
@ -89,8 +90,8 @@ public:
|
||||
static char ID;
|
||||
|
||||
/// Construct a PBQP register allocator.
|
||||
RegAllocPBQP(std::auto_ptr<PBQPBuilder> b, char *cPassID=0)
|
||||
: MachineFunctionPass(ID), builder(b), customPassID(cPassID) {
|
||||
RegAllocPBQP(OwningPtr<PBQPBuilder> &b, char *cPassID=0)
|
||||
: MachineFunctionPass(ID), builder(b.take()), customPassID(cPassID) {
|
||||
initializeSlotIndexesPass(*PassRegistry::getPassRegistry());
|
||||
initializeLiveIntervalsPass(*PassRegistry::getPassRegistry());
|
||||
initializeCalculateSpillWeightsPass(*PassRegistry::getPassRegistry());
|
||||
@ -121,7 +122,7 @@ private:
|
||||
typedef std::set<unsigned> RegSet;
|
||||
|
||||
|
||||
std::auto_ptr<PBQPBuilder> builder;
|
||||
OwningPtr<PBQPBuilder> builder;
|
||||
|
||||
char *customPassID;
|
||||
|
||||
@ -132,7 +133,7 @@ private:
|
||||
const MachineLoopInfo *loopInfo;
|
||||
MachineRegisterInfo *mri;
|
||||
|
||||
std::auto_ptr<Spiller> spiller;
|
||||
OwningPtr<Spiller> spiller;
|
||||
LiveIntervals *lis;
|
||||
LiveStacks *lss;
|
||||
VirtRegMap *vrm;
|
||||
@ -186,16 +187,15 @@ unsigned PBQPRAProblem::getPRegForOption(unsigned vreg, unsigned option) const {
|
||||
return allowedSet[option - 1];
|
||||
}
|
||||
|
||||
std::auto_ptr<PBQPRAProblem> PBQPBuilder::build(MachineFunction *mf,
|
||||
const LiveIntervals *lis,
|
||||
const MachineLoopInfo *loopInfo,
|
||||
const RegSet &vregs) {
|
||||
PBQPRAProblem *PBQPBuilder::build(MachineFunction *mf, const LiveIntervals *lis,
|
||||
const MachineLoopInfo *loopInfo,
|
||||
const RegSet &vregs) {
|
||||
|
||||
LiveIntervals *LIS = const_cast<LiveIntervals*>(lis);
|
||||
MachineRegisterInfo *mri = &mf->getRegInfo();
|
||||
const TargetRegisterInfo *tri = mf->getTarget().getRegisterInfo();
|
||||
|
||||
std::auto_ptr<PBQPRAProblem> p(new PBQPRAProblem());
|
||||
OwningPtr<PBQPRAProblem> p(new PBQPRAProblem());
|
||||
PBQP::Graph &g = p->getGraph();
|
||||
RegSet pregs;
|
||||
|
||||
@ -282,7 +282,7 @@ std::auto_ptr<PBQPRAProblem> PBQPBuilder::build(MachineFunction *mf,
|
||||
}
|
||||
}
|
||||
|
||||
return p;
|
||||
return p.take();
|
||||
}
|
||||
|
||||
void PBQPBuilder::addSpillCosts(PBQP::Vector &costVec,
|
||||
@ -311,13 +311,12 @@ void PBQPBuilder::addInterferenceCosts(
|
||||
}
|
||||
}
|
||||
|
||||
std::auto_ptr<PBQPRAProblem> PBQPBuilderWithCoalescing::build(
|
||||
MachineFunction *mf,
|
||||
PBQPRAProblem *PBQPBuilderWithCoalescing::build(MachineFunction *mf,
|
||||
const LiveIntervals *lis,
|
||||
const MachineLoopInfo *loopInfo,
|
||||
const RegSet &vregs) {
|
||||
|
||||
std::auto_ptr<PBQPRAProblem> p = PBQPBuilder::build(mf, lis, loopInfo, vregs);
|
||||
OwningPtr<PBQPRAProblem> p(PBQPBuilder::build(mf, lis, loopInfo, vregs));
|
||||
PBQP::Graph &g = p->getGraph();
|
||||
|
||||
const TargetMachine &tm = mf->getTarget();
|
||||
@ -391,7 +390,7 @@ std::auto_ptr<PBQPRAProblem> PBQPBuilderWithCoalescing::build(
|
||||
}
|
||||
}
|
||||
|
||||
return p;
|
||||
return p.take();
|
||||
}
|
||||
|
||||
void PBQPBuilderWithCoalescing::addPhysRegCoalesce(PBQP::Vector &costVec,
|
||||
@ -584,8 +583,8 @@ bool RegAllocPBQP::runOnMachineFunction(MachineFunction &MF) {
|
||||
while (!pbqpAllocComplete) {
|
||||
DEBUG(dbgs() << " PBQP Regalloc round " << round << ":\n");
|
||||
|
||||
std::auto_ptr<PBQPRAProblem> problem =
|
||||
builder->build(mf, lis, loopInfo, vregsToAlloc);
|
||||
OwningPtr<PBQPRAProblem> problem(
|
||||
builder->build(mf, lis, loopInfo, vregsToAlloc));
|
||||
|
||||
#ifndef NDEBUG
|
||||
if (pbqpDumpGraphs) {
|
||||
@ -621,18 +620,18 @@ bool RegAllocPBQP::runOnMachineFunction(MachineFunction &MF) {
|
||||
}
|
||||
|
||||
FunctionPass* llvm::createPBQPRegisterAllocator(
|
||||
std::auto_ptr<PBQPBuilder> builder,
|
||||
OwningPtr<PBQPBuilder> &builder,
|
||||
char *customPassID) {
|
||||
return new RegAllocPBQP(builder, customPassID);
|
||||
}
|
||||
|
||||
FunctionPass* llvm::createDefaultPBQPRegisterAllocator() {
|
||||
if (pbqpCoalescing) {
|
||||
return createPBQPRegisterAllocator(
|
||||
std::auto_ptr<PBQPBuilder>(new PBQPBuilderWithCoalescing()));
|
||||
} // else
|
||||
return createPBQPRegisterAllocator(
|
||||
std::auto_ptr<PBQPBuilder>(new PBQPBuilder()));
|
||||
OwningPtr<PBQPBuilder> Builder;
|
||||
if (pbqpCoalescing)
|
||||
Builder.reset(new PBQPBuilderWithCoalescing());
|
||||
else
|
||||
Builder.reset(new PBQPBuilder());
|
||||
return createPBQPRegisterAllocator(Builder);
|
||||
}
|
||||
|
||||
#undef DEBUG_TYPE
|
||||
|
Reference in New Issue
Block a user