diff options
| author | Chris Lattner <sabre@nondot.org> | 2009-06-26 21:20:29 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2009-06-26 21:20:29 +0000 |
| commit | 49ed726e46afb45e7ca60693668406d3e5e27331 (patch) | |
| tree | bdd70b8003c418b50bf047bbbcfa6d03869c2da6 /llvm/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp | |
| parent | 899abc46551f669d72ef7a40a1c33bd73f55c6d8 (diff) | |
| download | bcm5719-llvm-49ed726e46afb45e7ca60693668406d3e5e27331.tar.gz bcm5719-llvm-49ed726e46afb45e7ca60693668406d3e5e27331.zip | |
Move all the TLS processing logic into isel, don't do it in asmprinter at all.
llvm-svn: 74327
Diffstat (limited to 'llvm/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp')
| -rw-r--r-- | llvm/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp | 52 |
1 files changed, 23 insertions, 29 deletions
diff --git a/llvm/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp b/llvm/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp index beac1bdd917..b180beb9d69 100644 --- a/llvm/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp +++ b/llvm/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp @@ -580,43 +580,37 @@ void X86ATTAsmPrinter::printOperand(const MachineInstr *MI, unsigned OpNo, if (needCloseParen) O << ')'; + bool isRIPRelative = false; + switch (MO.getTargetFlags()) { default: assert(0 && "Unknown target flag on GV operand"); case X86II::MO_NO_FLAG: + // FIXME: RIP THIS CHECKING CODE OUT EVENTUALLY. + if (isThreadLocal) + assert(0 && "Not lowered right"); + break; + case X86II::MO_TLSGD: + O << "@TLSGD"; + break; + case X86II::MO_GOTTPOFF: + O << "@GOTTPOFF"; + assert(!NotRIPRel); + isRIPRelative = true; + break; + case X86II::MO_INDNTPOFF: + O << "@INDNTPOFF"; + break; + case X86II::MO_TPOFF: + O << "@TPOFF"; + break; + case X86II::MO_NTPOFF: + O << "@NTPOFF"; break; } - - bool isRIPRelative = false; if (isThreadLocal) { - TLSModel::Model model = getTLSModel(GVar, TM.getRelocationModel()); - switch (model) { - case TLSModel::GeneralDynamic: - O << "@TLSGD"; - break; - case TLSModel::LocalDynamic: - // O << "@TLSLD"; // local dynamic not implemented - O << "@TLSGD"; - break; - case TLSModel::InitialExec: - if (Subtarget->is64Bit()) { - assert (!NotRIPRel); - O << "@GOTTPOFF"; - isRIPRelative = true; - } else { - O << "@INDNTPOFF"; - } - break; - case TLSModel::LocalExec: - if (Subtarget->is64Bit()) - O << "@TPOFF"; - else - O << "@NTPOFF"; - break; - default: - assert (0 && "Unknown TLS model"); - } + // DEAD } else if (isMemOp) { if (shouldPrintGOT(TM, Subtarget)) { if (Subtarget->GVRequiresExtraLoad(GV, TM, false)) |

