diff options
-rw-r--r-- | llvm/lib/Target/ARM/ARMCodeEmitter.cpp | 12 | ||||
-rw-r--r-- | llvm/lib/Target/ARM/ARMJITInfo.cpp | 6 | ||||
-rw-r--r-- | llvm/lib/Target/ARM/ARMJITInfo.h | 7 |
3 files changed, 8 insertions, 17 deletions
diff --git a/llvm/lib/Target/ARM/ARMCodeEmitter.cpp b/llvm/lib/Target/ARM/ARMCodeEmitter.cpp index 8c7e2aba89b..32cf226c497 100644 --- a/llvm/lib/Target/ARM/ARMCodeEmitter.cpp +++ b/llvm/lib/Target/ARM/ARMCodeEmitter.cpp @@ -140,7 +140,7 @@ namespace { /// Routines that handle operands which add machine relocations which are /// fixed up by the relocation stage. void emitGlobalAddress(GlobalValue *GV, unsigned Reloc, - bool NeedStub, unsigned CPIdx = 0); + bool NeedStub, intptr_t ACPV = 0); void emitExternalSymbolAddress(const char *ES, unsigned Reloc); void emitConstPoolAddress(unsigned CPI, unsigned Reloc); void emitJumpTableAddress(unsigned JTIndex, unsigned Reloc); @@ -225,11 +225,10 @@ unsigned ARMCodeEmitter::getMachineOpValue(const MachineInstr &MI, /// emitGlobalAddress - Emit the specified address to the code stream. /// -void ARMCodeEmitter::emitGlobalAddress(GlobalValue *GV, - unsigned Reloc, bool NeedStub, - unsigned CPIdx) { +void ARMCodeEmitter::emitGlobalAddress(GlobalValue *GV, unsigned Reloc, + bool NeedStub, intptr_t ACPV) { MCE.addRelocation(MachineRelocation::getGV(MCE.getCurrentPCOffset(), - Reloc, GV, CPIdx, NeedStub)); + Reloc, GV, ACPV, NeedStub)); } /// emitExternalSymbolAddress - Arrange for the address of an external symbol to @@ -337,7 +336,8 @@ void ARMCodeEmitter::emitConstPoolInstruction(const MachineInstr &MI) { GlobalValue *GV = ACPV->getGV(); if (GV) { assert(!ACPV->isStub() && "Don't know how to deal this yet!"); - emitGlobalAddress(GV, ARM::reloc_arm_machine_cp_entry, false, CPIndex); + emitGlobalAddress(GV, ARM::reloc_arm_machine_cp_entry, false, + (intptr_t)ACPV); } else { assert(!ACPV->isNonLazyPointer() && "Don't know how to deal this yet!"); emitExternalSymbolAddress(ACPV->getSymbol(), ARM::reloc_arm_absolute); diff --git a/llvm/lib/Target/ARM/ARMJITInfo.cpp b/llvm/lib/Target/ARM/ARMJITInfo.cpp index 52036ba3517..c0b878251ba 100644 --- a/llvm/lib/Target/ARM/ARMJITInfo.cpp +++ b/llvm/lib/Target/ARM/ARMJITInfo.cpp @@ -180,11 +180,7 @@ intptr_t ARMJITInfo::resolveRelocDestAddr(MachineRelocation *MR) const { // Constant pool entry address. return getConstantPoolEntryAddr(MR->getConstantPoolIndex()); else if (RT == ARM::reloc_arm_machine_cp_entry) { - const MachineConstantPoolEntry &MCPE = (*MCPEs)[MR->getConstantVal()]; - assert(MCPE.isMachineConstantPoolEntry() && - "Expecting a machine constant pool entry!"); - ARMConstantPoolValue *ACPV = - static_cast<ARMConstantPoolValue*>(MCPE.Val.MachineCPVal); + ARMConstantPoolValue *ACPV = (ARMConstantPoolValue*)MR->getConstantVal(); assert((!ACPV->hasModifier() && !ACPV->mustAddCurrentAddress()) && "Can't handle this machine constant pool entry yet!"); intptr_t Addr = (intptr_t)(MR->getResultPointer()); diff --git a/llvm/lib/Target/ARM/ARMJITInfo.h b/llvm/lib/Target/ARM/ARMJITInfo.h index 4b94f3ef795..feb7eea6aab 100644 --- a/llvm/lib/Target/ARM/ARMJITInfo.h +++ b/llvm/lib/Target/ARM/ARMJITInfo.h @@ -27,10 +27,6 @@ namespace llvm { class ARMJITInfo : public TargetJITInfo { ARMTargetMachine &TM; - // MCPEs - List of the constant pool entries for the current machine - // function that's being processed. - const std::vector<MachineConstantPoolEntry> *MCPEs; - // ConstPoolId2AddrMap - A map from constant pool ids to the corresponding // CONSTPOOL_ENTRY addresses. SmallVector<intptr_t, 16> ConstPoolId2AddrMap; @@ -89,8 +85,7 @@ namespace llvm { /// Initialize - Initialize internal stage. Get the list of constant pool /// Resize constant pool ids to CONSTPOOL_ENTRY addresses map. void Initialize(const MachineFunction &MF) { - MCPEs = &MF.getConstantPool()->getConstants(); - ConstPoolId2AddrMap.resize(MCPEs->size()); + ConstPoolId2AddrMap.resize(MF.getConstantPool()->getConstants().size()); JumpTableId2AddrMap.resize(MF.getJumpTableInfo()->getJumpTables().size()); } |