diff options
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/MC/MCParser/ELFAsmParser.cpp | 17 | 
1 files changed, 14 insertions, 3 deletions
diff --git a/llvm/lib/MC/MCParser/ELFAsmParser.cpp b/llvm/lib/MC/MCParser/ELFAsmParser.cpp index 39ff906ea7a..7b88ea2d1da 100644 --- a/llvm/lib/MC/MCParser/ELFAsmParser.cpp +++ b/llvm/lib/MC/MCParser/ELFAsmParser.cpp @@ -168,6 +168,12 @@ bool ELFAsmParser::ParseSectionName(StringRef &SectionName) {    SMLoc FirstLoc = getLexer().getLoc();    unsigned Size = 0; +  if (getLexer().is(AsmToken::String)) { +    SectionName = getTok().getIdentifier(); +    Lex(); +    return false; +  } +    for (;;) {      StringRef Tmp;      unsigned CurSize; @@ -176,10 +182,15 @@ bool ELFAsmParser::ParseSectionName(StringRef &SectionName) {      if (getLexer().is(AsmToken::Minus)) {        CurSize = 1;        Lex(); // Consume the "-". -    } else if (!getParser().ParseIdentifier(Tmp)) -      CurSize = Tmp.size(); -    else +    } else if (getLexer().is(AsmToken::String)) { +      CurSize = getTok().getIdentifier().size() + 2; +      Lex(); +    } else if (getLexer().is(AsmToken::Identifier)) { +      CurSize = getTok().getIdentifier().size(); +      Lex(); +    } else {        break; +    }      Size += CurSize;      SectionName = StringRef(FirstLoc.getPointer(), Size);  | 

