mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-12 14:20:33 +00:00
Use unique_ptr to hold AsmInfo,MRI,MII,STI
Reviewers: pcc, dblaikie Reviewed By: dblaikie Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D52389 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342945 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
556673f902
commit
ae4ef7d35c
@ -84,11 +84,10 @@ protected: // Can only create subclasses.
|
||||
CodeGenOpt::Level OptLevel = CodeGenOpt::Default;
|
||||
|
||||
/// Contains target specific asm information.
|
||||
const MCAsmInfo *AsmInfo;
|
||||
|
||||
const MCRegisterInfo *MRI;
|
||||
const MCInstrInfo *MII;
|
||||
const MCSubtargetInfo *STI;
|
||||
std::unique_ptr<const MCAsmInfo> AsmInfo;
|
||||
std::unique_ptr<const MCRegisterInfo> MRI;
|
||||
std::unique_ptr<const MCInstrInfo> MII;
|
||||
std::unique_ptr<const MCSubtargetInfo> STI;
|
||||
|
||||
unsigned RequireStructuredCFG : 1;
|
||||
unsigned O0WantsFastISel : 1;
|
||||
@ -160,11 +159,11 @@ public:
|
||||
void resetTargetOptions(const Function &F) const;
|
||||
|
||||
/// Return target specific asm information.
|
||||
const MCAsmInfo *getMCAsmInfo() const { return AsmInfo; }
|
||||
const MCAsmInfo *getMCAsmInfo() const { return AsmInfo.get(); }
|
||||
|
||||
const MCRegisterInfo *getMCRegisterInfo() const { return MRI; }
|
||||
const MCInstrInfo *getMCInstrInfo() const { return MII; }
|
||||
const MCSubtargetInfo *getMCSubtargetInfo() const { return STI; }
|
||||
const MCRegisterInfo *getMCRegisterInfo() const { return MRI.get(); }
|
||||
const MCInstrInfo *getMCInstrInfo() const { return MII.get(); }
|
||||
const MCSubtargetInfo *getMCSubtargetInfo() const { return STI.get(); }
|
||||
|
||||
/// If intrinsic information is available, return it. If not, return null.
|
||||
virtual const TargetIntrinsicInfo *getIntrinsicInfo() const {
|
||||
|
@ -40,14 +40,14 @@ static cl::opt<bool> EnableTrapUnreachable("trap-unreachable",
|
||||
cl::desc("Enable generating trap for unreachable"));
|
||||
|
||||
void LLVMTargetMachine::initAsmInfo() {
|
||||
MRI = TheTarget.createMCRegInfo(getTargetTriple().str());
|
||||
MII = TheTarget.createMCInstrInfo();
|
||||
MRI.reset(TheTarget.createMCRegInfo(getTargetTriple().str()));
|
||||
MII.reset(TheTarget.createMCInstrInfo());
|
||||
// FIXME: Having an MCSubtargetInfo on the target machine is a hack due
|
||||
// to some backends having subtarget feature dependent module level
|
||||
// code generation. This is similar to the hack in the AsmPrinter for
|
||||
// module level assembly etc.
|
||||
STI = TheTarget.createMCSubtargetInfo(getTargetTriple().str(), getTargetCPU(),
|
||||
getTargetFeatureString());
|
||||
STI.reset(TheTarget.createMCSubtargetInfo(
|
||||
getTargetTriple().str(), getTargetCPU(), getTargetFeatureString()));
|
||||
|
||||
MCAsmInfo *TmpAsmInfo =
|
||||
TheTarget.createMCAsmInfo(*MRI, getTargetTriple().str());
|
||||
@ -71,7 +71,7 @@ void LLVMTargetMachine::initAsmInfo() {
|
||||
if (Options.ExceptionModel != ExceptionHandling::None)
|
||||
TmpAsmInfo->setExceptionsType(Options.ExceptionModel);
|
||||
|
||||
AsmInfo = TmpAsmInfo;
|
||||
AsmInfo.reset(TmpAsmInfo);
|
||||
}
|
||||
|
||||
LLVMTargetMachine::LLVMTargetMachine(const Target &T,
|
||||
|
@ -70,7 +70,8 @@ BPFTargetMachine::BPFTargetMachine(const Target &T, const Triple &TT,
|
||||
Subtarget(TT, CPU, FS, *this) {
|
||||
initAsmInfo();
|
||||
|
||||
BPFMCAsmInfo *MAI = static_cast<BPFMCAsmInfo *>(const_cast<MCAsmInfo *>(AsmInfo));
|
||||
BPFMCAsmInfo *MAI =
|
||||
static_cast<BPFMCAsmInfo *>(const_cast<MCAsmInfo *>(AsmInfo.get()));
|
||||
MAI->setDwarfUsesRelocationsAcrossSections(!Subtarget.getUseDwarfRIS());
|
||||
}
|
||||
namespace {
|
||||
|
@ -40,12 +40,7 @@ TargetMachine::TargetMachine(const Target &T, StringRef DataLayoutString,
|
||||
RequireStructuredCFG(false), DefaultOptions(Options), Options(Options) {
|
||||
}
|
||||
|
||||
TargetMachine::~TargetMachine() {
|
||||
delete AsmInfo;
|
||||
delete MRI;
|
||||
delete MII;
|
||||
delete STI;
|
||||
}
|
||||
TargetMachine::~TargetMachine() = default;
|
||||
|
||||
bool TargetMachine::isPositionIndependent() const {
|
||||
return getRelocationModel() == Reloc::PIC_;
|
||||
|
Loading…
Reference in New Issue
Block a user