https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109990
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #1) > ``` > > char *new_pool = (char *) realloc (string_space, new_size); > if (new_pool == ((void *)0)) > goto out; > if (__builtin_expect (string_space != new_pool, 0)) > { > size_t i; > for (i = 0; i < nmap; i++) > { > map[i].alias += new_pool - string_space; > map[i].value += new_pool - string_space; > } > } > string_space = new_pool; > ``` > > Hmmm Also I think `new_pool - string_space` is undefined really. That is subtracting two unrelated arrays is undefined. You can only compare equality on them.