mirror of
https://github.com/webmproject/libwebp.git
synced 2024-12-27 06:08:21 +01:00
fix optimized build with -mcmodel=medium
INFO: From Compiling src/dsp/cpu.c: src/dsp/cpu.c: In function 'x86CPUInfo': src/dsp/cpu.c:36:3: inconsistent operand constraints in an 'asm' With PIC and mcmodel=medium, the %rbx register must be saved and restored which causes this problem. This was also solved in GCC-4.9 with this patch: https://gcc.gnu.org/ml/gcc-patches/2012-12/msg01484.html Tested: Builds fine with this change. Change-Id: Icca8eea7bf5af3ef9f17f6ae2886e3430143febf
This commit is contained in:
parent
038a060dfc
commit
b275e598b5
@ -31,6 +31,18 @@ static WEBP_INLINE void GetCPUInfo(int cpu_info[4], int info_type) {
|
||||
: "=a"(cpu_info[0]), "=D"(cpu_info[1]), "=c"(cpu_info[2]), "=d"(cpu_info[3])
|
||||
: "a"(info_type), "c"(0));
|
||||
}
|
||||
#elif defined(__x86_64__) && \
|
||||
(defined(__code_model_medium__) || defined(__code_model_large__)) && \
|
||||
defined(__PIC__)
|
||||
static WEBP_INLINE void GetCPUInfo(int cpu_info[4], int info_type) {
|
||||
__asm__ volatile (
|
||||
"xchg{q}\t{%%rbx}, %q1\n"
|
||||
"cpuid\n"
|
||||
"xchg{q}\t{%%rbx}, %q1\n"
|
||||
: "=a"(cpu_info[0]), "=&r"(cpu_info[1]), "=c"(cpu_info[2]),
|
||||
"=d"(cpu_info[3])
|
||||
: "a"(info_type), "c"(0));
|
||||
}
|
||||
#elif defined(__i386__) || defined(__x86_64__)
|
||||
static WEBP_INLINE void GetCPUInfo(int cpu_info[4], int info_type) {
|
||||
__asm__ volatile (
|
||||
|
Loading…
Reference in New Issue
Block a user