[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