[llvm] r304123 - Don't capture a temporary std::string in a StringRef.

Zachary Turner via llvm-commits llvm-commits at lists.llvm.org
Sun May 28 19:38:07 PDT 2017


Just let it crash under the debugger, and when I looked at Name it was
"\0em16".  But when I stepped into getValueAsString it looked like it was
indeed returning "Mem16", which should have been correct.  So there was
obviously some memory corruption, but since it happened in such a narrow
time frame (between the return statement and assigning the value to the
StringRef, there weren't really a lot of possibilities.  So when I checked
the function signature, sure enough it was returning a std::string.

On Sun, May 28, 2017 at 7:33 PM Craig Topper <craig.topper at gmail.com> wrote:

> How did you narrow it down to that?
>
> ~Craig
>
> On Sun, May 28, 2017 at 7:20 PM, Zachary Turner via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
>
>> Author: zturner
>> Date: Sun May 28 21:20:12 2017
>> New Revision: 304123
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=304123&view=rev
>> Log:
>> Don't capture a temporary std::string in a StringRef.
>>
>> This fixes the breakages in llvm-tblgen.
>>
>> Modified:
>>     llvm/trunk/utils/TableGen/X86FoldTablesEmitter.cpp
>>
>> Modified: llvm/trunk/utils/TableGen/X86FoldTablesEmitter.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/X86FoldTablesEmitter.cpp?rev=304123&r1=304122&r2=304123&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/utils/TableGen/X86FoldTablesEmitter.cpp (original)
>> +++ llvm/trunk/utils/TableGen/X86FoldTablesEmitter.cpp Sun May 28
>> 21:20:12 2017
>> @@ -285,7 +285,7 @@ getMemOperandSize(const Record *MemRec,
>>          (MemRec->getName() == "sdmem" || MemRec->getName() == "ssmem"))
>>        return 128;
>>
>> -    StringRef Name =
>> +    std::string Name =
>>
>>  MemRec->getValueAsDef("ParserMatchClass")->getValueAsString("Name");
>>      if (Name == "Mem8")
>>        return 8;
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170529/41c6f92a/attachment.html>


More information about the llvm-commits mailing list