summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2009-04-07 21:37:46 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2009-04-07 21:37:46 +0000
commit1edda06792940406e77b5369c57fe0b468448ec8 (patch)
tree6d9bc6b22f58bc5611e01e17730118a607aa1f47 /llvm/lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.cpp
parent9ecb84bb21edb1c4407fae35e149a307e2ba63ad (diff)
downloadbcm5719-llvm-1edda06792940406e77b5369c57fe0b468448ec8.tar.gz
bcm5719-llvm-1edda06792940406e77b5369c57fe0b468448ec8.zip
Reduce code duplication on the TLS implementation.
This introduces a small regression on the generated code quality in the case we are just computing addresses, not loading values. Will work on it and on X86-64 support. llvm-svn: 68552
Diffstat (limited to 'llvm/lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.cpp')
-rw-r--r--llvm/lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.cpp18
1 files changed, 14 insertions, 4 deletions
diff --git a/llvm/lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.cpp b/llvm/lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.cpp
index 7823ca6da3d..b694a185100 100644
--- a/llvm/lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.cpp
+++ b/llvm/lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.cpp
@@ -271,10 +271,9 @@ void X86IntelAsmPrinter::printOp(const MachineOperand &MO,
}
}
-void X86IntelAsmPrinter::printMemReference(const MachineInstr *MI, unsigned Op,
- const char *Modifier) {
- assert(isMem(MI, Op) && "Invalid memory reference!");
-
+void X86IntelAsmPrinter::printLeaMemReference(const MachineInstr *MI,
+ unsigned Op,
+ const char *Modifier) {
const MachineOperand &BaseReg = MI->getOperand(Op);
int ScaleVal = MI->getOperand(Op+1).getImm();
const MachineOperand &IndexReg = MI->getOperand(Op+2);
@@ -317,6 +316,17 @@ void X86IntelAsmPrinter::printMemReference(const MachineInstr *MI, unsigned Op,
O << "]";
}
+void X86IntelAsmPrinter::printMemReference(const MachineInstr *MI, unsigned Op,
+ const char *Modifier) {
+ assert(isMem(MI, Op) && "Invalid memory reference!");
+ MachineOperand Segment = MI->getOperand(Op+4);
+ if (Segment.getReg()) {
+ printOperand(MI, Op+4, Modifier);
+ O << ':';
+ }
+ printLeaMemReference(MI, Op, Modifier);
+}
+
void X86IntelAsmPrinter::printPICJumpTableSetLabel(unsigned uid,
const MachineBasicBlock *MBB) const {
if (!TAI->getSetDirective())
OpenPOWER on IntegriCloud