diff options
| author | Nirav Dave <niravd@google.com> | 2018-04-27 16:11:24 +0000 |
|---|---|---|
| committer | Nirav Dave <niravd@google.com> | 2018-04-27 16:11:24 +0000 |
| commit | 38b4b54a2cd4ff0f41a62dd93e9c340922f0a64f (patch) | |
| tree | 7125fb361bf048e59ca06cb0830b978aa954b516 /llvm/lib/MC/MCParser | |
| parent | b2aa89c9092cadaa4b865ec95eb93d43029ded04 (diff) | |
| download | bcm5719-llvm-38b4b54a2cd4ff0f41a62dd93e9c340922f0a64f.tar.gz bcm5719-llvm-38b4b54a2cd4ff0f41a62dd93e9c340922f0a64f.zip | |
[MC] Provide default value for IsResolved.
llvm-svn: 331052
Diffstat (limited to 'llvm/lib/MC/MCParser')
| -rw-r--r-- | llvm/lib/MC/MCParser/AsmParser.cpp | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/llvm/lib/MC/MCParser/AsmParser.cpp b/llvm/lib/MC/MCParser/AsmParser.cpp index 7ee8e1b3e84..c2410413a62 100644 --- a/llvm/lib/MC/MCParser/AsmParser.cpp +++ b/llvm/lib/MC/MCParser/AsmParser.cpp @@ -775,7 +775,7 @@ bool AsmParser::processIncbinFile(const std::string &Filename, int64_t Skip, Bytes = Bytes.drop_front(Skip); if (Count) { int64_t Res; - if (!Count->evaluateAsAbsolute(Res)) + if (!Count->evaluateAsAbsolute(Res, getStreamer().getAssemblerPtr())) return Error(Loc, "expected absolute expression"); if (Res < 0) return Warning(Loc, "negative count has no effect"); @@ -1378,7 +1378,8 @@ bool AsmParser::parseExpression(const MCExpr *&Res, SMLoc &EndLoc) { Lex(); } - // Try to constant fold it up front, if possible. + // Try to constant fold it up front, if possible. Do not exploit + // assembler here. int64_t Value; if (Res->evaluateAsAbsolute(Value)) Res = MCConstantExpr::create(Value, getContext()); @@ -1419,7 +1420,7 @@ bool AsmParser::parseAbsoluteExpression(int64_t &Res) { if (parseExpression(Expr)) return true; - if (!Expr->evaluateAsAbsolute(Res)) + if (!Expr->evaluateAsAbsolute(Res, getStreamer().getAssemblerPtr())) return Error(StartLoc, "expected absolute expression"); return false; @@ -2616,7 +2617,8 @@ bool AsmParser::parseMacroArguments(const MCAsmMacro *M, Lex(); if (parseExpression(AbsoluteExp, EndLoc)) return false; - if (!AbsoluteExp->evaluateAsAbsolute(Value)) + if (!AbsoluteExp->evaluateAsAbsolute(Value, + getStreamer().getAssemblerPtr())) return Error(StrLoc, "expected absolute expression"); const char *StrChar = StrLoc.getPointer(); const char *EndChar = EndLoc.getPointer(); @@ -2916,8 +2918,9 @@ bool AsmParser::parseDirectiveReloc(SMLoc DirectiveLoc) { if (parseExpression(Offset)) return true; - if (check(!Offset->evaluateAsAbsolute(OffsetValue), OffsetLoc, - "expression is not a constant value") || + if (check(!Offset->evaluateAsAbsolute(OffsetValue, + getStreamer().getAssemblerPtr()), + OffsetLoc, "expression is not a constant value") || check(OffsetValue < 0, OffsetLoc, "expression is negative") || parseToken(AsmToken::Comma, "expected comma") || check(getTok().isNot(AsmToken::Identifier), "expected relocation name")) @@ -5344,7 +5347,7 @@ bool AsmParser::parseDirectiveRept(SMLoc DirectiveLoc, StringRef Dir) { return true; int64_t Count; - if (!CountExpr->evaluateAsAbsolute(Count)) { + if (!CountExpr->evaluateAsAbsolute(Count, getStreamer().getAssemblerPtr())) { return Error(CountLoc, "unexpected token in '" + Dir + "' directive"); } |

