diff --git a/libavcodec/cabac.h b/libavcodec/cabac.h
index 5956f5c01990fbcf3c49bf3a829b778e9ff8fd16..43fe78e3bb45e6a93a5771da6388e6453914580c 100644
--- a/libavcodec/cabac.h
+++ b/libavcodec/cabac.h
@@ -632,7 +632,7 @@ static int get_cabac_bypass(CABACContext *c){
 
 
 static always_inline int get_cabac_bypass_sign(CABACContext *c, int val){
-#ifdef ARCH_X86
+#if defined(ARCH_X86) && !(defined(PIC) && defined(__GNUC__))
     asm volatile(
         "movl "RANGE    "(%1), %%ebx            \n\t"
         "movl "LOW      "(%1), %%eax            \n\t"