[FFmpeg-devel] The state of FATE

David Conrad lessen42
Sun Nov 1 18:57:24 CET 2009


On Nov 1, 2009, at 12:15 PM, M?ns Rullg?rd wrote:

> matthieu castet <castet.matthieu at free.fr> writes:
>
>> matthieu castet <castet.matthieu <at> free.fr> writes:
>>
>>>
>>> M?ns Rullg?rd <mans <at> mansr.com> writes:
>>>
>>>> x86_32
>>>> ------
>>>> Linux, llvm svn 79390: all tests pass
>>>> - Using --arch=c, why?
>>>
>>>> x86_64
>>>> ------
>>>>
>>>> Linux, llvm svn 79390: all pass
>>>> - Using --arch=c, why?
>>>>
>>>
>>> Because llvm had a broken asm inline support.
>>> May be we could try newer version (last 2.6 release) to check
>>> if situation improved.
>>>
>> After a quick test, clang :
>> - doesn't like 64 bits configure test 'int test[sizeof(char*) -  
>> 7];'. This is
>> because 'sizeof(char*) - 7' is seen as a unsigned integer (even on  
>> gcc) and it
>> allocates a very big array !
>
> That test is meant to fail if sizeof(char*) < 8.  The exact reason for
> failing is irrelevant.
>
>> - gets "Ran out of registers" error [1]
>>
>> [1]
>> clang -DHAVE_AV_CONFIG_H -I. -I"/tmp/ffmpeg" -D_ISOC99_SOURCE
>> -D_POSIX_C_SOURCE=200112 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE  
>> -std=c99
>> -fomit-frame-pointer -g -Wdeclaration-after-statement -Wall -Wno- 
>> switch
>> -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wno- 
>> pointer-sign
>> -Wcast-qual -Wwrite-strings -Wtype-limits -Wundef -O3 -fno-math-errno
>> -fno-signed-zeros -Qunused-arguments       -MMD -c -o
>> libavcodec/x86/mpegvideo_mmx.o libavcodec/x86/mpegvideo_mmx.c
>> fatal error: error in backend: Ran out of registers during register  
>> allocation!
>> Please check your inline asm statement for invalid constraints:
>> INLINEASM <es:movd %eax, %xmm3
>> [...]
>> 	>, 10, %EAX<def>, 9, %reg1346<kill>, 9, %reg1299<kill>, 9,  
>> %reg1343<kill>, 9,
>> %reg1341<kill>, 9, %reg1344<kill>, 2147483657, %EAX, 14,
>> %EFLAGS<earlyclobber,def,dead> [dbg:
>> /tmp/ffmpeg/libavcodec/x86/mpegvideo_mmx_template.c,152,9]
>
> The constraints for that asm look like this:
>
>            : "+a" (last_non_zero_p1)
>            : "r" (block+64), "r" (qmat), "r" (bias),
>              "r" (inv_zigzag_direct16+64), "r" (temp_block+64)
>
> I count only 6 registers there...

Clang seems to not like named registers too much; I'll bet changing  
the "+a" to "+r" would work (with corresponding changes to the asm.)  
Though for me (r85146 darwin) it only fails for mpeg4 qpel on  
x86_32+PIC (patch fixing this attached.)

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: ff-clang-i386.txt
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20091101/c3555c8c/attachment.txt>



More information about the ffmpeg-devel mailing list