https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99383
--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Combining the separate strings into a single one if they have the same length and aren't many would have the disadvantage that the returned value then wouldn't be pointer equal to constant literal containing the same string. So e.g. if (r2i(itm04)) == "itm4") ... would stop working. Maybe C/C++ allows that, but I fear a lot of code in the wild relies on it at least in the same TU.