[FFmpeg-devel] fate : clang x86

Michael Niedermayer michaelni
Tue Aug 24 17:19:35 CEST 2010


On Mon, Aug 23, 2010 at 06:57:20PM -0700, Eli Friedman wrote:
> 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.

ok with me


> > 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.

and is slower due to additional call overhead

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

I have often repented speaking, but never of holding my tongue.
-- Xenocrates
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20100824/995f2063/attachment.pgp>



More information about the ffmpeg-devel mailing list