[llvm-commits] [llvm] r109056 - /llvm/trunk/lib/Target/X86/X86MCInstLower.cpp

Chris Lattner sabre at nondot.org
Wed Jul 21 16:03:35 PDT 2010


Author: lattner
Date: Wed Jul 21 18:03:35 2010
New Revision: 109056

URL: http://llvm.org/viewvc/llvm-project?rev=109056&view=rev
Log:
add some rough support for making mcinst lowering work without an
asmprinter or mangler around.  This is option #B for killing off 
X86InstrInfo::GetInstSizeInBytes.  Option #A (killing 
"needsexactsize") was sent for consideration to llvmdev.

Modified:
    llvm/trunk/lib/Target/X86/X86MCInstLower.cpp

Modified: llvm/trunk/lib/Target/X86/X86MCInstLower.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86MCInstLower.cpp?rev=109056&r1=109055&r2=109056&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86MCInstLower.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86MCInstLower.cpp Wed Jul 21 18:03:35 2010
@@ -320,20 +320,38 @@
                        MO.getMBB()->getSymbol(), Ctx));
       break;
     case MachineOperand::MO_GlobalAddress:
-      MCOp = LowerSymbolOperand(MO, GetSymbolFromOperand(MO));
+      // If we don't have an asmprinter, we're converting to MCInst to get
+      // instruction sizes, which doesn't need precise value information for
+      // symbols, just lower to a 0 immediate.
+      if (AsmPrinter != 0)
+        MCOp = LowerSymbolOperand(MO, GetSymbolFromOperand(MO));
+      else
+        MCOp = MCOperand::CreateImm(0);
       break;
     case MachineOperand::MO_ExternalSymbol:
-      MCOp = LowerSymbolOperand(MO, GetSymbolFromOperand(MO));
+      if (AsmPrinter != 0)
+        MCOp = LowerSymbolOperand(MO, GetSymbolFromOperand(MO));
+      else
+        MCOp = MCOperand::CreateImm(0);
       break;
     case MachineOperand::MO_JumpTableIndex:
-      MCOp = LowerSymbolOperand(MO, AsmPrinter->GetJTISymbol(MO.getIndex()));
+      if (AsmPrinter != 0)
+        MCOp = LowerSymbolOperand(MO, AsmPrinter->GetJTISymbol(MO.getIndex()));
+      else
+        MCOp = MCOperand::CreateImm(0);
       break;
     case MachineOperand::MO_ConstantPoolIndex:
-      MCOp = LowerSymbolOperand(MO, AsmPrinter->GetCPISymbol(MO.getIndex()));
+      if (AsmPrinter != 0)
+        MCOp = LowerSymbolOperand(MO, AsmPrinter->GetCPISymbol(MO.getIndex()));
+      else
+        MCOp = MCOperand::CreateImm(0);
       break;
     case MachineOperand::MO_BlockAddress:
-      MCOp = LowerSymbolOperand(MO,
+      if (AsmPrinter != 0)
+        MCOp = LowerSymbolOperand(MO,
                        AsmPrinter->GetBlockAddressSymbol(MO.getBlockAddress()));
+      else
+        MCOp = MCOperand::CreateImm(0);
       break;
     }
     





More information about the llvm-commits mailing list