26 lines
999 B
Diff
26 lines
999 B
Diff
|
https://bugs.gentoo.org/901099 and partly https://bugs.gentoo.org/900937.
|
||
|
|
||
|
Newer compilers may optimise such that < 7 registers are free on 32-bit x86
|
||
|
and then we get an "invalid asm" error. This is https://bugs.gentoo.org/901099
|
||
|
and https://trac.ffmpeg.org/ticket/8903.
|
||
|
|
||
|
Making matters worse, GCC sometimes hangs on invalid asm, so this also
|
||
|
mitigates a hang with e.g. -O3 -march=znver1. See https://bugs.gentoo.org/900937
|
||
|
and https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109137.
|
||
|
|
||
|
In future, we may want to adjust the definition of HAVE_7REGS to just exclude
|
||
|
32-bit x86, but that's a big sledgehammer, so let's avoid it for now until we have
|
||
|
a reply on the upstream ffmpeg bug.
|
||
|
--- a/libavcodec/x86/cabac.h
|
||
|
+++ b/libavcodec/x86/cabac.h
|
||
|
@@ -175,7 +175,7 @@
|
||
|
|
||
|
#endif /* BROKEN_RELOCATIONS */
|
||
|
|
||
|
-#if HAVE_7REGS && !BROKEN_COMPILER
|
||
|
+#if HAVE_7REGS && !BROKEN_COMPILER && !ARCH_X86_32
|
||
|
#define get_cabac_inline get_cabac_inline_x86
|
||
|
static
|
||
|
#if defined(_WIN32) && !defined(_WIN64) && defined(__clang__)
|
||
|
|