diff options
| author | Daniel Dunbar <daniel@zuster.org> | 2009-08-31 08:08:17 +0000 |
|---|---|---|
| committer | Daniel Dunbar <daniel@zuster.org> | 2009-08-31 08:08:17 +0000 |
| commit | 7c82d5693088873f75bea3e20e46149990bd52cd (patch) | |
| tree | 7bab2fd8648e91534a3f2b1923a5b759c05c06a2 /llvm | |
| parent | 945e257e99161048780d46ac0f2a0061bc810e4b (diff) | |
| download | bcm5719-llvm-7c82d5693088873f75bea3e20e46149990bd52cd.tar.gz bcm5719-llvm-7c82d5693088873f75bea3e20e46149990bd52cd.zip | |
llvm-mc: Add MCAsmParser::Parse[Paren]Expression forms which return an MCExpr.
llvm-svn: 80574
Diffstat (limited to 'llvm')
| -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); |

