use jump table operand flags in asm printer instead of "magic predicates"
authorChris Lattner <sabre@nondot.org>
Fri, 26 Jun 2009 18:55:01 +0000 (18:55 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 26 Jun 2009 18:55:01 +0000 (18:55 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74310 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp

index 726c1ae587f8acc5d2ef8aaabda79e260a4c47a1..6d277102365da972285c4986471a1242512ef912 100644 (file)
@@ -455,13 +455,25 @@ void X86ATTAsmPrinter::printOperand(const MachineInstr *MI, unsigned OpNo,
     O << TAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber() << '_'
       << MO.getIndex();
 
-    if (TM.getRelocationModel() == Reloc::PIC_) {
-      if (Subtarget->isPICStyleStub()) {
-        O << '-';
-        PrintPICBaseSymbol();
-      } else if (Subtarget->isPICStyleGOT()) {
-        O << "@GOTOFF";
+    switch (MO.getTargetFlags()) {
+    default:
+      assert(0 && "Unknown target flag on jump table operand");
+    case X86II::MO_NO_FLAG:
+      // FIXME: REMOVE EVENTUALLY.
+      if (TM.getRelocationModel() == Reloc::PIC_) {
+        assert(!Subtarget->isPICStyleStub() &&
+               !Subtarget->isPICStyleGOT() &&
+               "Should have operand flag!");
       }
+        
+      break;
+    case X86II::MO_PIC_BASE_OFFSET:
+      O << '-';
+      PrintPICBaseSymbol();
+      break;
+    case X86II::MO_GOTOFF:
+      O << "@GOTOFF";
+      break;
     }
 
     if (isMemOp && Subtarget->isPICStyleRIPRel() && !NotRIPRel)