mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-09 13:33:17 +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:
parent
20813e01e7
commit
908bafe6fa
@ -320,20 +320,38 @@ void X86MCInstLower::Lower(const MachineInstr *MI, MCInst &OutMI) const {
|
||||
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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user