https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86121
Martin Sebor <msebor at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |diagnostic --- Comment #1 from Martin Sebor <msebor at gcc dot gnu.org> --- The problem is due to the MEM_REF that the strcat() call is transformed into. Prior to GCC 9 the strcat() call would be transformed to memcpy() like so: MEM[(char * {ref-all})&a] = MEM[(char * {ref-all})"12"]; __builtin_memcpy (&MEM[(void *)&a + 2B], "3", 2); [tail call] Bisection points to the following commit as the cause of the change: r261061 | rguenth | 2018-06-01 06:49:54 -0400 (Fri, 01 Jun 2018) | 8 lines 2018-06-01 Richard Biener <rguent...@suse.de> PR middle-end/86017 * gimple-fold.c (var_decl_component_p): Also allow offsetted vars wrapped in MEM_REFs. * gcc.dg/tree-ssa/pr86017.c: New testcase.