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.

Reply via email to