diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2023-09-02 21:17:18 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2023-12-08 17:34:50 +0000 |
commit | 06c3fb2749bda94cb5201f81ffdb8fa6c3161b2e (patch) | |
tree | 62f873df87c7c675557a179e0c4c83fe9f3087bc /contrib/llvm-project/llvm/lib/Target/SystemZ/AsmParser | |
parent | cf037972ea8863e2bab7461d77345367d2c1e054 (diff) | |
parent | 7fa27ce4a07f19b07799a767fc29416f3b625afb (diff) | |
download | src-06c3fb2749bda94cb5201f81ffdb8fa6c3161b2e.tar.gz src-06c3fb2749bda94cb5201f81ffdb8fa6c3161b2e.zip |
Diffstat (limited to 'contrib/llvm-project/llvm/lib/Target/SystemZ/AsmParser')
-rw-r--r-- | contrib/llvm-project/llvm/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/contrib/llvm-project/llvm/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp b/contrib/llvm-project/llvm/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp index 4e7985bd4edc..dc4f2a438c9f 100644 --- a/contrib/llvm-project/llvm/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp +++ b/contrib/llvm-project/llvm/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp @@ -13,6 +13,7 @@ #include "TargetInfo/SystemZTargetInfo.h" #include "llvm/ADT/STLExtras.h" #include "llvm/ADT/SmallVector.h" +#include "llvm/ADT/StringExtras.h" #include "llvm/ADT/StringRef.h" #include "llvm/MC/MCAsmInfo.h" #include "llvm/MC/MCContext.h" @@ -236,7 +237,7 @@ public: return Kind == KindImm; } bool isImm(int64_t MinValue, int64_t MaxValue) const { - return Kind == KindImm && inRange(Imm, MinValue, MaxValue); + return Kind == KindImm && inRange(Imm, MinValue, MaxValue, true); } const MCExpr *getImm() const { assert(Kind == KindImm && "Not an immediate"); @@ -379,7 +380,6 @@ public: bool isU2Imm() const { return isImm(0, 3); } bool isU3Imm() const { return isImm(0, 7); } bool isU4Imm() const { return isImm(0, 15); } - bool isU6Imm() const { return isImm(0, 63); } bool isU8Imm() const { return isImm(0, 255); } bool isS8Imm() const { return isImm(-128, 127); } bool isU12Imm() const { return isImm(0, 4095); } @@ -494,7 +494,7 @@ public: } // Override MCTargetAsmParser. - bool ParseDirective(AsmToken DirectiveID) override; + ParseStatus parseDirective(AsmToken DirectiveID) override; bool parseRegister(MCRegister &RegNo, SMLoc &StartLoc, SMLoc &EndLoc) override; bool ParseRegister(MCRegister &RegNo, SMLoc &StartLoc, SMLoc &EndLoc, @@ -1219,7 +1219,7 @@ SystemZAsmParser::parseAddress(OperandVector &Operands, MemoryKind MemKind, return MatchOperand_Success; } -bool SystemZAsmParser::ParseDirective(AsmToken DirectiveID) { +ParseStatus SystemZAsmParser::parseDirective(AsmToken DirectiveID) { StringRef IDVal = DirectiveID.getIdentifier(); if (IDVal == ".insn") @@ -1229,7 +1229,7 @@ bool SystemZAsmParser::ParseDirective(AsmToken DirectiveID) { if (IDVal.startswith(".gnu_attribute")) return ParseGNUAttribute(DirectiveID.getLoc()); - return true; + return ParseStatus::NoMatch; } /// ParseDirectiveInsn @@ -1346,12 +1346,12 @@ bool SystemZAsmParser::ParseDirectiveMachine(SMLoc L) { MCAsmParser &Parser = getParser(); if (Parser.getTok().isNot(AsmToken::Identifier) && Parser.getTok().isNot(AsmToken::String)) - return Error(L, "unexpected token in '.machine' directive"); + return TokError("unexpected token in '.machine' directive"); StringRef CPU = Parser.getTok().getIdentifier(); Parser.Lex(); - if (parseToken(AsmToken::EndOfStatement)) - return addErrorSuffix(" in '.machine' directive"); + if (parseEOL()) + return true; MCSubtargetInfo &STI = copySTI(); STI.setDefaultFeatures(CPU, /*TuneCPU*/ CPU, ""); @@ -1366,18 +1366,15 @@ bool SystemZAsmParser::ParseGNUAttribute(SMLoc L) { int64_t Tag; int64_t IntegerValue; if (!Parser.parseGNUAttribute(L, Tag, IntegerValue)) - return false; + return Error(L, "malformed .gnu_attribute directive"); // Tag_GNU_S390_ABI_Vector tag is '8' and can be 0, 1, or 2. - if (Tag != 8 || (IntegerValue < 0 || IntegerValue > 2)) { - Error(Parser.getTok().getLoc(), - "Unrecognized .gnu_attribute tag/value pair."); - return false; - } + if (Tag != 8 || (IntegerValue < 0 || IntegerValue > 2)) + return Error(L, "unrecognized .gnu_attribute tag/value pair."); Parser.getStreamer().emitGNUAttribute(Tag, IntegerValue); - return true; + return parseEOL(); } bool SystemZAsmParser::ParseRegister(MCRegister &RegNo, SMLoc &StartLoc, |