Huh, turns out that we do actually see a similar set of warnings before and after this patch, they're just different warnings as a consequence of my patch. Given that these warnings only show up at W=1, is there any point in further supressing them? Before ------ In function ‘strncpy’, inlined from ‘hdmi_spd_infoframe_init’ at /home/dja/dev/linux/linux/drivers/video/hdmi.c:230:2: /home/dja/dev/linux/linux/include/linux/string.h:282:9: warning: ‘__builtin_strncpy’ specified bound 8 equals destination size [-Wstringop-truncation] 282 | return __builtin_strncpy(p, q, size); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In function ‘strncpy’, inlined from ‘hdmi_spd_infoframe_init’ at /home/dja/dev/linux/linux/drivers/video/hdmi.c:231:2: /home/dja/dev/linux/linux/include/linux/string.h:282:9: warning: ‘__builtin_strncpy’ specified bound 16 equals destination size [-Wstringop-truncation] 282 | return __builtin_strncpy(p, q, size); After ----- In function ‘strncpy’, inlined from ‘hdmi_spd_infoframe_init’ at /home/dja/dev/linux/linux/drivers/video/hdmi.c:230:2: /home/dja/dev/linux/linux/include/linux/string.h:297:30: warning: ‘__builtin_strncpy’ specified bound 8 equals destination size [-Wstringop-truncation] 297 | #define __underlying_strncpy __builtin_strncpy | ^ /home/dja/dev/linux/linux/include/linux/string.h:307:9: note: in expansion of macro ‘__underlying_strncpy’ 307 | return __underlying_strncpy(p, q, size); | ^~~~~~~~~~~~~~~~~~~~ In function ‘strncpy’, inlined from ‘hdmi_spd_infoframe_init’ at /home/dja/dev/linux/linux/drivers/video/hdmi.c:231:2: /home/dja/dev/linux/linux/include/linux/string.h:297:30: warning: ‘__builtin_strncpy’ specified bound 16 equals destination size [-Wstringop-truncation] 297 | #define __underlying_strncpy __builtin_strncpy | ^ /home/dja/dev/linux/linux/include/linux/string.h:307:9: note: in expansion of macro ‘__underlying_strncpy’ 307 | return __underlying_strncpy(p, q, size); | ^~~~~~~~~~~~~~~~~~~~