[FFmpeg-devel] [PATCH] get_cabac_inline_x86: Don't inline if 32-bit clang on windows

Martin Storsjö martin at martin.st
Tue Aug 17 19:05:34 EEST 2021


On Tue, 17 Aug 2021, Christopher Degawa wrote:

> Fixes https://trac.ffmpeg.org/ticket/8903
>
> relevant https://github.com/msys2/MINGW-packages/discussions/9258
>
> Signed-off-by: Christopher Degawa <ccom at randomderp.com>
> ---
> libavcodec/x86/cabac.h | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/libavcodec/x86/cabac.h b/libavcodec/x86/cabac.h
> index 53d74c541e..b046a56a6b 100644
> --- a/libavcodec/x86/cabac.h
> +++ b/libavcodec/x86/cabac.h
> @@ -177,8 +177,13 @@
>
> #if HAVE_7REGS && !BROKEN_COMPILER
> #define get_cabac_inline get_cabac_inline_x86
> -static av_always_inline int get_cabac_inline_x86(CABACContext *c,
> -                                                 uint8_t *const state)
> +static
> +#if defined(_WIN32) && !defined(_WIN64) && defined(__clang__)
> +av_noinline
> +#else
> +av_always_inline
> +#endif
> +int get_cabac_inline_x86(CABACContext *c, uint8_t *const state)
> {
>     int bit, tmp;
> #ifdef BROKEN_RELOCATIONS
> -- 
> 2.32.0

This looks good to me, and is a less intrusive fix for the issue than the 
one I submitted last year.

FWIW, the issue is avoided in some configurations by configuring with 
--cpu=i686, which disallows use of inline MMX/SSE like this, but with this 
fix one can keep all the asm enabled.

// Martin



More information about the ffmpeg-devel mailing list