https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115138
--- Comment #15 from Richard Biener <rguenth at gcc dot gnu.org> --- Indeed with boostrap-O3 I can see Comparing stages 2 and 3 Bootstrap comparison failure! gcc/d/opover.o differs since both have debug info with bootstrap-O3 the difference is only - 18: 0000000000000b0c 4 OBJECT LOCAL DEFAULT 6 CSWTCH.154 + 18: 0000000000000b0c 4 OBJECT LOCAL DEFAULT 6 CSWTCH.155 there's already differenes in SRA and even local-fnsummary. In fact gimplification shows --- ../prev-gcc/d/opover.d.006t.gimple 2024-05-22 13:50:13.437438763 +0200 +++ d/opover.d.006t.gimple 2024-05-22 13:51:08.710863322 +0200 @@ -5158,57 +5158,58 @@ overflow = 0; newLength.100_2 = newLength; newLength.101_3 = newLength.100_2; + newLength.102_4 = newLength.101_3; D.12117 = .ADD_OVERFLOW (typeInfoSize, 1); as first difference (but the .original dumps are the same). That's in the __setArrayAllocLength function. Note the opover.d compile doesn't even use -O3, so this is all extremely odd. It would somehow point at a miscompile of the stage2 compiler by the stage1 compiler manifesting itself only in this change ... So the logical next step would be to bisect stage1/stage2 object files of d21 and see which stage2 object is miscompiled.