mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-01 15:11:24 +00:00
Simplify EvaluateAsAbsolute now that EvaluateAsRelocatableImpl does all
the folding it can. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122359 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7a45903bf4
commit
64b4412196
@ -269,27 +269,13 @@ bool MCExpr::EvaluateAsAbsolute(int64_t &Res, const MCAssembler *Asm,
|
||||
// FIXME: The use if InSet = Addrs is a hack. Setting InSet causes us
|
||||
// absolutize differences across sections and that is what the MachO writer
|
||||
// uses Addrs for.
|
||||
if (!EvaluateAsRelocatableImpl(Value, Asm, Layout, Addrs, /*InSet*/ Addrs) ||
|
||||
!Value.isAbsolute()) {
|
||||
// EvaluateAsAbsolute is defined to return the "current value" of
|
||||
// the expression if we are given a Layout object, even in cases
|
||||
// when the value is not fixed.
|
||||
if (Layout) {
|
||||
Res = Value.getConstant();
|
||||
if (Value.getSymA()) {
|
||||
Res += Layout->getSymbolOffset(
|
||||
&Layout->getAssembler().getSymbolData(Value.getSymA()->getSymbol()));
|
||||
}
|
||||
if (Value.getSymB()) {
|
||||
Res -= Layout->getSymbolOffset(
|
||||
&Layout->getAssembler().getSymbolData(Value.getSymB()->getSymbol()));
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
bool IsRelocatable =
|
||||
EvaluateAsRelocatableImpl(Value, Asm, Layout, Addrs, /*InSet*/ Addrs);
|
||||
|
||||
// Record the current value.
|
||||
Res = Value.getConstant();
|
||||
return true;
|
||||
|
||||
return IsRelocatable && Value.isAbsolute();
|
||||
}
|
||||
|
||||
/// \brief Helper method for \see EvaluateSymbolAdd().
|
||||
|
Loading…
Reference in New Issue
Block a user