LLVM
8.0.1
|
#include "MCTargetDesc/MipsBaseInfo.h"
#include "Mips.h"
#include "MipsRegisterInfo.h"
#include "MipsSubtarget.h"
#include "llvm/ADT/PointerUnion.h"
#include "llvm/ADT/ScopedHashTable.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/CodeGen/MachineBasicBlock.h"
#include "llvm/CodeGen/MachineDominators.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineOperand.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/TargetInstrInfo.h"
#include "llvm/CodeGen/TargetOpcodes.h"
#include "llvm/CodeGen/TargetRegisterInfo.h"
#include "llvm/CodeGen/TargetSubtargetInfo.h"
#include "llvm/Support/Allocator.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/MachineValueType.h"
#include "llvm/Support/RecyclingAllocator.h"
#include <cassert>
#include <utility>
#include <vector>
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "optimize-mips-pic-call" |
Functions | |
static MachineOperand * | getCallTargetRegOpnd (MachineInstr &MI) |
Return the first MachineOperand of MI if it is a used virtual register. More... | |
static MVT::SimpleValueType | getRegTy (unsigned Reg, MachineFunction &MF) |
Return type of register Reg. More... | |
static void | setCallTargetReg (MachineBasicBlock *MBB, MachineBasicBlock::iterator I) |
Do the following transformation: More... | |
static void | eraseGPOpnd (MachineInstr &MI) |
Search MI's operands for register GP and erase it. More... | |
Variables | |
static cl::opt< bool > | LoadTargetFromGOT ("mips-load-target-from-got", cl::init(true), cl::desc("Load target address from GOT"), cl::Hidden) |
static cl::opt< bool > | EraseGPOpnd ("mips-erase-gp-opnd", cl::init(true), cl::desc("Erase GP Operand"), cl::Hidden) |
#define DEBUG_TYPE "optimize-mips-pic-call" |
Definition at line 45 of file MipsOptimizePICCall.cpp.
|
static |
Search MI's operands for register GP and erase it.
Definition at line 164 of file MipsOptimizePICCall.cpp.
References EraseGPOpnd, llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOperand(), llvm::MachineBasicBlock::getParent(), llvm::MachineInstr::getParent(), llvm::MachineOperand::getReg(), getRegTy(), I, llvm::MVT::i32, llvm::MachineOperand::isReg(), llvm_unreachable, N, Reg, and llvm::MachineInstr::RemoveOperand().
|
static |
Return the first MachineOperand of MI if it is a used virtual register.
Definition at line 125 of file MipsOptimizePICCall.cpp.
References llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::MachineOperand::isReg(), llvm::MachineOperand::isUse(), and llvm::TargetRegisterInfo::isVirtualRegister().
|
static |
Return type of register Reg.
Definition at line 139 of file MipsOptimizePICCall.cpp.
References assert(), llvm::MachineRegisterInfo::getRegClass(), llvm::MachineFunction::getRegInfo(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::MachineFunction::getSubtarget(), llvm::TargetRegisterInfo::legalclasstypes_begin(), llvm::TargetRegisterInfo::legalclasstypes_end(), and TRI.
Referenced by eraseGPOpnd(), and setCallTargetReg().
|
static |
Do the following transformation:
jalr $vreg => copy $t9, $vreg jalr $t9
Definition at line 152 of file MipsOptimizePICCall.cpp.
References llvm::BuildMI(), llvm::MCInstrInfo::get(), llvm::TargetSubtargetInfo::getInstrInfo(), llvm::MachineBasicBlock::getParent(), getRegTy(), llvm::MachineFunction::getSubtarget(), llvm::MVT::i32, and TII.
|
static |
Referenced by eraseGPOpnd().