[FFmpeg-cvslog] Fix a possible miscompilation of cabac with old (broken) compilers.
Carl Eugen Hoyos
git at videolan.org
Wed Aug 3 13:52:48 CEST 2011
ffmpeg | branch: master | Carl Eugen Hoyos <cehoyos at ag.or.at> | Wed Aug 3 13:09:42 2011 +0200| [324b8adca4455cff861b6587921ce68df6cee286] | committer: Carl Eugen Hoyos
Fix a possible miscompilation of cabac with old (broken) compilers.
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=324b8adca4455cff861b6587921ce68df6cee286
---
libavcodec/x86/cabac.h | 12 +++++++++---
1 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/libavcodec/x86/cabac.h b/libavcodec/x86/cabac.h
index 545cf7c..5c46342 100644
--- a/libavcodec/x86/cabac.h
+++ b/libavcodec/x86/cabac.h
@@ -87,13 +87,19 @@
static av_always_inline int get_cabac_inline_x86(CABACContext *c,
uint8_t *const state)
{
- int bit, tmp;
+ int bit, low, range, tmp;
__asm__ volatile(
+ "movl %a6(%5), %2 \n\t"
+ "movl %a7(%5), %1 \n\t"
BRANCHLESS_GET_CABAC("%0", "%5", "(%4)", "%1", "%w1", "%2",
- "%3", "%b3", "%a6")
- :"=&r"(bit), "+&r"(c->low), "+&r"(c->range), "=&q"(tmp)
+ "%3", "%b3", "%a8")
+ "movl %2, %a6(%5) \n\t"
+ "movl %1, %a7(%5) \n\t"
+
+ :"=&r"(bit), "=&r"(low), "=&r"(range), "=&q"(tmp)
:"r"(state), "r"(c),
+ "i"(offsetof(CABACContext, range)), "i"(offsetof(CABACContext, low)),
"i"(offsetof(CABACContext, bytestream))
: "%"REG_c, "memory"
);
More information about the ffmpeg-cvslog
mailing list