[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