mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-12 17:32:19 +00:00
Lift EmitAssignment into MCObjectStreamer which gets rid of at least three
duplicate implementations in format-specific streamers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169613 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6eb3e87df0
commit
ef76b273f9
@ -50,7 +50,6 @@ public:
|
||||
virtual void EmitLabel(MCSymbol *Symbol);
|
||||
virtual void EmitAssemblerFlag(MCAssemblerFlag Flag);
|
||||
virtual void EmitThumbFunc(MCSymbol *Func);
|
||||
virtual void EmitAssignment(MCSymbol *Symbol, const MCExpr *Value);
|
||||
virtual void EmitWeakReference(MCSymbol *Alias, const MCSymbol *Symbol);
|
||||
virtual void EmitSymbolAttribute(MCSymbol *Symbol, MCSymbolAttr Attribute);
|
||||
virtual void EmitSymbolDesc(MCSymbol *Symbol, unsigned DescValue);
|
||||
|
@ -64,6 +64,7 @@ public:
|
||||
/// @{
|
||||
|
||||
virtual void EmitLabel(MCSymbol *Symbol);
|
||||
virtual void EmitAssignment(MCSymbol *Symbol, const MCExpr *Value);
|
||||
virtual void EmitValueImpl(const MCExpr *Value, unsigned Size,
|
||||
unsigned AddrSpace);
|
||||
virtual void EmitULEB128Value(const MCExpr *Value);
|
||||
|
@ -100,14 +100,6 @@ void MCELFStreamer::EmitAssemblerFlag(MCAssemblerFlag Flag) {
|
||||
llvm_unreachable("invalid assembler flag!");
|
||||
}
|
||||
|
||||
void MCELFStreamer::EmitAssignment(MCSymbol *Symbol, const MCExpr *Value) {
|
||||
// TODO: This is exactly the same as WinCOFFStreamer. Consider merging into
|
||||
// MCObjectStreamer.
|
||||
// FIXME: Lift context changes into super class.
|
||||
getAssembler().getOrCreateSymbolData(*Symbol);
|
||||
Symbol->setVariableValue(AddValueSymbols(Value));
|
||||
}
|
||||
|
||||
void MCELFStreamer::ChangeSection(const MCSection *Section) {
|
||||
const MCSymbol *Grp = static_cast<const MCSectionELF *>(Section)->getGroup();
|
||||
if (Grp)
|
||||
|
@ -48,7 +48,6 @@ public:
|
||||
virtual void EmitAssemblerFlag(MCAssemblerFlag Flag);
|
||||
virtual void EmitDataRegion(MCDataRegionType Kind);
|
||||
virtual void EmitThumbFunc(MCSymbol *Func);
|
||||
virtual void EmitAssignment(MCSymbol *Symbol, const MCExpr *Value);
|
||||
virtual void EmitSymbolAttribute(MCSymbol *Symbol, MCSymbolAttr Attribute);
|
||||
virtual void EmitSymbolDesc(MCSymbol *Symbol, unsigned DescValue);
|
||||
virtual void EmitCommonSymbol(MCSymbol *Symbol, uint64_t Size,
|
||||
@ -200,14 +199,6 @@ void MCMachOStreamer::EmitThumbFunc(MCSymbol *Symbol) {
|
||||
SD.setFlags(SD.getFlags() | SF_ThumbFunc);
|
||||
}
|
||||
|
||||
void MCMachOStreamer::EmitAssignment(MCSymbol *Symbol, const MCExpr *Value) {
|
||||
// TODO: This is exactly the same as WinCOFFStreamer. Consider merging into
|
||||
// MCObjectStreamer.
|
||||
// FIXME: Lift context changes into super class.
|
||||
getAssembler().getOrCreateSymbolData(*Symbol);
|
||||
Symbol->setVariableValue(AddValueSymbols(Value));
|
||||
}
|
||||
|
||||
void MCMachOStreamer::EmitSymbolAttribute(MCSymbol *Symbol,
|
||||
MCSymbolAttr Attribute) {
|
||||
// Indirect symbols are handled differently, to match how 'as' handles
|
||||
|
@ -159,6 +159,11 @@ void MCObjectStreamer::ChangeSection(const MCSection *Section) {
|
||||
CurSectionData = &getAssembler().getOrCreateSectionData(*Section);
|
||||
}
|
||||
|
||||
void MCObjectStreamer::EmitAssignment(MCSymbol *Symbol, const MCExpr *Value) {
|
||||
getAssembler().getOrCreateSymbolData(*Symbol);
|
||||
Symbol->setVariableValue(AddValueSymbols(Value));
|
||||
}
|
||||
|
||||
void MCObjectStreamer::EmitInstruction(const MCInst &Inst) {
|
||||
// Scan for values.
|
||||
for (unsigned i = Inst.getNumOperands(); i--; )
|
||||
|
@ -37,7 +37,6 @@ public:
|
||||
|
||||
virtual void InitSections();
|
||||
virtual void EmitLabel(MCSymbol *Symbol);
|
||||
virtual void EmitAssignment(MCSymbol *Symbol, const MCExpr *Value);
|
||||
virtual void EmitZerofill(const MCSection *Section, MCSymbol *Symbol = 0,
|
||||
uint64_t Size = 0, unsigned ByteAlignment = 0);
|
||||
virtual void EmitBytes(StringRef Data, unsigned AddrSpace);
|
||||
@ -135,14 +134,6 @@ void MCPureStreamer::EmitLabel(MCSymbol *Symbol) {
|
||||
SD.setOffset(F->getContents().size());
|
||||
}
|
||||
|
||||
void MCPureStreamer::EmitAssignment(MCSymbol *Symbol, const MCExpr *Value) {
|
||||
// TODO: This is exactly the same as WinCOFFStreamer. Consider merging into
|
||||
// MCObjectStreamer.
|
||||
// FIXME: Lift context changes into super class.
|
||||
getAssembler().getOrCreateSymbolData(*Symbol);
|
||||
Symbol->setVariableValue(AddValueSymbols(Value));
|
||||
}
|
||||
|
||||
void MCPureStreamer::EmitZerofill(const MCSection *Section, MCSymbol *Symbol,
|
||||
uint64_t Size, unsigned ByteAlignment) {
|
||||
report_fatal_error("not yet implemented in pure streamer");
|
||||
|
@ -193,8 +193,6 @@ void WinCOFFStreamer::EmitAssignment(MCSymbol *Symbol, const MCExpr *Value) {
|
||||
// don't really even do.
|
||||
|
||||
if (Value->getKind() != MCExpr::SymbolRef) {
|
||||
// TODO: This is exactly the same as MachOStreamer. Consider merging into
|
||||
// MCObjectStreamer.
|
||||
getAssembler().getOrCreateSymbolData(*Symbol);
|
||||
AddValueSymbols(Value);
|
||||
Symbol->setVariableValue(Value);
|
||||
|
Loading…
x
Reference in New Issue
Block a user