aboutsummaryrefslogtreecommitdiff
path: root/lib/MC/MCAssembler.cpp
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2010-03-18 00:59:10 +0000
committerDaniel Dunbar <daniel@zuster.org>2010-03-18 00:59:10 +0000
commit9a1d20042f6a6ec648a3588f9b13264a4570aab0 (patch)
tree57fc2bda07a314002464dd7eb03b25e372974ba5 /lib/MC/MCAssembler.cpp
parentdaf97333697e1d243e531f4be648b1640d6a58bb (diff)
MCValue: Change to holding MCSymbolRefExprs instead of MCSymbols, we will need this for accessing to symbol modifiers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98791 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/MC/MCAssembler.cpp')
-rw-r--r--lib/MC/MCAssembler.cpp28
1 files changed, 14 insertions, 14 deletions
diff --git a/lib/MC/MCAssembler.cpp b/lib/MC/MCAssembler.cpp
index 4cf8b7e522..51b12734af 100644
--- a/lib/MC/MCAssembler.cpp
+++ b/lib/MC/MCAssembler.cpp
@@ -478,7 +478,7 @@ public:
unsigned Type = RIT_Vanilla;
// See <reloc.h>.
- const MCSymbol *A = Target.getSymA();
+ const MCSymbol *A = &Target.getSymA()->getSymbol();
MCSymbolData *A_SD = &Asm.getSymbolData(*A);
if (!A_SD->getFragment())
@@ -488,11 +488,11 @@ public:
uint32_t Value = A_SD->getAddress();
uint32_t Value2 = 0;
- if (const MCSymbol *B = Target.getSymB()) {
- MCSymbolData *B_SD = &Asm.getSymbolData(*B);
+ if (const MCSymbolRefExpr *B = Target.getSymB()) {
+ MCSymbolData *B_SD = &Asm.getSymbolData(B->getSymbol());
if (!B_SD->getFragment())
- llvm_report_error("symbol '" + B->getName() +
+ llvm_report_error("symbol '" + B->getSymbol().getName() +
"' can not be undefined in a subtraction expression");
// Select the appropriate difference relocation type.
@@ -545,7 +545,7 @@ public:
if (IsPCRel)
Offset += 1 << Log2Size;
if (Target.getSymB() ||
- (Target.getSymA() && !Target.getSymA()->isUndefined() &&
+ (Target.getSymA() && !Target.getSymA()->getSymbol().isUndefined() &&
Offset))
return ComputeScatteredRelocationInfo(Asm, Fragment, Fixup, Target,
Relocs);
@@ -565,7 +565,7 @@ public:
Type = RIT_Vanilla;
Value = 0;
} else {
- const MCSymbol *Symbol = Target.getSymA();
+ const MCSymbol *Symbol = &Target.getSymA()->getSymbol();
MCSymbolData *SD = &Asm.getSymbolData(*Symbol);
if (Symbol->isUndefined()) {
@@ -1033,28 +1033,28 @@ bool MCAssembler::EvaluateFixup(const MCAsmLayout &Layout, MCAsmFixup &Fixup,
// atom, and so the value is resolved. We need explicit atom's to implement
// this more precisely.
bool IsResolved = true, IsPCRel = isFixupKindPCRel(Fixup.Kind);
- if (const MCSymbol *Symbol = Target.getSymA()) {
- if (Symbol->isDefined())
- Value += getSymbolData(*Symbol).getAddress();
+ if (const MCSymbolRefExpr *A = Target.getSymA()) {
+ if (A->getSymbol().isDefined())
+ Value += getSymbolData(A->getSymbol()).getAddress();
else
IsResolved = false;
// With scattered symbols, we assume anything that isn't a PCrel temporary
// access can have an arbitrary value.
if (getBackend().hasScatteredSymbols() &&
- (!IsPCRel || !Symbol->isTemporary()))
+ (!IsPCRel || !A->getSymbol().isTemporary()))
IsResolved = false;
}
- if (const MCSymbol *Symbol = Target.getSymB()) {
- if (Symbol->isDefined())
- Value -= getSymbolData(*Symbol).getAddress();
+ if (const MCSymbolRefExpr *B = Target.getSymB()) {
+ if (B->getSymbol().isDefined())
+ Value -= getSymbolData(B->getSymbol()).getAddress();
else
IsResolved = false;
// With scattered symbols, we assume anything that isn't a PCrel temporary
// access can have an arbitrary value.
if (getBackend().hasScatteredSymbols() &&
- (!IsPCRel || !Symbol->isTemporary()))
+ (!IsPCRel || !B->getSymbol().isTemporary()))
IsResolved = false;
}