]> granicus.if.org Git - llvm/commitdiff
[X86] Fix a dangling StringRef issue introduced in r358029.
authorCraig Topper <craig.topper@intel.com>
Tue, 9 Apr 2019 21:37:21 +0000 (21:37 +0000)
committerCraig Topper <craig.topper@intel.com>
Tue, 9 Apr 2019 21:37:21 +0000 (21:37 +0000)
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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358036 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/AsmParser/X86AsmParser.cpp

index 362e57ddefddd05478c82eb589e8f0b579744356..6786d69f9fe251d4697130ef754c0c17fdecaf43 100644 (file)
@@ -2310,7 +2310,6 @@ bool X86AsmParser::ParseInstruction(ParseInstructionInfo &Info, StringRef Name,
                                     SMLoc NameLoc, OperandVector &Operands) {
   MCAsmParser &Parser = getParser();
   InstInfo = &Info;
-  std::string TempName; // Used when we parse a pseudo prefix.
 
   // Reset the forced VEX encoding.
   ForcedVEXEncoding = VEXEncoding_Default;
@@ -2342,8 +2341,8 @@ bool X86AsmParser::ParseInstruction(ParseInstructionInfo &Info, StringRef Name,
       } else {
         if (getLexer().isNot(AsmToken::Identifier))
           return Error(Parser.getTok().getLoc(), "Expected identifier");
-        TempName = Parser.getTok().getString().lower();
-        Name = TempName;
+        // FIXME: The mnemonic won't match correctly if its not in lower case.
+        Name = Parser.getTok().getString();
         Parser.Lex();
       }
       continue;
@@ -2545,6 +2544,7 @@ bool X86AsmParser::ParseInstruction(ParseInstructionInfo &Info, StringRef Name,
       Flags = X86::IP_NO_PREFIX;
       break;
     }
+    // FIXME: The mnemonic won't match correctly if its not in lower case.
     Name = Parser.getTok().getString();
     Parser.Lex(); // eat the prefix
     // 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") ||
            Name.startswith("#") || Name.startswith("\t") ||
            Name.startswith("/")) {
+      // FIXME: The mnemonic won't match correctly if its not in lower case.
       Name = Parser.getTok().getString();
       Parser.Lex(); // go to next prefix or instr
     }