mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-12 23:37:33 +00:00
Make BuildSymbolDiff an static helper.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215717 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
cef3ad6720
commit
305a51fec3
@ -196,9 +196,6 @@ class MCStreamer {
|
||||
protected:
|
||||
MCStreamer(MCContext &Ctx);
|
||||
|
||||
const MCExpr *BuildSymbolDiff(MCContext &Context, const MCSymbol *A,
|
||||
const MCSymbol *B);
|
||||
|
||||
virtual void EmitCFIStartProcImpl(MCDwarfFrameInfo &Frame);
|
||||
virtual void EmitCFIEndProcImpl(MCDwarfFrameInfo &CurFrame);
|
||||
|
||||
|
@ -264,6 +264,17 @@ void MCObjectStreamer::EmitDwarfLocDirective(unsigned FileNo, unsigned Line,
|
||||
Isa, Discriminator, FileName);
|
||||
}
|
||||
|
||||
static const MCExpr *buildSymbolDiff(MCObjectStreamer &OS, const MCSymbol *A,
|
||||
const MCSymbol *B) {
|
||||
MCContext &Context = OS.getContext();
|
||||
MCSymbolRefExpr::VariantKind Variant = MCSymbolRefExpr::VK_None;
|
||||
const MCExpr *ARef = MCSymbolRefExpr::Create(A, Variant, Context);
|
||||
const MCExpr *BRef = MCSymbolRefExpr::Create(B, Variant, Context);
|
||||
const MCExpr *AddrDelta =
|
||||
MCBinaryExpr::Create(MCBinaryExpr::Sub, ARef, BRef, Context);
|
||||
return AddrDelta;
|
||||
}
|
||||
|
||||
void MCObjectStreamer::EmitDwarfAdvanceLineAddr(int64_t LineDelta,
|
||||
const MCSymbol *LastLabel,
|
||||
const MCSymbol *Label,
|
||||
@ -272,7 +283,7 @@ void MCObjectStreamer::EmitDwarfAdvanceLineAddr(int64_t LineDelta,
|
||||
EmitDwarfSetLineAddr(LineDelta, Label, PointerSize);
|
||||
return;
|
||||
}
|
||||
const MCExpr *AddrDelta = BuildSymbolDiff(getContext(), Label, LastLabel);
|
||||
const MCExpr *AddrDelta = buildSymbolDiff(*this, Label, LastLabel);
|
||||
int64_t Res;
|
||||
if (AddrDelta->EvaluateAsAbsolute(Res, getAssembler())) {
|
||||
MCDwarfLineAddr::Emit(this, LineDelta, Res);
|
||||
@ -283,7 +294,7 @@ void MCObjectStreamer::EmitDwarfAdvanceLineAddr(int64_t LineDelta,
|
||||
|
||||
void MCObjectStreamer::EmitDwarfAdvanceFrameAddr(const MCSymbol *LastLabel,
|
||||
const MCSymbol *Label) {
|
||||
const MCExpr *AddrDelta = BuildSymbolDiff(getContext(), Label, LastLabel);
|
||||
const MCExpr *AddrDelta = buildSymbolDiff(*this, Label, LastLabel);
|
||||
int64_t Res;
|
||||
if (AddrDelta->EvaluateAsAbsolute(Res, getAssembler())) {
|
||||
MCDwarfFrameEmitter::EmitAdvanceLoc(*this, Res);
|
||||
|
@ -56,19 +56,6 @@ void MCStreamer::reset() {
|
||||
SectionStack.push_back(std::pair<MCSectionSubPair, MCSectionSubPair>());
|
||||
}
|
||||
|
||||
const MCExpr *MCStreamer::BuildSymbolDiff(MCContext &Context,
|
||||
const MCSymbol *A,
|
||||
const MCSymbol *B) {
|
||||
MCSymbolRefExpr::VariantKind Variant = MCSymbolRefExpr::VK_None;
|
||||
const MCExpr *ARef =
|
||||
MCSymbolRefExpr::Create(A, Variant, Context);
|
||||
const MCExpr *BRef =
|
||||
MCSymbolRefExpr::Create(B, Variant, Context);
|
||||
const MCExpr *AddrDelta =
|
||||
MCBinaryExpr::Create(MCBinaryExpr::Sub, ARef, BRef, Context);
|
||||
return AddrDelta;
|
||||
}
|
||||
|
||||
static const MCExpr *forceExpAbs(MCStreamer &OS, const MCExpr* Expr) {
|
||||
MCContext &Context = OS.getContext();
|
||||
assert(!isa<MCSymbolRefExpr>(Expr));
|
||||
|
Loading…
x
Reference in New Issue
Block a user