LLVM 22.0.0git
MipsOptimizePICCall.cpp File Reference

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "optimize-mips-pic-call"

Functions

static MachineOperandgetCallTargetRegOpnd (MachineInstr &MI)
 Return the first MachineOperand of MI if it is a used virtual register.
static MVT::SimpleValueType getRegTy (unsigned Reg, MachineFunction &MF)
 Return type of register Reg.
static void setCallTargetReg (MachineBasicBlock *MBB, MachineBasicBlock::iterator I)
 Do the following transformation:
static void eraseGPOpnd (MachineInstr &MI)
 Search MI's operands for register GP and erase it.

Variables

static cl::opt< boolLoadTargetFromGOT ("mips-load-target-from-got", cl::init(true), cl::desc("Load target address from GOT"), cl::Hidden)
static cl::opt< boolEraseGPOpnd ("mips-erase-gp-opnd", cl::init(true), cl::desc("Erase GP Operand"), cl::Hidden)

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "optimize-mips-pic-call"

Definition at line 43 of file MipsOptimizePICCall.cpp.

Function Documentation

◆ eraseGPOpnd()

void eraseGPOpnd ( MachineInstr & MI)
static

Search MI's operands for register GP and erase it.

Definition at line 161 of file MipsOptimizePICCall.cpp.

References EraseGPOpnd, llvm::MachineOperand::getReg(), getRegTy(), I, llvm::MachineOperand::isReg(), llvm_unreachable, MI, and Reg.

◆ getCallTargetRegOpnd()

MachineOperand * getCallTargetRegOpnd ( MachineInstr & MI)
static

Return the first MachineOperand of MI if it is a used virtual register.

Definition at line 123 of file MipsOptimizePICCall.cpp.

References llvm::MachineOperand::getReg(), llvm::MachineOperand::isReg(), llvm::MachineOperand::isUse(), llvm::Register::isVirtual(), and MI.

◆ getRegTy()

◆ setCallTargetReg()

void setCallTargetReg ( MachineBasicBlock * MBB,
MachineBasicBlock::iterator I )
static

Do the following transformation:

jalr $vreg => copy $t9, $vreg jalr $t9

Definition at line 149 of file MipsOptimizePICCall.cpp.

References llvm::MachineInstrBuilder::addReg(), llvm::BuildMI(), llvm::TargetSubtargetInfo::getInstrInfo(), getRegTy(), llvm::MachineFunction::getSubtarget(), I, MBB, and TII.

Variable Documentation

◆ EraseGPOpnd

cl::opt< bool > EraseGPOpnd("mips-erase-gp-opnd", cl::init(true), cl::desc("Erase GP Operand"), cl::Hidden) ( "mips-erase-gp-opnd" ,
cl::init(true) ,
cl::desc("Erase GP Operand") ,
cl::Hidden  )
static

Referenced by eraseGPOpnd().

◆ LoadTargetFromGOT

cl::opt< bool > LoadTargetFromGOT("mips-load-target-from-got", cl::init(true), cl::desc("Load target address from GOT"), cl::Hidden) ( "mips-load-target-from-got" ,
cl::init(true) ,
cl::desc("Load target address from GOT") ,
cl::Hidden  )
static