[llvm-commits] CVS: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp X86ISelLowering.cpp X86Subtarget.cpp
Evan Cheng
evan.cheng at apple.com
Mon Jan 22 13:34:41 PST 2007
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()));
More information about the llvm-commits
mailing list