https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77964
--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> --- You don't need it for both. struct builtin_fw *b_fw = __start_builtin_fw; asm ("" : "+r" (b_fw)); for (; b_fw != __end_builtin_fw; b_fw++) { should be enough. And indeed, without that it is undefined behavior.