forked from OSchip/llvm-project
[X86] Fix a dangling StringRef issue introduced in r358029.
I was attempting to convert mnemonics to lower case after processing a pseudo prefix. But the ParseOperands just hold a StringRef for tokens so there is no where to allocate the memory. Add FIXMEs for the lower case issue which also exists in the prefix parsing code. llvm-svn: 358036
This commit is contained in:
parent
9bf092d719
commit
60f83544bb
|
@ -2310,7 +2310,6 @@ bool X86AsmParser::ParseInstruction(ParseInstructionInfo &Info, StringRef Name,
|
||||||
SMLoc NameLoc, OperandVector &Operands) {
|
SMLoc NameLoc, OperandVector &Operands) {
|
||||||
MCAsmParser &Parser = getParser();
|
MCAsmParser &Parser = getParser();
|
||||||
InstInfo = &Info;
|
InstInfo = &Info;
|
||||||
std::string TempName; // Used when we parse a pseudo prefix.
|
|
||||||
|
|
||||||
// Reset the forced VEX encoding.
|
// Reset the forced VEX encoding.
|
||||||
ForcedVEXEncoding = VEXEncoding_Default;
|
ForcedVEXEncoding = VEXEncoding_Default;
|
||||||
|
@ -2342,8 +2341,8 @@ bool X86AsmParser::ParseInstruction(ParseInstructionInfo &Info, StringRef Name,
|
||||||
} else {
|
} else {
|
||||||
if (getLexer().isNot(AsmToken::Identifier))
|
if (getLexer().isNot(AsmToken::Identifier))
|
||||||
return Error(Parser.getTok().getLoc(), "Expected identifier");
|
return Error(Parser.getTok().getLoc(), "Expected identifier");
|
||||||
TempName = Parser.getTok().getString().lower();
|
// FIXME: The mnemonic won't match correctly if its not in lower case.
|
||||||
Name = TempName;
|
Name = Parser.getTok().getString();
|
||||||
Parser.Lex();
|
Parser.Lex();
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
|
@ -2545,6 +2544,7 @@ bool X86AsmParser::ParseInstruction(ParseInstructionInfo &Info, StringRef Name,
|
||||||
Flags = X86::IP_NO_PREFIX;
|
Flags = X86::IP_NO_PREFIX;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
// FIXME: The mnemonic won't match correctly if its not in lower case.
|
||||||
Name = Parser.getTok().getString();
|
Name = Parser.getTok().getString();
|
||||||
Parser.Lex(); // eat the prefix
|
Parser.Lex(); // eat the prefix
|
||||||
// Hack: we could have something like "rep # some comment" or
|
// Hack: we could have something like "rep # some comment" or
|
||||||
|
@ -2552,6 +2552,7 @@ bool X86AsmParser::ParseInstruction(ParseInstructionInfo &Info, StringRef Name,
|
||||||
while (Name.startswith(";") || Name.startswith("\n") ||
|
while (Name.startswith(";") || Name.startswith("\n") ||
|
||||||
Name.startswith("#") || Name.startswith("\t") ||
|
Name.startswith("#") || Name.startswith("\t") ||
|
||||||
Name.startswith("/")) {
|
Name.startswith("/")) {
|
||||||
|
// FIXME: The mnemonic won't match correctly if its not in lower case.
|
||||||
Name = Parser.getTok().getString();
|
Name = Parser.getTok().getString();
|
||||||
Parser.Lex(); // go to next prefix or instr
|
Parser.Lex(); // go to next prefix or instr
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue