[PATCH] D52389: Use unique_ptr to hold AsmInfo,MRI,MII,STI

Fangrui Song via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 24 23:21:16 PDT 2018


This revision was automatically updated to reflect the committed changes.
Closed by commit rL342945: Use unique_ptr to hold AsmInfo,MRI,MII,STI (authored by MaskRay, committed by ).

Repository:
  rL LLVM

https://reviews.llvm.org/D52389

Files:
  llvm/trunk/include/llvm/Target/TargetMachine.h
  llvm/trunk/lib/CodeGen/LLVMTargetMachine.cpp
  llvm/trunk/lib/Target/BPF/BPFTargetMachine.cpp
  llvm/trunk/lib/Target/TargetMachine.cpp


Index: llvm/trunk/lib/Target/BPF/BPFTargetMachine.cpp
===================================================================
--- llvm/trunk/lib/Target/BPF/BPFTargetMachine.cpp
+++ llvm/trunk/lib/Target/BPF/BPFTargetMachine.cpp
@@ -70,7 +70,8 @@
       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 {
Index: llvm/trunk/lib/Target/TargetMachine.cpp
===================================================================
--- llvm/trunk/lib/Target/TargetMachine.cpp
+++ llvm/trunk/lib/Target/TargetMachine.cpp
@@ -40,12 +40,7 @@
       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_;
Index: llvm/trunk/lib/CodeGen/LLVMTargetMachine.cpp
===================================================================
--- llvm/trunk/lib/CodeGen/LLVMTargetMachine.cpp
+++ llvm/trunk/lib/CodeGen/LLVMTargetMachine.cpp
@@ -40,14 +40,14 @@
   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 @@
   if (Options.ExceptionModel != ExceptionHandling::None)
     TmpAsmInfo->setExceptionsType(Options.ExceptionModel);
 
-  AsmInfo = TmpAsmInfo;
+  AsmInfo.reset(TmpAsmInfo);
 }
 
 LLVMTargetMachine::LLVMTargetMachine(const Target &T,
Index: llvm/trunk/include/llvm/Target/TargetMachine.h
===================================================================
--- llvm/trunk/include/llvm/Target/TargetMachine.h
+++ llvm/trunk/include/llvm/Target/TargetMachine.h
@@ -84,11 +84,10 @@
   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 @@
   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 {


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D52389.166814.patch
Type: text/x-patch
Size: 4086 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180925/2d3cd4da/attachment.bin>


More information about the llvm-commits mailing list