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.