Add definitions of two subclasses of MipsInstrInfo, MipsInstrInfo (for mips16),
and MipsSEInstrInfo (for mips32/64).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161081 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/Mips/MipsTargetMachine.h b/lib/Target/Mips/MipsTargetMachine.h
index bae52ff..958f136 100644
--- a/lib/Target/Mips/MipsTargetMachine.h
+++ b/lib/Target/Mips/MipsTargetMachine.h
@@ -25,12 +25,13 @@
 #include "llvm/Target/TargetFrameLowering.h"
 
 namespace llvm {
-  class formatted_raw_ostream;
+class formatted_raw_ostream;
+class MipsRegisterInfo;
 
 class MipsTargetMachine : public LLVMTargetMachine {
   MipsSubtarget       Subtarget;
   const TargetData    DataLayout; // Calculates type size & alignment
-  MipsInstrInfo       InstrInfo;
+  const MipsInstrInfo *InstrInfo;
   MipsFrameLowering   FrameLowering;
   MipsTargetLowering  TLInfo;
   MipsSelectionDAGInfo TSInfo;
@@ -43,8 +44,10 @@
                     CodeGenOpt::Level OL,
                     bool isLittle);
 
+  virtual ~MipsTargetMachine() { delete InstrInfo; }
+
   virtual const MipsInstrInfo *getInstrInfo() const
-  { return &InstrInfo; }
+  { return InstrInfo; }
   virtual const TargetFrameLowering *getFrameLowering() const
   { return &FrameLowering; }
   virtual const MipsSubtarget *getSubtargetImpl() const
@@ -55,7 +58,7 @@
   { return &JITInfo; }
 
   virtual const MipsRegisterInfo *getRegisterInfo()  const {
-    return &InstrInfo.getRegisterInfo();
+    return &InstrInfo->getRegisterInfo();
   }
 
   virtual const MipsTargetLowering *getTargetLowering() const {