mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
Reland "[AsmParser] make .ascii support spaces as separators"
This relands commit e0963ae274be5b071d1e1b00f5e4e019483c09e9, which was reverted on commit 82c4153e66fa284729da86a8d6c302d4b8cec86c due to a test failure, which turned out to be a false positive.
This commit is contained in:
parent
8c25e6302a
commit
8ba6dddded
@ -3008,13 +3008,20 @@ bool AsmParser::parseAngleBracketString(std::string &Data) {
|
||||
}
|
||||
|
||||
/// parseDirectiveAscii:
|
||||
/// ::= ( .ascii | .asciz | .string ) [ "string" ( , "string" )* ]
|
||||
// ::= .ascii [ "string"+ ( , "string"+ )* ]
|
||||
/// ::= ( .asciz | .string ) [ "string" ( , "string" )* ]
|
||||
bool AsmParser::parseDirectiveAscii(StringRef IDVal, bool ZeroTerminated) {
|
||||
auto parseOp = [&]() -> bool {
|
||||
std::string Data;
|
||||
if (checkForValidSection() || parseEscapedString(Data))
|
||||
if (checkForValidSection())
|
||||
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));
|
||||
if (ZeroTerminated)
|
||||
getStreamer().emitBytes(StringRef("\0", 1));
|
||||
return false;
|
||||
|
@ -48,3 +48,11 @@ 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"
|
||||
|
Loading…
Reference in New Issue
Block a user