[FFmpeg-devel] fate : clang x86

Eli Friedman eli.friedman
Tue Aug 24 03:57:20 CEST 2010


2010/8/23 M?ns Rullg?rd <mans at mansr.com>:
> Eli Friedman <eli.friedman at gmail.com> writes:
>
>> 2010/8/21 M?ns Rullg?rd <mans at mansr.com>:
>>> Eli Friedman <eli.friedman at gmail.com> writes:
>>>
>>>> 2010/8/21 M?ns Rullg?rd <mans at mansr.com>:
>>>>> castet.matthieu at free.fr writes:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> on freebsd "-mllvm -regalloc=fast" cflags are used to make clang/llvm accept
>>>>>> some inline asm.
>>>>>>
>>>>>> May be we should do the same on linux ?
>>>>>
>>>>> I tried and failed to figure out what that flag does. ?I assume it
>>>>> does something with the register allocator, but I'd like to know what.
>>>>
>>>> It's a workaround of sorts for
>>>> http://llvm.org/bugs/show_bug.cgi?id=4668 . ?LLVM essentially has two
>>>> register allocator implementations: one is the "fast" allocator, which
>>>> is a local register allocator used for -O0, and the other is the
>>>> "linear scan" allocator, which is the slower global register allocator
>>>> used for -O1+. ?"-mllvm -regalloc=fast" forces the use of the "fast"
>>>> allocator, which leads to slower generated code, but isn't affected by
>>>> the bug in question.
>>>
>>> Sounds like it's not suitable for production use. ?Any chance they'll
>>> fix the bug?
>>
>> In the near future? ?Not very likely... from what I understand, it's a
>> relatively difficult issue to solve, and bugs rejecting valid inline
>> asm are generally considered low priority for the people who know the
>> register allocator well enough to fix this.
>
> That leaves two options:
>
> 1. Declare clang officially unsupported for x86_32.
> 2. Fix our code.

Attached attempts option 2.  It's essentially a straight port of the
inline asm to yasm, with a couple minor changes to reduce the number
of arguments.  This removes all the inline asm blocks from
mpegvideo_mmx_template.c, which allows clang to successfully build
ffmpeg.  Passes regression tests.

-Eli
-------------- next part --------------
A non-text attachment was scrubbed...
Name: mpegvideo.patch
Type: text/x-patch
Size: 15717 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20100823/201ee018/attachment.bin>



More information about the ffmpeg-devel mailing list