MachineModuleInfoMachO &ARMMCInstLower::getMachOMMI() const {
assert(getSubtarget().isTargetDarwin() &&"Can only get MachO info on darwin");
- return AsmPrinter.MMI->getObjFileInfo<MachineModuleInfoMachO>();
+ return AsmPrinter.MMI->getObjFileInfo<MachineModuleInfoMachO>();
}
#endif
default: assert(0 && "Unknown target flag on GV operand");
case 0: break;
}
-
+
return Printer.Mang->getSymbol(MO.getGlobal());
}
default: assert(0 && "Unknown target flag on GV operand");
case 0: break;
}
-
+
return Printer.GetExternalSymbolSymbol(MO.getSymbolName());
}
SmallString<256> Name;
raw_svector_ostream(Name) << Printer.MAI->getPrivateGlobalPrefix() << "JTI"
<< Printer.getFunctionNumber() << '_' << MO.getIndex();
-
+
#if 0
switch (MO.getTargetFlags()) {
default: llvm_unreachable("Unknown target flag on GV operand");
}
#endif
-
+
// Create a symbol for the name.
return Ctx.GetOrCreateSymbol(Name.str());
}
SmallString<256> Name;
raw_svector_ostream(Name) << Printer.MAI->getPrivateGlobalPrefix() << "CPI"
<< Printer.getFunctionNumber() << '_' << MO.getIndex();
-
+
#if 0
switch (MO.getTargetFlags()) {
default: llvm_unreachable("Unknown target flag on GV operand");
}
#endif
-
+
// Create a symbol for the name.
return Ctx.GetOrCreateSymbol(Name.str());
}
-
+
MCOperand ARMMCInstLower::
LowerSymbolOperand(const MachineOperand &MO, MCSymbol *Sym) const {
// FIXME: We would like an efficient form for this, so we don't have to do a
// lot of extra uniquing.
const MCExpr *Expr = MCSymbolRefExpr::Create(Sym, Ctx);
-
+
#if 0
switch (MO.getTargetFlags()) {
default: llvm_unreachable("Unknown target flag on GV operand");
}
#endif
-
+
if (!MO.isJTI() && MO.getOffset())
Expr = MCBinaryExpr::CreateAdd(Expr,
MCConstantExpr::Create(MO.getOffset(), Ctx),
void ARMMCInstLower::Lower(const MachineInstr *MI, MCInst &OutMI) const {
OutMI.setOpcode(MI->getOpcode());
-
+
for (unsigned i = 0, e = MI->getNumOperands(); i != e; ++i) {
const MachineOperand &MO = MI->getOperand(i);
-
+
MCOperand MCOp;
switch (MO.getType()) {
default:
MO.getBlockAddress()));
break;
}
-
+
OutMI.addOperand(MCOp);
}
-
+
}
class MachineOperand;
class Mangler;
//class ARMSubtarget;
-
+
/// ARMMCInstLower - This class is used to lower an MachineInstr into an MCInst.
class LLVM_LIBRARY_VISIBILITY ARMMCInstLower {
MCContext &Ctx;
public:
ARMMCInstLower(MCContext &ctx, Mangler &mang, AsmPrinter &printer)
: Ctx(ctx), Mang(mang), Printer(printer) {}
-
+
void Lower(const MachineInstr *MI, MCInst &OutMI) const;
//MCSymbol *GetPICBaseSymbol() const;
MCSymbol *GetJumpTableSymbol(const MachineOperand &MO) const;
MCSymbol *GetConstantPoolIndexSymbol(const MachineOperand &MO) const;
MCOperand LowerSymbolOperand(const MachineOperand &MO, MCSymbol *Sym) const;
-
+
/*
private:
MachineModuleInfoMachO &getMachOMMI() const;