llvm-mc: Remove MCAsmParser::Parse[Paren]RelocatableExpression.
authorDaniel Dunbar <daniel@zuster.org>
Mon, 31 Aug 2009 08:08:50 +0000 (08:08 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Mon, 31 Aug 2009 08:08:50 +0000 (08:08 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80576 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/MC/MCAsmParser.h
tools/llvm-mc/AsmParser.cpp
tools/llvm-mc/AsmParser.h

index 23c97f58affdaa9e06a60a967c04f2894287dc4e..8c1b7b8863361a9f309fe0b22f97ef5e84eca73b 100644 (file)
@@ -68,24 +68,6 @@ public:
   /// on error.
   /// @result - False on success.
   virtual bool ParseAbsoluteExpression(int64_t &Res) = 0;
-
-  /// ParseRelocatableExpression - Parse an expression which must be
-  /// relocatable.
-  ///
-  /// @param Res - The relocatable expression value. The result is undefined on
-  /// error.  
-  /// @result - False on success.
-  virtual bool ParseRelocatableExpression(MCValue &Res) = 0;
-
-  /// ParseParenRelocatableExpression - Parse an expression which must be
-  /// relocatable, assuming that an initial '(' has already been consumed.
-  ///
-  /// @param Res - The relocatable expression value. The result is undefined on
-  /// error.  
-  /// @result - False on success.
-  ///
-  /// @see ParseRelocatableExpression, ParseParenExpr.
-  virtual bool ParseParenRelocatableExpression(MCValue &Res) = 0;
 };
 
 } // End llvm namespace
index 78cab38b4ffc8a324077287e9eaf9173918c2aef..0387857c247e8ee12537d0e3d0b2ce52d2ee3d70 100644 (file)
@@ -279,32 +279,6 @@ bool AsmParser::ParseAbsoluteExpression(int64_t &Res) {
   return false;
 }
 
-bool AsmParser::ParseRelocatableExpression(MCValue &Res) {
-  const MCExpr *Expr;
-  
-  SMLoc StartLoc = Lexer.getLoc();
-  if (ParseExpression(Expr))
-    return true;
-
-  if (!Expr->EvaluateAsRelocatable(Ctx, Res))
-    return Error(StartLoc, "expected relocatable expression");
-
-  return false;
-}
-
-bool AsmParser::ParseParenRelocatableExpression(MCValue &Res) {
-  const MCExpr *Expr;
-  
-  SMLoc StartLoc = Lexer.getLoc();
-  if (ParseParenExpr(Expr))
-    return true;
-
-  if (!Expr->EvaluateAsRelocatable(Ctx, Res))
-    return Error(StartLoc, "expected relocatable expression");
-
-  return false;
-}
-
 static unsigned getBinOpPrecedence(AsmToken::TokenKind K, 
                                    MCBinaryExpr::Opcode &Kind) {
   switch (K) {
@@ -739,9 +713,14 @@ bool AsmParser::ParseAssignment(const StringRef &Name, bool IsDotSet) {
   SMLoc EqualLoc = Lexer.getLoc();
 
   MCValue Value;
-  if (ParseRelocatableExpression(Value))
+  const MCExpr *Expr;
+  SMLoc StartLoc = Lexer.getLoc();
+  if (ParseExpression(Expr))
     return true;
   
+  if (!Expr->EvaluateAsRelocatable(Ctx, Value))
+    return Error(StartLoc, "expected relocatable expression");
+
   if (Lexer.isNot(AsmToken::EndOfStatement))
     return TokError("unexpected token in assignment");
 
@@ -958,11 +937,16 @@ bool AsmParser::ParseDirectiveAscii(bool ZeroTerminated) {
 bool AsmParser::ParseDirectiveValue(unsigned Size) {
   if (Lexer.isNot(AsmToken::EndOfStatement)) {
     for (;;) {
-      MCValue Expr;
-      if (ParseRelocatableExpression(Expr))
+      MCValue Value;
+      const MCExpr *Expr;
+      SMLoc StartLoc = Lexer.getLoc();
+      if (ParseExpression(Expr))
         return true;
 
-      Out.EmitValue(Expr, Size);
+      if (!Expr->EvaluateAsRelocatable(Ctx, Value))
+        return Error(StartLoc, "expected relocatable expression");
+
+      Out.EmitValue(Value, Size);
 
       if (Lexer.is(AsmToken::EndOfStatement))
         break;
@@ -1054,9 +1038,14 @@ bool AsmParser::ParseDirectiveFill() {
 ///  ::= .org expression [ , expression ]
 bool AsmParser::ParseDirectiveOrg() {
   MCValue Offset;
-  if (ParseRelocatableExpression(Offset))
+  const MCExpr *Expr;
+  SMLoc StartLoc = Lexer.getLoc();
+  if (ParseExpression(Expr))
     return true;
 
+  if (!Expr->EvaluateAsRelocatable(Ctx, Offset))
+    return Error(StartLoc, "expected relocatable expression");
+
   // Parse optional fill expression.
   int64_t FillExpr = 0;
   if (Lexer.isNot(AsmToken::EndOfStatement)) {
@@ -1428,10 +1417,15 @@ bool AsmParser::ParseDirectiveDarwinLsym() {
     return TokError("unexpected token in '.lsym' directive");
   Lexer.Lex();
 
-  MCValue Expr;
-  if (ParseRelocatableExpression(Expr))
+  MCValue Value;
+  const MCExpr *Expr;
+  SMLoc StartLoc = Lexer.getLoc();
+  if (ParseExpression(Expr))
     return true;
 
+  if (!Expr->EvaluateAsRelocatable(Ctx, Value))
+    return Error(StartLoc, "expected relocatable expression");
+
   if (Lexer.isNot(AsmToken::EndOfStatement))
     return TokError("unexpected token in '.lsym' directive");
   
index 2e328d9f6fd31cf99bdb733a01ac9180e57b03f5..fda79ca84264e4756c90d8e9be444e49da50d43d 100644 (file)
@@ -74,10 +74,6 @@ public:
 
   virtual bool ParseAbsoluteExpression(int64_t &Res);
 
-  virtual bool ParseRelocatableExpression(MCValue &Res);
-
-  virtual bool ParseParenRelocatableExpression(MCValue &Res);
-
   /// }
 
 private: