[FFmpeg-devel] The state of FATE

Måns Rullgård mans
Sun Nov 1 19:13:18 CET 2009


David Conrad <lessen42 at gmail.com> writes:

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

No, with llvm-gcc it doesn't.

-- 
M?ns Rullg?rd
mans at mansr.com



More information about the ffmpeg-devel mailing list