diff options
| -rw-r--r-- | llvm/include/llvm/MC/MCAsmParser.h | 16 | ||||
| -rw-r--r-- | llvm/tools/llvm-mc/AsmParser.cpp | 8 | ||||
| -rw-r--r-- | llvm/tools/llvm-mc/AsmParser.h | 2 | 
3 files changed, 26 insertions, 0 deletions
diff --git a/llvm/include/llvm/MC/MCAsmParser.h b/llvm/include/llvm/MC/MCAsmParser.h index e0a48f1e9c0..23c97f58aff 100644 --- a/llvm/include/llvm/MC/MCAsmParser.h +++ b/llvm/include/llvm/MC/MCAsmParser.h @@ -15,6 +15,7 @@  namespace llvm {  class MCAsmLexer;  class MCContext; +class MCExpr;  class MCValue;  class SMLoc;  class Twine; @@ -45,6 +46,21 @@ public:    /// clients.    virtual bool Error(SMLoc L, const Twine &Msg) = 0; +  /// ParseExpression - Parse an arbitrary expression. +  /// +  /// @param Res - The value of the expression. The result is undefined +  /// on error. +  /// @result - False on success. +  virtual bool ParseExpression(const MCExpr *&Res) = 0; + +  /// ParseParenExpression - Parse an arbitrary expression, assuming that an +  /// initial '(' has already been consumed. +  /// +  /// @param Res - The value of the expression. The result is undefined +  /// on error. +  /// @result - False on success. +  virtual bool ParseParenExpression(const MCExpr *&Res) = 0; +    /// ParseAbsoluteExpression - Parse an expression which must evaluate to an    /// absolute value.    /// diff --git a/llvm/tools/llvm-mc/AsmParser.cpp b/llvm/tools/llvm-mc/AsmParser.cpp index 5d73a9fa540..78cab38b4ff 100644 --- a/llvm/tools/llvm-mc/AsmParser.cpp +++ b/llvm/tools/llvm-mc/AsmParser.cpp @@ -21,6 +21,7 @@  #include "llvm/MC/MCSectionMachO.h"  #include "llvm/MC/MCStreamer.h"  #include "llvm/MC/MCSymbol.h" +#include "llvm/MC/MCValue.h"  #include "llvm/Support/SourceMgr.h"  #include "llvm/Support/raw_ostream.h"  #include "llvm/Target/TargetAsmParser.h" @@ -258,6 +259,13 @@ bool AsmParser::ParseExpression(const MCExpr *&Res) {           ParseBinOpRHS(1, Res);  } +bool AsmParser::ParseParenExpression(const MCExpr *&Res) { +  if (ParseParenExpr(Res)) +    return true; + +  return false; +} +  bool AsmParser::ParseAbsoluteExpression(int64_t &Res) {    const MCExpr *Expr; diff --git a/llvm/tools/llvm-mc/AsmParser.h b/llvm/tools/llvm-mc/AsmParser.h index b7082b688d4..2e328d9f6fd 100644 --- a/llvm/tools/llvm-mc/AsmParser.h +++ b/llvm/tools/llvm-mc/AsmParser.h @@ -70,6 +70,8 @@ public:    virtual bool ParseExpression(const MCExpr *&Res); +  virtual bool ParseParenExpression(const MCExpr *&Res); +    virtual bool ParseAbsoluteExpression(int64_t &Res);    virtual bool ParseRelocatableExpression(MCValue &Res);  | 

