mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-05 03:36:43 +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. llvm-svn: 109056
This commit is contained in:
parent
e380b82a47
commit
418c190d93
@ -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