[Ffmpeg-devel] Re: [PATCH] fix build for --cpu=i686
Ramiro Ribeiro Polla
ramiro
Mon Apr 2 22:21:13 CEST 2007
Trent Piepho wrote:
> On Thu, 29 Mar 2007, Uoti Urpala wrote:
>
>> On Thu, 2007-03-29 at 16:32 -0300, Ramiro Ribeiro Polla wrote:
>>
>>> Michael Niedermayer wrote:
>>>
>>>> though either way the change is wrong, the early clobbers would have to
>>>> be on the first and second not second and third
>>>>
>>>>
>>>>
>>> Patch attached with earlyclobbers for all 3 outputs, as suggested by a
>>> gcc dev on http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31386
>>>
>> Why do so many people on this list send bogus bug reports to gcc? I
>> think this is at least the third one in less than a year (and there
>> haven't been that many valid bugreports).
>>
>> There should be no need for the last output operand to be earlyclobber,
>> as it's clearly not modified before use of input operands has finished.
>>
>
> Clearly. I don't know why putting early clobber on all three was
> suggested. gcc won't let output registers overlap, how could that possibly
> work? I even tried this:
>
>
New patch attached with earlyclobbers on first and second outputs.
Sorry about sending a patch that had already been suggested wrong.
> int a;
> asm volatile("# %0 %1 %2 %3 %4 %5 %6":"+r"(a),"+r"(a),"+r"(a),"+r"(a),"+r"(a),"+r"(a),"+r"(a));
>
> With omit-frame-pointer, it uses different registers each time. Without,
> gcc runs out of registers and fails. This is gcc 4.0.1
>
> In Ramiro's sample, his gcc produced:
> cmpl %edx, %esi
> cmovl %esi, %edx
> cmovl %edi, %eax
> cmovl %ecx, %eax
>
> It put the last two outputs in the same register! Seems to me that must be
> a gcc bug.
>
>
Yes, that's exacly what made me thing it's a real bug.
> When I compile the test case from the bug report, I don't get this register
> overlap. The only one I get is:
>
> CMOV_COMBO( -1, -1 );
>
> becomes:
> cmpl %eax, %edx
> cmovl %edx, %eax
> cmovl %edi, %ecx
> cmovl %edi, %ebx
>
> gcc sticks both -1's into the same input register, which is perfectly ok.
>
With gcc 4.0.0, and svn I get the error. 4.0.0 puts both on ebx.
With 4.0.3-1ubuntu5, that doesn't happen.
Ramiro Polla
-------------- next part --------------
A non-text attachment was scrubbed...
Name: internal.diff
Type: text/x-patch
Size: 414 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20070402/6c991e5b/attachment.bin>
More information about the ffmpeg-devel
mailing list