[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPCCodeEmitter.cpp PPCJITInfo.cpp PPCTargetMachine.cpp
Nate Begeman
natebegeman at mac.com
Fri Apr 21 15:04:27 PDT 2006
Changes in directory llvm/lib/Target/PowerPC:
PPCCodeEmitter.cpp updated: 1.50 -> 1.51
PPCJITInfo.cpp updated: 1.17 -> 1.18
PPCTargetMachine.cpp updated: 1.86 -> 1.87
---
Log message:
Change the PPC JIT to use a Static relocation model
---
Diffs of the changes: (+4 -29)
PPCCodeEmitter.cpp | 18 ++----------------
PPCJITInfo.cpp | 13 +------------
PPCTargetMachine.cpp | 2 +-
3 files changed, 4 insertions(+), 29 deletions(-)
Index: llvm/lib/Target/PowerPC/PPCCodeEmitter.cpp
diff -u llvm/lib/Target/PowerPC/PPCCodeEmitter.cpp:1.50 llvm/lib/Target/PowerPC/PPCCodeEmitter.cpp:1.51
--- llvm/lib/Target/PowerPC/PPCCodeEmitter.cpp:1.50 Mon Apr 17 16:07:20 2006
+++ llvm/lib/Target/PowerPC/PPCCodeEmitter.cpp Fri Apr 21 17:04:15 2006
@@ -157,11 +157,6 @@
} else if (MO.isImmediate()) {
rv = MO.getImmedValue();
} else if (MO.isGlobalAddress() || MO.isExternalSymbol()) {
- bool isExternal = MO.isExternalSymbol() ||
- MO.getGlobal()->hasWeakLinkage() ||
- MO.getGlobal()->hasLinkOnceLinkage() ||
- (MO.getGlobal()->isExternal() &&
- !MO.getGlobal()->hasNotBeenReadFromBytecode());
unsigned Reloc = 0;
if (MI.getOpcode() == PPC::BL)
Reloc = PPC::reloc_pcrel_bx;
@@ -169,15 +164,9 @@
switch (MI.getOpcode()) {
default: MI.dump(); assert(0 && "Unknown instruction for relocation!");
case PPC::LIS:
- if (isExternal)
- Reloc = PPC::reloc_absolute_ptr_high; // Pointer to stub
- else
- Reloc = PPC::reloc_absolute_high; // Pointer to symbol
+ Reloc = PPC::reloc_absolute_high; // Pointer to symbol
break;
case PPC::LA:
- assert(!isExternal && "Something in the ISEL changed\n");
- Reloc = PPC::reloc_absolute_low;
- break;
case PPC::LBZ:
case PPC::LHA:
case PPC::LHZ:
@@ -189,10 +178,7 @@
case PPC::STW:
case PPC::STFS:
case PPC::STFD:
- if (isExternal)
- Reloc = PPC::reloc_absolute_ptr_low;
- else
- Reloc = PPC::reloc_absolute_low;
+ Reloc = PPC::reloc_absolute_low;
break;
}
}
Index: llvm/lib/Target/PowerPC/PPCJITInfo.cpp
diff -u llvm/lib/Target/PowerPC/PPCJITInfo.cpp:1.17 llvm/lib/Target/PowerPC/PPCJITInfo.cpp:1.18
--- llvm/lib/Target/PowerPC/PPCJITInfo.cpp:1.17 Sun Oct 16 00:39:50 2005
+++ llvm/lib/Target/PowerPC/PPCJITInfo.cpp Fri Apr 21 17:04:15 2006
@@ -201,19 +201,8 @@
"Relocation out of range!");
*RelocPos |= (ResultPtr & ((1 << 24)-1)) << 2;
break;
-
case PPC::reloc_absolute_ptr_high: // Pointer relocations.
- case PPC::reloc_absolute_ptr_low: {
- // Pointer relocations are used for the PPC external stubs and lazy
- // resolver pointers that the Darwin ABI likes to use. Basically, the
- // address of the global is actually stored in memory, and the address of
- // the pointer is relocated into instructions instead of the pointer
- // itself. Because we have to keep the mapping anyway, we just return
- // pointers to the values in the map as our new location.
- static std::set<void*> Pointers;
- ResultPtr = (intptr_t)&*Pointers.insert((void*)ResultPtr).first;
- }
- // FALL THROUGH
+ case PPC::reloc_absolute_ptr_low:
case PPC::reloc_absolute_high: // high bits of ref -> low 16 of instr
case PPC::reloc_absolute_low: // low bits of ref -> low 16 of instr
ResultPtr += MR->getConstantVal();
Index: llvm/lib/Target/PowerPC/PPCTargetMachine.cpp
diff -u llvm/lib/Target/PowerPC/PPCTargetMachine.cpp:1.86 llvm/lib/Target/PowerPC/PPCTargetMachine.cpp:1.87
--- llvm/lib/Target/PowerPC/PPCTargetMachine.cpp:1.86 Sat Apr 8 14:46:55 2006
+++ llvm/lib/Target/PowerPC/PPCTargetMachine.cpp Fri Apr 21 17:04:15 2006
@@ -130,7 +130,7 @@
void PPCJITInfo::addPassesToJITCompile(FunctionPassManager &PM) {
// The JIT should use dynamic-no-pic relocation model.
- TM.setRelocationModel(Reloc::DynamicNoPIC);
+ TM.setRelocationModel(Reloc::Static);
// Run loop strength reduction before anything else.
PM.add(createLoopStrengthReducePass(TM.getTargetLowering()));
More information about the llvm-commits
mailing list