diff --git a/llvm/lib/MC/MCParser/AsmParser.cpp b/llvm/lib/MC/MCParser/AsmParser.cpp index 98241bc76edf0..42ac0b66ec2ad 100644 --- a/llvm/lib/MC/MCParser/AsmParser.cpp +++ b/llvm/lib/MC/MCParser/AsmParser.cpp @@ -3008,20 +3008,13 @@ bool AsmParser::parseAngleBracketString(std::string &Data) { } /// parseDirectiveAscii: -// ::= .ascii [ "string"+ ( , "string"+ )* ] -/// ::= ( .asciz | .string ) [ "string" ( , "string" )* ] +/// ::= ( .ascii | .asciz | .string ) [ "string" ( , "string" )* ] bool AsmParser::parseDirectiveAscii(StringRef IDVal, bool ZeroTerminated) { auto parseOp = [&]() -> bool { std::string Data; - if (checkForValidSection()) + if (checkForValidSection() || parseEscapedString(Data)) return true; - // Only support spaces as separators for .ascii directive for now. See the - // discusssion at https://reviews.llvm.org/D91460 for more details - do { - if (parseEscapedString(Data)) - return true; - getStreamer().emitBytes(Data); - } while (!ZeroTerminated && getTok().is(AsmToken::String)); + getStreamer().emitBytes(Data); if (ZeroTerminated) getStreamer().emitBytes(StringRef("\0", 1)); return false; diff --git a/llvm/test/MC/AsmParser/directive_ascii.s b/llvm/test/MC/AsmParser/directive_ascii.s index e34aa7a8a5618..ea988879819b4 100644 --- a/llvm/test/MC/AsmParser/directive_ascii.s +++ b/llvm/test/MC/AsmParser/directive_ascii.s @@ -48,11 +48,3 @@ TEST6: TEST7: .ascii "\x64\Xa6B" .ascii "\xface\x0Fe" - -# CHECK-LABEL: TEST8: -# CHECK-NEXT: .byte 65 -# CHECK-NEXT: .byte 66 -# CHECK-NEXT: .byte 67 -# CHECK-NEXT: .byte 68 -TEST8: - .ascii "A", "B" "C", "D"