1
0
mirror of https://github.com/c64scene-ar/llvm-6502.git synced 2025-04-02 10:33:53 +00:00

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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109056 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2010-07-21 23:03:35 +00:00
parent 20813e01e7
commit 908bafe6fa

@ -320,20 +320,38 @@ void X86MCInstLower::Lower(const MachineInstr *MI, MCInst &OutMI) const {
MO.getMBB()->getSymbol(), Ctx)); MO.getMBB()->getSymbol(), Ctx));
break; break;
case MachineOperand::MO_GlobalAddress: 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; break;
case MachineOperand::MO_ExternalSymbol: case MachineOperand::MO_ExternalSymbol:
MCOp = LowerSymbolOperand(MO, GetSymbolFromOperand(MO)); if (AsmPrinter != 0)
MCOp = LowerSymbolOperand(MO, GetSymbolFromOperand(MO));
else
MCOp = MCOperand::CreateImm(0);
break; break;
case MachineOperand::MO_JumpTableIndex: 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; break;
case MachineOperand::MO_ConstantPoolIndex: 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; break;
case MachineOperand::MO_BlockAddress: case MachineOperand::MO_BlockAddress:
MCOp = LowerSymbolOperand(MO, if (AsmPrinter != 0)
MCOp = LowerSymbolOperand(MO,
AsmPrinter->GetBlockAddressSymbol(MO.getBlockAddress())); AsmPrinter->GetBlockAddressSymbol(MO.getBlockAddress()));
else
MCOp = MCOperand::CreateImm(0);
break; break;
} }