diff --git a/lib/AsmParser/Lexer.l b/lib/AsmParser/Lexer.l index 072bc159d83..da875be34bd 100644 --- a/lib/AsmParser/Lexer.l +++ b/lib/AsmParser/Lexer.l @@ -139,6 +139,7 @@ VarID %[-a-zA-Z$._][-a-zA-Z$._0-9]* /* Label identifiers end with a colon */ Label [-a-zA-Z$._0-9]+: +QuoteLabel \"[^\"]*\": /* Quoted names can contain any character except " and \ */ StringConstant \"[^\"]*\" @@ -269,6 +270,12 @@ getelementptr { RET_TOK(MemOpVal, GetElementPtr, GETELEMENTPTR); } llvmAsmlval.StrVal = strdup(yytext); return LABELSTR; } +{QuoteLabel} { + yytext[strlen(yytext)-2] = 0; // nuke colon, end quote + UnEscapeLexed(yytext+1); + llvmAsmlval.StrVal = strdup(yytext+1); + return LABELSTR; + } {StringConstant} { // Note that we cannot unescape a string constant here! The // string constant might contain a \00 which would not be