https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96406
--- Comment #5 from Martin Sebor <msebor at gcc dot gnu.org> --- 10.2 is the latest released version. GCC 11 is the development version. If you normally don't build it from source they I suspect you won't have convenient access to it. Introducing a local variable and using it like below seems enough to change the internal representation and fool the warning: if((dev_length+1) < 32){ char *d = console_state.console_dev[(type-1)]; memcpy(d, &assign[1], dev_length); d[dev_length] = '\0'; } Does this help?