diff options
Diffstat (limited to 'contrib/llvm/lib/Target/Sparc/SparcCodeEmitter.cpp')
| -rw-r--r-- | contrib/llvm/lib/Target/Sparc/SparcCodeEmitter.cpp | 32 | 
1 files changed, 25 insertions, 7 deletions
diff --git a/contrib/llvm/lib/Target/Sparc/SparcCodeEmitter.cpp b/contrib/llvm/lib/Target/Sparc/SparcCodeEmitter.cpp index b7b2182fc21b..247da2a95797 100644 --- a/contrib/llvm/lib/Target/Sparc/SparcCodeEmitter.cpp +++ b/contrib/llvm/lib/Target/Sparc/SparcCodeEmitter.cpp @@ -12,7 +12,6 @@  //  //===---------------------------------------------------------------------===// -#define DEBUG_TYPE "jit"  #include "Sparc.h"  #include "MCTargetDesc/SparcMCExpr.h"  #include "SparcRelocations.h" @@ -25,6 +24,8 @@  using namespace llvm; +#define DEBUG_TYPE "jit" +  STATISTIC(NumEmitted, "Number of machine instructions emitted");  namespace { @@ -39,7 +40,7 @@ class SparcCodeEmitter : public MachineFunctionPass {    const std::vector<MachineConstantPoolEntry> *MCPEs;    bool IsPIC; -  void getAnalysisUsage(AnalysisUsage &AU) const { +  void getAnalysisUsage(AnalysisUsage &AU) const override {      AU.addRequired<MachineModuleInfo> ();      MachineFunctionPass::getAnalysisUsage(AU);    } @@ -48,13 +49,13 @@ class SparcCodeEmitter : public MachineFunctionPass {  public:    SparcCodeEmitter(TargetMachine &tm, JITCodeEmitter &mce) -    : MachineFunctionPass(ID), JTI(0), II(0), TD(0), -      TM(tm), MCE(mce), MCPEs(0), +    : MachineFunctionPass(ID), JTI(nullptr), II(nullptr), TD(nullptr), +      TM(tm), MCE(mce), MCPEs(nullptr),        IsPIC(TM.getRelocationModel() == Reloc::PIC_) {} -  bool runOnMachineFunction(MachineFunction &MF); +  bool runOnMachineFunction(MachineFunction &MF) override; -  virtual const char *getPassName() const { +  const char *getPassName() const override {      return "Sparc Machine Code Emitter";    } @@ -76,6 +77,10 @@ private:                                  unsigned) const;    unsigned getBranchTargetOpValue(const MachineInstr &MI,                                    unsigned) const; +  unsigned getBranchPredTargetOpValue(const MachineInstr &MI, +                                      unsigned) const; +  unsigned getBranchOnRegTargetOpValue(const MachineInstr &MI, +                                       unsigned) const;    void emitWord(unsigned Word); @@ -141,7 +146,8 @@ void SparcCodeEmitter::emitInstruction(MachineBasicBlock::instr_iterator MI,      }      break;    } -  case TargetOpcode::PROLOG_LABEL: +  case TargetOpcode::CFI_INSTRUCTION: +    break;    case TargetOpcode::EH_LABEL: {      MCE.emitLabel(MI->getOperand(0).getMCSymbol());      break; @@ -198,6 +204,18 @@ unsigned SparcCodeEmitter::getBranchTargetOpValue(const MachineInstr &MI,    return getMachineOpValue(MI, MO);  } +unsigned SparcCodeEmitter::getBranchPredTargetOpValue(const MachineInstr &MI, +                                                      unsigned opIdx) const { +  const MachineOperand MO = MI.getOperand(opIdx); +  return getMachineOpValue(MI, MO); +} + +unsigned SparcCodeEmitter::getBranchOnRegTargetOpValue(const MachineInstr &MI, +                                                       unsigned opIdx) const { +  const MachineOperand MO = MI.getOperand(opIdx); +  return getMachineOpValue(MI, MO); +} +  unsigned SparcCodeEmitter::getRelocation(const MachineInstr &MI,                                           const MachineOperand &MO) const {  | 
