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())); _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits