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
diff --git a/lib/MC/MCAssembler.cpp b/lib/MC/MCAssembler.cpp
index 4cf8b7e..51b1273 100644
--- a/lib/MC/MCAssembler.cpp
+++ b/lib/MC/MCAssembler.cpp
@@ -478,7 +478,7 @@
     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 @@
     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 @@
     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 @@
       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 @@
   // 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;
   }