Make getBaseSymbol non recursive.
authorRafael Espindola <rafael.espindola@gmail.com>
Thu, 1 May 2014 13:09:42 +0000 (13:09 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Thu, 1 May 2014 13:09:42 +0000 (13:09 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207759 91177308-0d34-0410-b5e6-96231b3b80d8

lib/MC/ELFObjectWriter.cpp

index 9c224b3da6a8fce499f61bc5dc74895bac61c5bf..5e24f9148211215a087dad882740706d158b6c63 100644 (file)
@@ -585,16 +585,18 @@ static const MCSymbol *getBaseSymbol(const MCAsmLayout &Layout,
   MCValue Value;
   if (!Expr->EvaluateAsValue(Value, &Layout))
     llvm_unreachable("Invalid Expression");
+
   const MCSymbolRefExpr *RefB = Value.getSymB();
-  if (RefB) {
+  if (RefB)
     Layout.getAssembler().getContext().FatalError(
         SMLoc(), Twine("symbol '") + RefB->getSymbol().getName() +
                      "' could not be evaluated in a subtraction expression");
-  }
+
   const MCSymbolRefExpr *A = Value.getSymA();
   if (!A)
     return nullptr;
-  return getBaseSymbol(Layout, A->getSymbol());
+
+  return &A->getSymbol();
 }
 
 void ELFObjectWriter::WriteSymbol(SymbolTableWriter &Writer, ELFSymbolData &MSD,