https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119393
--- Comment #6 from Alex Coplan <acoplan at gcc dot gnu.org> --- Alright, so after some digging through the dumps I realised that adding -fno-early-inlining is enough to get a non-LTO testcase. So the following testcase reproduces the different codegen before/after the above commit with just -Ofast -fno-early-inlining (no LTO required): long g_y, MorphologyApply_changed, g_v; int g_kernel, MorphologyApply_work_image, g_t, g_img, MorphologyApply_verbose, gapcn_t1, gapcn_cache_info_0; typedef short Quantum; double MorphologyPrimitive_bias, g_k, g_r2, g_r1; Quantum g_r0; int *gapcn_cache_info; void *gapcn_image_0; int *GetAuthenticPixelCacheNexus(); int *GetCacheViewAuthenticPixels() { return GetAuthenticPixelCacheNexus(); } void ThrowMagickException(); int *GetAuthenticPixelCacheNexus() { gapcn_cache_info = gapcn_image_0; if (gapcn_cache_info_0 || 0 >= (long)gapcn_image_0) ThrowMagickException(); return &gapcn_t1; } typedef struct { Quantum blue, green, red, opacity; } PixelPacket; PixelPacket *MorphologyPrimitive_p; long MorphologyPrimitive(int channel) { GetCacheViewAuthenticPixels(); for (; g_y < g_img; g_y++) { double result_0 = MorphologyPrimitive_bias; if (channel == 0) for (g_v = 0; g_v < g_kernel; g_v++) { result_0 += g_k * MorphologyPrimitive_p->red; g_r1 += g_k * MorphologyPrimitive_p->green; g_r2 += g_k * MorphologyPrimitive_p->blue; MorphologyPrimitive_p++; } g_r0 = result_0; } return 0; } int *MorphologyImage() { while (MorphologyApply_changed) { if (MorphologyApply_work_image) goto error_cleanup; MorphologyPrimitive(0); if (MorphologyApply_verbose) ThrowMagickException(); } goto exit_cleanup; error_cleanup: exit_cleanup: return &g_t; }