[llvm-commits] [llvm] r133940 - in /llvm/trunk: include/llvm/Target/ utils/TableGen/

Francois Pichet pichet2000 at gmail.com
Wed Jun 29 05:57:33 PDT 2011


On Wed, Jun 29, 2011 at 7:29 AM, Francois Pichet <pichet2000 at gmail.com> wrote:
> On Wed, Jun 29, 2011 at 4:56 AM, Francois Pichet <pichet2000 at gmail.com> wrote:
>> On Mon, Jun 27, 2011 at 5:06 PM, Owen Anderson <resistor at mac.com> wrote:
>>> Author: resistor
>>> Date: Mon Jun 27 16:06:21 2011
>>> New Revision: 133940
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=133940&view=rev
>>> Log:
>>> Add support for alternative register names, useful for instructions whose operands are logically equivalent to existing registers, but happen to be printed specially.  For example, an instruciton that prints d0[0] instead of s0.
>>> Patch by Jim Grosbach.
>>>
>>> Modified:
>>>    llvm/trunk/include/llvm/Target/Target.td
>>>    llvm/trunk/utils/TableGen/AsmMatcherEmitter.cpp
>>>    llvm/trunk/utils/TableGen/AsmWriterEmitter.cpp
>>>    llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp
>>>    llvm/trunk/utils/TableGen/CodeGenInstruction.cpp
>>>    llvm/trunk/utils/TableGen/CodeGenTarget.cpp
>>>    llvm/trunk/utils/TableGen/CodeGenTarget.h
>>>    llvm/trunk/utils/TableGen/DAGISelMatcherGen.cpp
>>>    llvm/trunk/utils/TableGen/FastISelEmitter.cpp
>>>    llvm/trunk/utils/TableGen/FixedLenDecoderEmitter.cpp
>>>    llvm/trunk/utils/TableGen/InstrInfoEmitter.cpp
>>>    llvm/trunk/utils/TableGen/Record.cpp
>>>    llvm/trunk/utils/TableGen/Record.h
>>>    llvm/trunk/utils/TableGen/RegisterInfoEmitter.cpp
>>>
>>
>> I am not sure if this commit is to blame but it seems to be the most probable.
>> There is a huge regression on MSVC since last Monday with over 300
>> failing tests.
>>
>> Seems like X86GenAsmWriter.inc is generated with some invalid data on MSVC.
>> I copied X86GenAsmWriter.inc from my Mac to my PC and the failing test
>> went from 300+ to only 4.
>>
>> So I did a diff between X86GenAsmWriter.inc (PC and Mac) and I saw
>> some difference in X86ATTInstPrinter::getRegisterName()
>>
>
> Ok see r134064 for the fix. The problem was a StringRef pointing to a
> temporary that was destroyed.
> As in:
>    std::string AsmName;
>    AsmName = Reg.TheDef->getValueAsString("AsmName");

of course I meant:
    StringRef AsmName;
    AsmName = Reg.TheDef->getValueAsString("AsmName");

    // do stuff with AsmName later: wrong the temporary is destroyed.




More information about the llvm-commits mailing list