mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-19 06:31:18 +00:00
Changes EvaluateAsAbsolute() to return the "current value" of the expression
if we are given a Layout object, even in cases when the value is not fixed. This will be needed by the final patch for the dwarf .loc support to size a new MCDwarf fragment needed to build and emit dwarf line number tables. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115155 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
0bb83a84d4
commit
b5a3ec17a4
@ -215,8 +215,23 @@ bool MCExpr::EvaluateAsAbsolute(int64_t &Res, const MCAsmLayout *Layout) const {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!EvaluateAsRelocatable(Value, Layout) || !Value.isAbsolute())
|
if (!EvaluateAsRelocatable(Value, Layout) || !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->getSymbolAddress(
|
||||||
|
&Layout->getAssembler().getSymbolData(Value.getSymA()->getSymbol()));
|
||||||
|
}
|
||||||
|
if (Value.getSymB()) {
|
||||||
|
Res -= Layout->getSymbolAddress(
|
||||||
|
&Layout->getAssembler().getSymbolData(Value.getSymB()->getSymbol()));
|
||||||
|
}
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
Res = Value.getConstant();
|
Res = Value.getConstant();
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user