For i586, I see that with LTO following is included: $ cat -n libswscale/x86/yuv2rgb.c ... 52 //MMX versions 53 #if HAVE_MMX_INLINE && HAVE_6REGS 54 #undef RENAME 55 #undef COMPILE_TEMPLATE_MMXEXT 56 #define COMPILE_TEMPLATE_MMXEXT 0 57 #define RENAME(a) a ## _mmx 58 #include "yuv2rgb_template.c" 59 #endif /* HAVE_MMX_INLINE && HAVE_6REGS */ ... while non-LTO mode does not include that. Looking at config.h, I see following difference: @@ -338,7 +338,7 @@ #define HAVE_GNU_AS 0 #define HAVE_GNU_WINDRES 0 #define HAVE_IBM_ASM 0 -#define HAVE_INLINE_ASM_DIRECT_SYMBOL_REFS 1 +#define HAVE_INLINE_ASM_DIRECT_SYMBOL_REFS 0 #define HAVE_INLINE_ASM_LABELS 1 #define HAVE_INLINE_ASM_NONLOCAL_LABELS 1 #define HAVE_PRAGMA_DEPRECATED 1 Is it causing include of the yuv2rgb_template.c file?