Move all the TLS processing logic into isel, don't do it in asmprinter at all.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74327 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp b/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp
index beac1bd..b180beb 100644
--- a/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp
+++ b/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp
@@ -580,43 +580,37 @@
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))