Changes in directory llvm/lib/Target/X86:
X86ISelDAGToDAG.cpp updated: 1.143 -> 1.144 X86ISelLowering.cpp updated: 1.314 -> 1.315 X86Subtarget.cpp updated: 1.49 -> 1.50 --- Log message: Linux GOT indirect reference is only necessary in PIC mode. --- Diffs of the changes: (+5 -3) X86ISelDAGToDAG.cpp | 3 ++- X86ISelLowering.cpp | 3 ++- X86Subtarget.cpp | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) Index: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp diff -u llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.143 llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.144 --- llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.143 Fri Jan 12 17:22:14 2007 +++ llvm/lib/Target/X86/X86ISelDAGToDAG.cpp Mon Jan 22 15:34:25 2007 @@ -947,7 +947,8 @@ // If we're using vanilla 'GOT' PIC style, we should use relative addressing // not to pc, but to _GLOBAL_ADDRESS_TABLE_ external - if (Subtarget->isPICStyleGOT()) { + if (TM.getRelocationModel() == Reloc::PIC_ && + Subtarget->isPICStyleGOT()) { GlobalBaseReg = RegMap->createVirtualRegister(X86::GR32RegisterClass); BuildMI(FirstMBB, MBBI, TII->get(X86::ADD32ri), GlobalBaseReg). addReg(PC). Index: llvm/lib/Target/X86/X86ISelLowering.cpp diff -u llvm/lib/Target/X86/X86ISelLowering.cpp:1.314 llvm/lib/Target/X86/X86ISelLowering.cpp:1.315 --- llvm/lib/Target/X86/X86ISelLowering.cpp:1.314 Fri Jan 12 13:20:47 2007 +++ llvm/lib/Target/X86/X86ISelLowering.cpp Mon Jan 22 15:34:25 2007 @@ -664,7 +664,8 @@ InFlag = Chain.getValue(1); } - if (Subtarget->isPICStyleGOT()) { + if (getTargetMachine().getRelocationModel() == Reloc::PIC_ && + Subtarget->isPICStyleGOT()) { Chain = DAG.getCopyToReg(Chain, X86::EBX, DAG.getNode(X86ISD::GlobalBaseReg, getPointerTy()), InFlag); Index: llvm/lib/Target/X86/X86Subtarget.cpp diff -u llvm/lib/Target/X86/X86Subtarget.cpp:1.49 llvm/lib/Target/X86/X86Subtarget.cpp:1.50 --- llvm/lib/Target/X86/X86Subtarget.cpp:1.49 Wed Jan 17 04:33:08 2007 +++ llvm/lib/Target/X86/X86Subtarget.cpp Mon Jan 22 15:34:25 2007 @@ -40,7 +40,7 @@ return (!isDirectCall && (GV->hasWeakLinkage() || GV->hasLinkOnceLinkage() || (GV->isExternal() && !GV->hasNotBeenReadFromBytecode()))); - } else if (isPICStyleGOT()) { + } else if (TM.getRelocationModel() == Reloc::PIC_ && isPICStyleGOT()) { // Extra load is needed for all non-statics. return (!isDirectCall && (GV->isExternal() || !GV->hasInternalLinkage())); _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits