mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-25 12:50:00 +00:00
prep work to support a future where getJumpTableInfo will return
a null pointer for functions with no jump tables. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94469 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
da63b3ad63
commit
b1e803985d
@ -62,7 +62,8 @@ void ELFCodeEmitter::startFunction(MachineFunction &MF) {
|
||||
// They need to be emitted before the function because in some targets
|
||||
// the later may reference JT or CP entry address.
|
||||
emitConstantPool(MF.getConstantPool());
|
||||
emitJumpTables(MF.getJumpTableInfo());
|
||||
if (MF.getJumpTableInfo())
|
||||
emitJumpTables(MF.getJumpTableInfo());
|
||||
}
|
||||
|
||||
/// finishFunction - This callback is invoked after the function is completely
|
||||
@ -84,7 +85,7 @@ bool ELFCodeEmitter::finishFunction(MachineFunction &MF) {
|
||||
|
||||
// Patch up Jump Table Section relocations to use the real MBBs offsets
|
||||
// now that the MBB label offsets inside the function are known.
|
||||
if (!MF.getJumpTableInfo()->isEmpty()) {
|
||||
if (MF.getJumpTableInfo()) {
|
||||
ELFSection &JTSection = EW.getJumpTableSection();
|
||||
for (std::vector<MachineRelocation>::iterator MRI = JTRelocations.begin(),
|
||||
MRE = JTRelocations.end(); MRI != MRE; ++MRI) {
|
||||
@ -172,7 +173,7 @@ void ELFCodeEmitter::emitJumpTables(MachineJumpTableInfo *MJTI) {
|
||||
"PIC codegen not yet handled for elf jump tables!");
|
||||
|
||||
const TargetELFWriterInfo *TEW = TM.getELFWriterInfo();
|
||||
unsigned EntrySize = MJTI->getEntrySize();
|
||||
unsigned EntrySize = 4; //MJTI->getEntrySize();
|
||||
|
||||
// Get the ELF Section to emit the jump table
|
||||
ELFSection &JTSection = EW.getJumpTableSection();
|
||||
|
@ -490,6 +490,7 @@ unsigned ARMBaseInstrInfo::GetInstSizeInBytes(const MachineInstr *MI) const {
|
||||
MI->getOperand(NumOps - (TID.isPredicable() ? 3 : 2));
|
||||
unsigned JTI = JTOP.getIndex();
|
||||
const MachineJumpTableInfo *MJTI = MF->getJumpTableInfo();
|
||||
assert(MJTI != 0);
|
||||
const std::vector<MachineJumpTableEntry> &JT = MJTI->getJumpTables();
|
||||
assert(JTI < JT.size());
|
||||
// Thumb instructions are 2 byte aligned, but JT entries are 4 byte
|
||||
|
@ -206,7 +206,8 @@ bool Emitter<CodeEmitter>::runOnMachineFunction(MachineFunction &MF) {
|
||||
TD = ((ARMTargetMachine&)MF.getTarget()).getTargetData();
|
||||
Subtarget = &TM.getSubtarget<ARMSubtarget>();
|
||||
MCPEs = &MF.getConstantPool()->getConstants();
|
||||
MJTEs = &MF.getJumpTableInfo()->getJumpTables();
|
||||
MJTEs = 0;
|
||||
if (MF.getJumpTableInfo()) MJTEs = &MF.getJumpTableInfo()->getJumpTables();
|
||||
IsPIC = TM.getRelocationModel() == Reloc::PIC_;
|
||||
JTI->Initialize(MF, IsPIC);
|
||||
MCE.setModuleInfo(&getAnalysis<MachineModuleInfo>());
|
||||
|
@ -1624,6 +1624,8 @@ bool ARMConstantIslands::OptimizeThumb2JumpTables(MachineFunction &MF) {
|
||||
// FIXME: After the tables are shrunk, can we get rid some of the
|
||||
// constantpool tables?
|
||||
MachineJumpTableInfo *MJTI = MF.getJumpTableInfo();
|
||||
if (MJTI == 0) return false;
|
||||
|
||||
const std::vector<MachineJumpTableEntry> &JT = MJTI->getJumpTables();
|
||||
for (unsigned i = 0, e = T2JumpTables.size(); i != e; ++i) {
|
||||
MachineInstr *MI = T2JumpTables[i];
|
||||
@ -1730,6 +1732,8 @@ bool ARMConstantIslands::ReorderThumb2JumpTables(MachineFunction &MF) {
|
||||
bool MadeChange = false;
|
||||
|
||||
MachineJumpTableInfo *MJTI = MF.getJumpTableInfo();
|
||||
if (MJTI == 0) return false;
|
||||
|
||||
const std::vector<MachineJumpTableEntry> &JT = MJTI->getJumpTables();
|
||||
for (unsigned i = 0, e = T2JumpTables.size(); i != e; ++i) {
|
||||
MachineInstr *MI = T2JumpTables[i];
|
||||
|
Loading…
Reference in New Issue
Block a user