diff options
Diffstat (limited to 'gnu/llvm/lib/MC/MCParser/ELFAsmParser.cpp')
| -rw-r--r-- | gnu/llvm/lib/MC/MCParser/ELFAsmParser.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/gnu/llvm/lib/MC/MCParser/ELFAsmParser.cpp b/gnu/llvm/lib/MC/MCParser/ELFAsmParser.cpp index a407691b0bd..c634df99a11 100644 --- a/gnu/llvm/lib/MC/MCParser/ELFAsmParser.cpp +++ b/gnu/llvm/lib/MC/MCParser/ELFAsmParser.cpp @@ -247,7 +247,7 @@ bool ELFAsmParser::ParseSectionName(StringRef &SectionName) { return false; } - while (true) { + while (!getParser().hasPendingError()) { SMLoc PrevLoc = getLexer().getLoc(); if (getLexer().is(AsmToken::Comma) || getLexer().is(AsmToken::EndOfStatement)) @@ -423,13 +423,17 @@ bool ELFAsmParser::parseGroup(StringRef &GroupName) { if (L.isNot(AsmToken::Comma)) return TokError("expected group name"); Lex(); - if (getParser().parseIdentifier(GroupName)) - return true; + if (L.is(AsmToken::Integer)) { + GroupName = getTok().getString(); + Lex(); + } else if (getParser().parseIdentifier(GroupName)) { + return TokError("invalid group name"); + } if (L.is(AsmToken::Comma)) { Lex(); StringRef Linkage; if (getParser().parseIdentifier(Linkage)) - return true; + return TokError("invalid linkage"); if (Linkage != "comdat") return TokError("Linkage must be 'comdat'"); } @@ -443,7 +447,7 @@ bool ELFAsmParser::parseMetadataSym(MCSymbolELF *&Associated) { Lex(); StringRef Name; if (getParser().parseIdentifier(Name)) - return true; + return TokError("invalid metadata symbol"); Associated = dyn_cast_or_null<MCSymbolELF>(getContext().lookupSymbol(Name)); if (!Associated || !Associated->isInSection()) return TokError("symbol is not in a section: " + Name); @@ -488,7 +492,6 @@ bool ELFAsmParser::ParseSectionArguments(bool IsPush, SMLoc loc) { unsigned Flags = 0; const MCExpr *Subsection = nullptr; bool UseLastGroup = false; - StringRef UniqueStr; MCSymbolELF *Associated = nullptr; int64_t UniqueID = ~0; |
