https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102608
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- old32_34 = .DEFERRED_INIT (4, 2, 0); ... - _24 = .DEFERRED_INIT (4, 2, 0); - __res ={v} _24; + __res ={v} old32_34; # 68 "../arch/mips/include/asm/cmpxchg.h" This is due to __typeof(*((volatile u32 *)ptr)) __ret The warning is kinda of correct but wrong as it uses the wrong decl :). Fre maybe should be disabled for DEFERRED_INIT ....